View with duplicate GROUP BY entries
От | Ashutosh Bapat |
---|---|
Тема | View with duplicate GROUP BY entries |
Дата | |
Msg-id | CAFjFpRfN4+b8JazddPzRdEO9-jwEhp9496y-0LB_ff0oht37UA@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: View with duplicate GROUP BY entries
|
Список | 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
В списке pgsql-hackers по дате отправления: