From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Make setrefs.c match by ressortgroupref even for plain Vars. |
Date: | 2017-10-26 16:17:54 |
Message-ID: | E1e7kqw-0000UT-98@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Make setrefs.c match by ressortgroupref even for plain Vars.
Previously, we skipped using search_indexed_tlist_for_sortgroupref()
if the tlist expression being sought in the child plan node was merely
a Var. This is purely an optimization, based on the theory that
search_indexed_tlist_for_var() is faster, and one copy of a Var should
be as good as another. However, the GROUPING SETS patch broke the
latter assumption: grouping columns containing the "same" Var can
sometimes have different outputs, as shown in the test case added here.
So do it the hard way whenever a ressortgroupref marking exists.
(If this seems like a bottleneck, we could imagine building a tlist index
data structure for ressortgroupref values, as we do for Vars. But I'll
let that idea go until there's some evidence it's worthwhile.)
Back-patch to 9.6. The problem also exists in 9.5 where GROUPING SETS
came in, but this patch is insufficient to resolve the problem in 9.5:
there is some obscure dependency on the upper-planner-pathification
work that happened in 9.6. Given that this is such a weird corner case,
and no end users have complained about it, it doesn't seem worth the work
to develop a fix for 9.5.
Patch by me, per a report from Heikki Linnakangas. (This does not fix
Heikki's original complaint, just the follow-on one.)
Discussion: https://postgr.es/m/aefc657e-edb2-64d5-6df1-a0828f6e9104@iki.fi
Branch
------
REL9_6_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/37b4e0fe9964fc23d6a38973eaf67b287ac199ca
Modified Files
--------------
src/backend/optimizer/plan/setrefs.c | 5 ++---
src/test/regress/expected/groupingsets.out | 29 +++++++++++++++++++++++++++++
src/test/regress/sql/groupingsets.sql | 11 +++++++++++
3 files changed, 42 insertions(+), 3 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2017-10-26 16:23:00 | Re: [COMMITTERS] pgsql: Process variadic arguments consistently in json functions |
Previous Message | Andrew Dunstan | 2017-10-26 14:18:26 | pgsql: Improve gendef.pl diagnostic on failure to open sym file |