View with duplicate GROUP BY entries

From: Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: View with duplicate GROUP BY entries
Date: 2017-11-21 06:48:59
Message-ID: CAFjFpRfN4+b8JazddPzRdEO9-jwEhp9496y-0LB_ff0oht37UA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi All,
While reviewing patch for similar problem in postgres_fdw [1], I
noticed that we don't use positional notation while creating the view.
This might introduced anomalies when GROUP BY entries are
non-immutable.

E.g.
postgres=# create view aggv as select c2 c21, c2 c22 from t1 group by 1, 2;
postgres=# \d+ aggv
View "public.aggv"
Column | Type | Collation | Nullable | Default | Storage | Description
--------+---------+-----------+----------+---------+---------+-------------
c21 | integer | | | | plain |
c22 | integer | | | | plain |
View definition:
SELECT t1.c2 AS c21,
t1.c2 AS c22
FROM t1
GROUP BY t1.c2, t1.c2;

That's not a problematic case, but following is

create view aggv_rand as select random() c21, random() c22 from t1
group by 1, 2;
CREATE VIEW
postgres=# \d+ aggv_rand
View "public.aggv_rand"
Column | Type | Collation | Nullable | Default | Storage
| Description
--------+------------------+-----------+----------+---------+---------+-------------
c21 | double precision | | | | plain |
c22 | double precision | | | | plain |
View definition:
SELECT random() AS c21,
random() AS c22
FROM t1
GROUP BY (random()), (random());

Notice four instances of random() instead of two in the original definition.

What is printed in \d+ output also goes into dump file, so when such a
view is restored, it will have a different behaviour that the intended
one.

[1] http://postgr.es/m/10660.1510093781@sss.pgh.pa.us

--
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2017-11-21 07:02:53 Re: [HACKERS] proposal: Support Unicode host variable in ECPG
Previous Message Masahiko Sawada 2017-11-21 06:48:46 Re: Failed to delete old ReorderBuffer spilled files