diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/optimizer/plan/planner.c | 2 | ||||
-rw-r--r-- | src/test/regress/expected/xc_groupby.out | 226 | ||||
-rw-r--r-- | src/test/regress/expected/xc_having.out | 6 | ||||
-rw-r--r-- | src/test/regress/sql/xc_groupby.sql | 14 |
4 files changed, 141 insertions, 107 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 02baf4a055..ee6c50d7c0 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -379,7 +379,7 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams) */ top_plan = (Plan *) make_remotesubplan(root, top_plan, NULL, root->distribution, - root->query_pathkeys); + root->sort_pathkeys); } #endif diff --git a/src/test/regress/expected/xc_groupby.out b/src/test/regress/expected/xc_groupby.out index cb3d397ae3..b573c8cf14 100644 --- a/src/test/regress/expected/xc_groupby.out +++ b/src/test/regress/expected/xc_groupby.out @@ -254,7 +254,7 @@ explain (verbose true, costs false, nodes false) select val + val2, val, val2 fr --------------------------------------------------------------------------------------- Remote Subquery Scan on all Output: (val + val2), val, val2 - Sort Key: xc_groupby_tab1.val, xc_groupby_tab1.val2 + Sort Key: (xc_groupby_tab1.val + xc_groupby_tab1.val2), xc_groupby_tab1.val -> Sort Output: ((val + val2)), val, val2 Sort Key: ((xc_groupby_tab1.val + xc_groupby_tab1.val2)), xc_groupby_tab1.val @@ -270,13 +270,12 @@ explain (verbose true, costs false, nodes false) select val + val2, val, val2 fr -------------------------------------------------------------- Remote Subquery Scan on all Output: (val + val2), val, val2 - Sort Key: xc_groupby_tab1.val, xc_groupby_tab1.val2 -> HashAggregate Output: (val + val2), val, val2 Group Key: xc_groupby_tab1.val, xc_groupby_tab1.val2 -> Seq Scan on public.xc_groupby_tab1 Output: val, val2 -(8 rows) +(7 rows) select xc_groupby_tab1.val + xc_groupby_tab2.val2, xc_groupby_tab1.val, xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val, xc_groupby_tab2.val2 order by 1, 2, 3; ?column? | val | val2 @@ -289,12 +288,38 @@ select xc_groupby_tab1.val + xc_groupby_tab2.val2, xc_groupby_tab1.val, xc_group 7 | 3 | 4 (6 rows) +explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc_groupby_tab2.val2, xc_groupby_tab1.val, xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val, xc_groupby_tab2.val2 order by 1, 2, 3; + QUERY PLAN +--------------------------------------------------------------------------------------------------------------- + Remote Subquery Scan on all + Output: (xc_groupby_tab1.val + xc_groupby_tab2.val2), xc_groupby_tab1.val, xc_groupby_tab2.val2 + Sort Key: (xc_groupby_tab1.val + xc_groupby_tab2.val2), xc_groupby_tab1.val, xc_groupby_tab2.val2 + -> Sort + Output: ((xc_groupby_tab1.val + xc_groupby_tab2.val2)), xc_groupby_tab1.val, xc_groupby_tab2.val2 + Sort Key: ((xc_groupby_tab1.val + xc_groupby_tab2.val2)), xc_groupby_tab1.val, xc_groupby_tab2.val2 + -> HashAggregate + Output: (xc_groupby_tab1.val + xc_groupby_tab2.val2), xc_groupby_tab1.val, xc_groupby_tab2.val2 + Group Key: xc_groupby_tab1.val, xc_groupby_tab2.val2 + -> Merge Join + Output: xc_groupby_tab1.val, xc_groupby_tab2.val2 + Merge Cond: (xc_groupby_tab1.val = xc_groupby_tab2.val) + -> Sort + Output: xc_groupby_tab1.val + Sort Key: xc_groupby_tab1.val + -> Seq Scan on public.xc_groupby_tab1 + Output: xc_groupby_tab1.val + -> Sort + Output: xc_groupby_tab2.val2, xc_groupby_tab2.val + Sort Key: xc_groupby_tab2.val + -> Seq Scan on public.xc_groupby_tab2 + Output: xc_groupby_tab2.val2, xc_groupby_tab2.val +(22 rows) + explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc_groupby_tab2.val2, xc_groupby_tab1.val, xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val, xc_groupby_tab2.val2; QUERY PLAN --------------------------------------------------------------------------------------------------------- Remote Subquery Scan on all Output: (xc_groupby_tab1.val + xc_groupby_tab2.val2), xc_groupby_tab1.val, xc_groupby_tab2.val2 - Sort Key: xc_groupby_tab1.val, xc_groupby_tab2.val2 -> HashAggregate Output: (xc_groupby_tab1.val + xc_groupby_tab2.val2), xc_groupby_tab1.val, xc_groupby_tab2.val2 Group Key: xc_groupby_tab1.val, xc_groupby_tab2.val2 @@ -311,7 +336,7 @@ explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc Sort Key: xc_groupby_tab2.val -> Seq Scan on public.xc_groupby_tab2 Output: xc_groupby_tab2.val2, xc_groupby_tab2.val -(19 rows) +(18 rows) select xc_groupby_tab1.val + xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val + xc_groupby_tab2.val2 order by 1; ?column? @@ -526,7 +551,7 @@ explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_d ----------------------------------------------------- Remote Subquery Scan on all Output: avg(a), a - Sort Key: xc_groupby_def.a + Sort Key: avg(xc_groupby_def.a) -> Sort Output: (avg(a)), a Sort Key: (avg(xc_groupby_def.a)) @@ -542,13 +567,12 @@ explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_d ----------------------------------------------- Remote Subquery Scan on all Output: avg(a), a - Sort Key: xc_groupby_def.a -> HashAggregate Output: avg(a), a Group Key: xc_groupby_def.a -> Seq Scan on public.xc_groupby_def Output: a, b -(8 rows) +(7 rows) select avg(a) from xc_groupby_def group by b order by 1; avg @@ -691,19 +715,35 @@ select count(*) from xc_groupby_def where a is not null group by a order by 1; 2 (10 rows) +explain (verbose true, costs false, nodes false) select count(*) from xc_groupby_def where a is not null group by a order by 1; + QUERY PLAN +------------------------------------------------------------ + Remote Subquery Scan on all + Output: count(*), a + Sort Key: count(*) + -> Sort + Output: (count(*)), a + Sort Key: (count(*)) + -> HashAggregate + Output: count(*), a + Group Key: xc_groupby_def.a + -> Seq Scan on public.xc_groupby_def + Output: a, b + Filter: (xc_groupby_def.a IS NOT NULL) +(12 rows) + explain (verbose true, costs false, nodes false) select count(*) from xc_groupby_def where a is not null group by a; QUERY PLAN ------------------------------------------------------ Remote Subquery Scan on all Output: count(*), a - Sort Key: xc_groupby_def.a -> HashAggregate Output: count(*), a Group Key: xc_groupby_def.a -> Seq Scan on public.xc_groupby_def Output: a, b Filter: (xc_groupby_def.a IS NOT NULL) -(9 rows) +(8 rows) select * from (select b from xc_groupby_def group by b) q order by q.b; b @@ -800,13 +840,12 @@ explain (verbose true, costs false, nodes false) select sum(a) from xc_groupby_g --------------------------------------------- Remote Subquery Scan on all Output: sum(a), a - Sort Key: xc_groupby_g.a -> HashAggregate Output: sum(a), a Group Key: xc_groupby_g.a -> Seq Scan on public.xc_groupby_g Output: a, b, c -(8 rows) +(7 rows) select sum(b) from xc_groupby_g group by b order by 1; sum @@ -2047,7 +2086,7 @@ explain (verbose true, costs false, nodes false) select val + val2 from xc_group ------------------------------------------------------------------------------ Group Output: ((val + val2)) - Group Key: ((xc_groupby_tab1.val + xc_groupby_tab1.val2)) + Group Key: (xc_groupby_tab1.val + xc_groupby_tab1.val2) -> Remote Subquery Scan on all Output: (val + val2) Sort Key: (xc_groupby_tab1.val + xc_groupby_tab1.val2) @@ -2061,7 +2100,7 @@ explain (verbose true, costs false, nodes false) select val + val2 from xc_group Output: (val + val2) (14 rows) -select val + val2, val, val2 from xc_groupby_tab1 group by val, val2; +select val + val2, val, val2 from xc_groupby_tab1 group by val, val2 order by val, val2; ?column? | val | val2 ----------+-----+------ 2 | 1 | 1 @@ -2074,7 +2113,7 @@ select val + val2, val, val2 from xc_groupby_tab1 group by val, val2; 9 | 6 | 3 (8 rows) -explain (verbose true, costs false, nodes false) select val + val2, val, val2 from xc_groupby_tab1 group by val, val2; +explain (verbose true, costs false, nodes false) select val + val2, val, val2 from xc_groupby_tab1 group by val, val2 order by val, val2; QUERY PLAN ------------------------------------------------------------------- Remote Subquery Scan on all @@ -2106,7 +2145,6 @@ explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc --------------------------------------------------------------------------------------------------------- Remote Subquery Scan on all Output: (xc_groupby_tab1.val + xc_groupby_tab2.val2), xc_groupby_tab1.val, xc_groupby_tab2.val2 - Sort Key: xc_groupby_tab1.val, xc_groupby_tab2.val2 -> Group Output: (xc_groupby_tab1.val + xc_groupby_tab2.val2), xc_groupby_tab1.val, xc_groupby_tab2.val2 Group Key: xc_groupby_tab1.val, xc_groupby_tab2.val2 @@ -2126,7 +2164,7 @@ explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc Sort Key: xc_groupby_tab2.val -> Seq Scan on public.xc_groupby_tab2 Output: xc_groupby_tab2.val2, xc_groupby_tab2.val -(22 rows) +(21 rows) select xc_groupby_tab1.val + xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val + xc_groupby_tab2.val2; ?column? @@ -2269,23 +2307,7 @@ explain (verbose true, costs false, nodes false) select a,count(a) from xc_group Output: a (11 rows) -select avg(a) from xc_groupby_def group by a; - avg ------------------------- - 1.00000000000000000000 - 2.0000000000000000 - 3.0000000000000000 - 4.0000000000000000 - 5.0000000000000000 - 6.0000000000000000 - 7.0000000000000000 - 8.0000000000000000 - 9.0000000000000000 - 10.0000000000000000 - -(11 rows) - -select avg(a) from xc_groupby_def group by a; +select avg(a) from xc_groupby_def group by a order by 1; avg ------------------------ 1.00000000000000000000 @@ -2301,21 +2323,24 @@ select avg(a) from xc_groupby_def group by a; (11 rows) -explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a; - QUERY PLAN ------------------------------------------------------ +explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a order by 1; + QUERY PLAN +----------------------------------------------------------- Remote Subquery Scan on all Output: avg(a), a - Sort Key: xc_groupby_def.a - -> GroupAggregate - Output: avg(a), a - Group Key: xc_groupby_def.a - -> Sort - Output: a - Sort Key: xc_groupby_def.a - -> Seq Scan on public.xc_groupby_def + Sort Key: avg(xc_groupby_def.a) + -> Sort + Output: (avg(a)), a + Sort Key: (avg(xc_groupby_def.a)) + -> GroupAggregate + Output: avg(a), a + Group Key: xc_groupby_def.a + -> Sort Output: a -(11 rows) + Sort Key: xc_groupby_def.a + -> Seq Scan on public.xc_groupby_def + Output: a +(14 rows) select avg(a) from xc_groupby_def group by b; avg @@ -2421,7 +2446,6 @@ explain (verbose true, costs false, nodes false) select count(*) from xc_groupby ------------------------------------------------------------ Remote Subquery Scan on all Output: count(*), a - Sort Key: xc_groupby_def.a -> GroupAggregate Output: count(*), a Group Key: xc_groupby_def.a @@ -2431,7 +2455,7 @@ explain (verbose true, costs false, nodes false) select count(*) from xc_groupby -> Seq Scan on public.xc_groupby_def Output: a Filter: (xc_groupby_def.a IS NOT NULL) -(12 rows) +(11 rows) select b from xc_groupby_def group by b; b @@ -2528,7 +2552,6 @@ explain (verbose true, costs false, nodes false) select sum(a) from xc_groupby_g --------------------------------------------------- Remote Subquery Scan on all Output: sum(a), a - Sort Key: xc_groupby_g.a -> GroupAggregate Output: sum(a), a Group Key: xc_groupby_g.a @@ -2537,7 +2560,7 @@ explain (verbose true, costs false, nodes false) select sum(a) from xc_groupby_g Sort Key: xc_groupby_g.a -> Seq Scan on public.xc_groupby_g Output: a -(11 rows) +(10 rows) select sum(b) from xc_groupby_g group by b; sum @@ -3639,7 +3662,7 @@ explain (verbose true, costs false, nodes false) select val + val2, val, val2 fr --------------------------------------------------------------------------------------- Remote Subquery Scan on all Output: (val + val2), val, val2 - Sort Key: xc_groupby_tab1.val, xc_groupby_tab1.val2 + Sort Key: (xc_groupby_tab1.val + xc_groupby_tab1.val2), xc_groupby_tab1.val -> Sort Output: ((val + val2)), val, val2 Sort Key: ((xc_groupby_tab1.val + xc_groupby_tab1.val2)), xc_groupby_tab1.val @@ -3739,7 +3762,7 @@ explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc ----------------------------------------------------------------------------------- Group Output: ((xc_groupby_tab1.val + xc_groupby_tab2.val2)) - Group Key: ((xc_groupby_tab1.val + xc_groupby_tab2.val2)) + Group Key: (xc_groupby_tab1.val + xc_groupby_tab2.val2) -> Remote Subquery Scan on all Output: (xc_groupby_tab1.val + xc_groupby_tab2.val2) Sort Key: (xc_groupby_tab1.val + xc_groupby_tab2.val2) @@ -3935,18 +3958,33 @@ select avg(a) from xc_groupby_def group by a order by 1; (11 rows) +explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a order by 1; + QUERY PLAN +----------------------------------------------------- + Remote Subquery Scan on all + Output: avg(a), a + Sort Key: avg(xc_groupby_def.a) + -> Sort + Output: (avg(a)), a + Sort Key: (avg(xc_groupby_def.a)) + -> HashAggregate + Output: avg(a), a + Group Key: xc_groupby_def.a + -> Seq Scan on public.xc_groupby_def + Output: a, b +(11 rows) + explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a; QUERY PLAN ----------------------------------------------- Remote Subquery Scan on all Output: avg(a), a - Sort Key: xc_groupby_def.a -> HashAggregate Output: avg(a), a Group Key: xc_groupby_def.a -> Seq Scan on public.xc_groupby_def Output: a, b -(8 rows) +(7 rows) select avg(a) from xc_groupby_def group by b order by 1; avg @@ -4089,19 +4127,35 @@ select count(*) from xc_groupby_def where a is not null group by a order by 1; 2 (10 rows) +explain (verbose true, costs false, nodes false) select count(*) from xc_groupby_def where a is not null group by a order by 1; + QUERY PLAN +------------------------------------------------------------ + Remote Subquery Scan on all + Output: count(*), a + Sort Key: count(*) + -> Sort + Output: (count(*)), a + Sort Key: (count(*)) + -> HashAggregate + Output: count(*), a + Group Key: xc_groupby_def.a + -> Seq Scan on public.xc_groupby_def + Output: a, b + Filter: (xc_groupby_def.a IS NOT NULL) +(12 rows) + explain (verbose true, costs false, nodes false) select count(*) from xc_groupby_def where a is not null group by a; QUERY PLAN ------------------------------------------------------ Remote Subquery Scan on all Output: count(*), a - Sort Key: xc_groupby_def.a -> HashAggregate Output: count(*), a Group Key: xc_groupby_def.a -> Seq Scan on public.xc_groupby_def Output: a, b Filter: (xc_groupby_def.a IS NOT NULL) -(9 rows) +(8 rows) select * from (select b from xc_groupby_def group by b) q order by q.b; b @@ -4198,13 +4252,12 @@ explain (verbose true, costs false, nodes false) select sum(a) from xc_groupby_g --------------------------------------------- Remote Subquery Scan on all Output: sum(a), a - Sort Key: xc_groupby_g.a -> HashAggregate Output: sum(a), a Group Key: xc_groupby_g.a -> Seq Scan on public.xc_groupby_g Output: a, b, c -(8 rows) +(7 rows) select sum(b) from xc_groupby_g group by b order by 1; sum @@ -5585,7 +5638,7 @@ explain (verbose true, costs false, nodes false) select val + val2, val, val2 fr --------------------------------------------------------------------------------------- Remote Subquery Scan on all Output: (val + val2), val, val2 - Sort Key: xc_groupby_tab1.val, xc_groupby_tab1.val2 + Sort Key: (xc_groupby_tab1.val + xc_groupby_tab1.val2), xc_groupby_tab1.val -> Sort Output: ((val + val2)), val, val2 Sort Key: ((xc_groupby_tab1.val + xc_groupby_tab1.val2)), xc_groupby_tab1.val @@ -5619,9 +5672,9 @@ select xc_groupby_tab1.val + xc_groupby_tab2.val2, xc_groupby_tab1.val, xc_group ?column? | val | val2 ----------+-----+------ 2 | 1 | 1 - 6 | 2 | 4 5 | 3 | 2 5 | 4 | 1 + 6 | 2 | 4 6 | 4 | 2 7 | 3 | 4 (6 rows) @@ -5631,7 +5684,7 @@ explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc --------------------------------------------------------------------------------------------------------------- Remote Subquery Scan on all Output: (xc_groupby_tab1.val + xc_groupby_tab2.val2), xc_groupby_tab1.val, xc_groupby_tab2.val2 - Sort Key: xc_groupby_tab1.val, xc_groupby_tab2.val2 + Sort Key: (xc_groupby_tab1.val + xc_groupby_tab2.val2), xc_groupby_tab1.val -> Sort Output: ((xc_groupby_tab1.val + xc_groupby_tab2.val2)), xc_groupby_tab1.val, xc_groupby_tab2.val2 Sort Key: ((xc_groupby_tab1.val + xc_groupby_tab2.val2)), xc_groupby_tab1.val @@ -5892,23 +5945,7 @@ explain (verbose true, costs false, nodes false) select a,count(a) from xc_group Output: a (11 rows) -select avg(a) from xc_groupby_def group by a; - avg ------------------------- - 1.00000000000000000000 - 2.0000000000000000 - 3.0000000000000000 - 4.0000000000000000 - 5.0000000000000000 - 6.0000000000000000 - 7.0000000000000000 - 8.0000000000000000 - 9.0000000000000000 - 10.0000000000000000 - -(11 rows) - -select avg(a) from xc_groupby_def group by a; +select avg(a) from xc_groupby_def group by a order by 1; avg ------------------------ 1.00000000000000000000 @@ -5924,21 +5961,24 @@ select avg(a) from xc_groupby_def group by a; (11 rows) -explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a; - QUERY PLAN ------------------------------------------------------ +explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a order by 1; + QUERY PLAN +----------------------------------------------------------- Remote Subquery Scan on all Output: avg(a), a - Sort Key: xc_groupby_def.a - -> GroupAggregate - Output: avg(a), a - Group Key: xc_groupby_def.a - -> Sort - Output: a - Sort Key: xc_groupby_def.a - -> Seq Scan on public.xc_groupby_def + Sort Key: avg(xc_groupby_def.a) + -> Sort + Output: (avg(a)), a + Sort Key: (avg(xc_groupby_def.a)) + -> GroupAggregate + Output: avg(a), a + Group Key: xc_groupby_def.a + -> Sort Output: a -(11 rows) + Sort Key: xc_groupby_def.a + -> Seq Scan on public.xc_groupby_def + Output: a +(14 rows) select avg(a) from xc_groupby_def group by b; avg @@ -6044,7 +6084,6 @@ explain (verbose true, costs false, nodes false) select count(*) from xc_groupby ------------------------------------------------------------ Remote Subquery Scan on all Output: count(*), a - Sort Key: xc_groupby_def.a -> GroupAggregate Output: count(*), a Group Key: xc_groupby_def.a @@ -6054,7 +6093,7 @@ explain (verbose true, costs false, nodes false) select count(*) from xc_groupby -> Seq Scan on public.xc_groupby_def Output: a Filter: (xc_groupby_def.a IS NOT NULL) -(12 rows) +(11 rows) select b from xc_groupby_def group by b; b @@ -6151,7 +6190,6 @@ explain (verbose true, costs false, nodes false) select sum(a) from xc_groupby_g --------------------------------------------------- Remote Subquery Scan on all Output: sum(a), a - Sort Key: xc_groupby_g.a -> GroupAggregate Output: sum(a), a Group Key: xc_groupby_g.a @@ -6160,7 +6198,7 @@ explain (verbose true, costs false, nodes false) select sum(a) from xc_groupby_g Sort Key: xc_groupby_g.a -> Seq Scan on public.xc_groupby_g Output: a -(11 rows) +(10 rows) select sum(b) from xc_groupby_g group by b; sum diff --git a/src/test/regress/expected/xc_having.out b/src/test/regress/expected/xc_having.out index 9fea4093ed..84862adc8d 100644 --- a/src/test/regress/expected/xc_having.out +++ b/src/test/regress/expected/xc_having.out @@ -135,7 +135,6 @@ explain (verbose true, costs false, nodes false) select count(*), sum(xc_having_ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Remote Subquery Scan on all Output: count(*), sum((xc_having_tab1.val * xc_having_tab2.val)), avg((xc_having_tab1.val * xc_having_tab2.val)), ((sum((xc_having_tab1.val * xc_having_tab2.val)))::double precision / (count(*))::double precision), xc_having_tab1.val2, xc_having_tab2.val2 - Sort Key: xc_having_tab1.val2 -> GroupAggregate Output: count(*), sum((xc_having_tab1.val * xc_having_tab2.val)), avg((xc_having_tab1.val * xc_having_tab2.val)), ((sum((xc_having_tab1.val * xc_having_tab2.val)))::double precision / (count(*))::double precision), xc_having_tab1.val2, xc_having_tab2.val2 Group Key: xc_having_tab1.val2, xc_having_tab2.val2 @@ -163,7 +162,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(xc_having_ Sort Key: xc_having_tab2.val2 -> Seq Scan on public.xc_having_tab2 Output: xc_having_tab2.val, xc_having_tab2.val2 -(30 rows) +(29 rows) -- group by and having, without aggregate in the target list select val2 from xc_having_tab1 group by val2 having sum(val) > 8; @@ -566,7 +565,6 @@ explain (verbose true, costs false, nodes false) select count(*), sum(xc_having_ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Remote Subquery Scan on all Output: count(*), sum((xc_having_tab1.val * xc_having_tab2.val)), avg((xc_having_tab1.val * xc_having_tab2.val)), ((sum((xc_having_tab1.val * xc_having_tab2.val)))::double precision / (count(*))::double precision), xc_having_tab1.val2, xc_having_tab2.val2 - Sort Key: xc_having_tab1.val2 -> GroupAggregate Output: count(*), sum((xc_having_tab1.val * xc_having_tab2.val)), avg((xc_having_tab1.val * xc_having_tab2.val)), ((sum((xc_having_tab1.val * xc_having_tab2.val)))::double precision / (count(*))::double precision), xc_having_tab1.val2, xc_having_tab2.val2 Group Key: xc_having_tab1.val2, xc_having_tab2.val2 @@ -594,7 +592,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(xc_having_ Sort Key: xc_having_tab2.val2 -> Seq Scan on public.xc_having_tab2 Output: xc_having_tab2.val, xc_having_tab2.val2 -(30 rows) +(29 rows) -- group by and having, without aggregate in the target list select val2 from xc_having_tab1 group by val2 having sum(val) > 8; diff --git a/src/test/regress/sql/xc_groupby.sql b/src/test/regress/sql/xc_groupby.sql index 09230fbadf..589ec4b3b0 100644 --- a/src/test/regress/sql/xc_groupby.sql +++ b/src/test/regress/sql/xc_groupby.sql @@ -250,8 +250,8 @@ select val2 from xc_groupby_tab1 group by val2; explain (verbose true, costs false, nodes false) select val2 from xc_groupby_tab1 group by val2; select val + val2 from xc_groupby_tab1 group by val + val2; explain (verbose true, costs false, nodes false) select val + val2 from xc_groupby_tab1 group by val + val2; -select val + val2, val, val2 from xc_groupby_tab1 group by val, val2; -explain (verbose true, costs false, nodes false) select val + val2, val, val2 from xc_groupby_tab1 group by val, val2; +select val + val2, val, val2 from xc_groupby_tab1 group by val, val2 order by val, val2; +explain (verbose true, costs false, nodes false) select val + val2, val, val2 from xc_groupby_tab1 group by val, val2 order by val, val2; select xc_groupby_tab1.val + xc_groupby_tab2.val2, xc_groupby_tab1.val, xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val, xc_groupby_tab2.val2; explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc_groupby_tab2.val2, xc_groupby_tab1.val, xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val, xc_groupby_tab2.val2; select xc_groupby_tab1.val + xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val + xc_groupby_tab2.val2; @@ -283,9 +283,8 @@ insert into xc_groupby_def VALUES (10, 'Three'); select a,count(a) from xc_groupby_def group by a order by a; explain (verbose true, costs false, nodes false) select a,count(a) from xc_groupby_def group by a order by a; -select avg(a) from xc_groupby_def group by a; -select avg(a) from xc_groupby_def group by a; -explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a; +select avg(a) from xc_groupby_def group by a order by 1; +explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a order by 1; select avg(a) from xc_groupby_def group by b; explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by b; select sum(a) from xc_groupby_def group by b; @@ -709,9 +708,8 @@ insert into xc_groupby_def VALUES (10, 'Three'); select a,count(a) from xc_groupby_def group by a order by a; explain (verbose true, costs false, nodes false) select a,count(a) from xc_groupby_def group by a order by a; -select avg(a) from xc_groupby_def group by a; -select avg(a) from xc_groupby_def group by a; -explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a; +select avg(a) from xc_groupby_def group by a order by 1; +explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by a order by 1; select avg(a) from xc_groupby_def group by b; explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_def group by b; select sum(a) from xc_groupby_def group by b; |