Re: Changed SRF in targetlist handling

Поиск
Список
Период
Сортировка
Искать
От
Andres Freund
Тема
Re: Changed SRF in targetlist handling
Дата
Msg-id
20160804032203.jprhdkx273sqhksd@alap3.anarazel.de
Ответ на
Список
Дерево обсуждения
Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Michael Paquier <michael.paquier@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Alvaro Herrera <alvherre@2ndquadrant.com>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Alvaro Herrera <alvherre@2ndquadrant.com>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Alvaro Herrera <alvherre@2ndquadrant.com>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Robert Haas <robertmhaas@gmail.com>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Robert Haas <robertmhaas@gmail.com>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Robert Haas <robertmhaas@gmail.com>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Robert Haas <robertmhaas@gmail.com>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) "David G. Johnston" <david.g.johnston@gmail.com>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] Implement targetlist SRFs using ROWS FROM() (wasChanged SRF in targetlist handling) Robert Haas <robertmhaas@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Heikki Linnakangas <hlinnaka@iki.fi>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Robert Haas <robertmhaas@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Gavin Flower <GavinFlower@archidevsys.co.nz>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Robert Haas <robertmhaas@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Kevin Grittner <kgrittn@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Kevin Grittner <kgrittn@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Kevin Grittner <kgrittn@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Kevin Grittner <kgrittn@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Kevin Grittner <kgrittn@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Kevin Grittner <kgrittn@gmail.com>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Tom Lane <tgl@sss.pgh.pa.us>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Andres Freund <andres@anarazel.de>
Re: Implement targetlist SRFs using ROWS FROM() (was Changed SRF in targetlist handling) Kevin Grittner <kgrittn@gmail.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling David Fetter <david@fetter.org>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling David Fetter <david@fetter.org>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Robert Haas <robertmhaas@gmail.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
Re: Changed SRF in targetlist handling Michael Paquier <michael.paquier@gmail.com>
Re: Changed SRF in targetlist handling Merlin Moncure <mmoncure@gmail.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Merlin Moncure <mmoncure@gmail.com>
Re: Changed SRF in targetlist handling David Fetter <david@fetter.org>
Re: Changed SRF in targetlist handling Merlin Moncure <mmoncure@gmail.com>
Re: Changed SRF in targetlist handling David Fetter <david@fetter.org>
Re: Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Robert Haas <robertmhaas@gmail.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Robert Haas <robertmhaas@gmail.com>
Re: Changed SRF in targetlist handling Alvaro Herrera <alvherre@2ndquadrant.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Robert Haas <robertmhaas@gmail.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Robert Haas <robertmhaas@gmail.com>
Re: Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Vik Fearing <vik@2ndquadrant.fr>
Re: Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling Joe Conway <mail@joeconway.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling Alvaro Herrera <alvherre@2ndquadrant.com>
Re: Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling Tom Lane <tgl@sss.pgh.pa.us>
Re: Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling Joe Conway <mail@joeconway.com>
Re: Changed SRF in targetlist handling "David G. Johnston" <david.g.johnston@gmail.com>
Re: Changed SRF in targetlist handling Craig Ringer <craig@2ndquadrant.com>
Re: Changed SRF in targetlist handling Andres Freund <andres@anarazel.de>
On 2016-08-02 16:30:55 -0700, Andres Freund wrote:
> > > Besides that I'm structurally wondering whether turning the original
> > > query into a subquery is the right thing to do. It requires some kind of
> > > ugly munching of Query->*, and has the above problem.
> >
> > It does not seem like it should be that hard, certainly no worse than
> > subquery pullup.  Want to show code?
>
> It's not super hard, there's some stuff like pushing/not-pushing
> various sortgrouprefs to the subquery. But I think we can live with it.
>
> Let me clean up the code some, hope to have something today or
> tomorrow.

Here we go.  This *clearly* is a POC, not more.  But it mostly works.


0001 - adds some test, some of those change after the later patches
0002 - main SRF via ROWS FROM () implementation
0003 - Large patch removing now unused code. Most satisfying.


The interesting bit is obviously 0002. What it basically does is, at the beginning
of subquery_planner():
1) unsrfify:
   move the jointree into a subquery
2) unsrfify_reference_subquery_mutator:
   process the old targetlist to reference the new subquery. If a
   TargetEntry doesn't contain a set, it's entirely moved into the
   subquery. Otherwise all Vars/Aggrefs/... it references are moved to
   the subquery, and referenced in the outer query's target list.
3) unsrfify_implement_srfs_mutator:
   Replace set returning functions in the targetlist with references to
   a new FUNCTION RTE. All non-nested tSRFs are part of the same RTE
   (i.e. the least common multiple behaviour is gone). all tSRFs in
   arguments are implemented as another FUNCTION RTE.

I discovered that we allow SRFs in UPDATE target lists. It's not clear
to me what that's supposed to mean. Nor how exactly to implement that,
given expand_targetlist(). Right now that fails with the patch, because
it re-inserts Var's for the relation replaced by the subquery.

Note that I've not bothered to fix up the regression test output - I'm
certain that explain output and such will still change.

Biggest questions / tasks:
* General approach
* DML handling
* Operator implementation
* SETOF record handling
* correct handling of lateral dependency from RTE to subquery to force
  evaluation order, instead of my RangeTblEntry->deps hack.
* lot of cleanup

Comments?

Greetings,

Andres Freund
В списке pgsql-hackers по дате отправления
От: Claudio Freire
Дата:
От: Noah Misch
Дата:
FAQ