On Mon, Sep 12, 2016 at 5:19 PM, Jeevan Chalke < jeevan.cha...@enterprisedb.com> wrote:
> > > On Mon, Sep 12, 2016 at 12:20 PM, Prabhat Sahu < > prabhat.s...@enterprisedb.com> wrote: > >> Hi, >> >> While testing "Aggregate pushdown", i found the below error: >> -- GROUP BY alias showing different behavior after adding patch. >> >> -- Create table "t1", insert few records. >> create table t1(c1 int); >> insert into t1 values(10), (20); >> >> -- Create foreign table: >> create foreign table f_t1 (c1 int) server db1_server options (table_name >> 't1'); >> >> -- with local table: >> postgres=# select 2 a, avg(c1) from t1 group by a; >> a | avg >> ---+--------------------- >> 2 | 15.0000000000000000 >> (1 row) >> >> -- with foreign table: >> postgres=# select 2 a, avg(c1) from f_t1 group by a; >> ERROR: aggregate functions are not allowed in GROUP BY >> CONTEXT: Remote SQL command: EXPLAIN SELECT 2, avg(c1) FROM public.t1 >> GROUP BY 2 >> >> >> > Thanks for reporting this bug in *v1.patch Prabhat. > > I will have a look over this issue and will post a fix in next version. > To fix this issue, we need to make deparseConst() function aware of showtype flag exactly as that of get_const_expr(). While deparsing Const in GROUP BY clause, we need to show "::typename" so that it won't treat the constant value as a column position in the target list and rather treat it as constant value. Fixed this in earlier attached patch and added test-case too. -- Jeevan B Chalke Principal Software Engineer, Product Development EnterpriseDB Corporation The Enterprise PostgreSQL Company