Hi Ășt 26. 3. 2019 v 14:33 odesĂlatel Peter Eisentraut < peter.eisentr...@2ndquadrant.com> napsal:
> On 2019-03-20 03:51, Michael Paquier wrote: > > On Mon, Mar 18, 2019 at 03:14:09PM +0100, Pavel Stehule wrote: > >> postgres=# update foo set name = 'bbbxx' where id = 1; -- error > >> ERROR: no generation expression found for column number 3 of table > >> "foo" > > > > Yes I can see the problem after adding a generated column and dropping > > it on an INSERT query. > > fixed > > > + if (relid && attnum && get_attgenerated(relid, attnum)) > > Better to use OidIsValid here? > > fixed > > > + (walrcv_server_version(wrconn) >= 120000 ? "AND a.attgenerated = > ''" : ""), > > I think that it is better to always have version-related references > > stored as defines. > > A valid idea, but I don't see it widely done (see psql, pg_dump). > > > +CREATE TABLE gtest22a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a > * 2) STORED UNIQUE); > > +CREATE TABLE gtest22b (a int, b int GENERATED ALWAYS AS (a * 2) STORED, > PRIMARY KEY (a, b)); > > Some tests for unique constraints with a generated column should be in > > place? > > done > > > It would be nice to have extra tests for forbidden expression types > > on generated columns especially SRF, subquery and aggregates/window > > functions. > > done > I checked this functionality and it looks very well. 1. there are not any warning or any compilation issue. 2. all tests passed, check-world passed 3. documentation is checked 4. source code is readable, commented, and well formatted 5. regress tests are enough 6. I checked a functionality and did comparison with db that implements this function already and there are not differences 7. I tested performance and I got significantly better times against trigger based solution - up tu 2x It is great feature and I'll mark this feature as ready for commit Regards Pavel > > -- > Peter Eisentraut http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services >