pgsql: Fix several DDL issues of generated columns versus inheritance

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix several DDL issues of generated columns versus inheritance
Date: 2020-05-08 09:40:14
Message-ID: E1jWzUM-0006VV-C3@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix several DDL issues of generated columns versus inheritance

Several combinations of generated columns and inheritance in CREATE
TABLE were not handled correctly. Specifically:

- Disallow a child column specifying a generation expression if the
parent column is a generated column. The child column definition
must be unadorned and the parent column's generation expression will
be copied.

- Prohibit a child column of a generated parent column specifying
default values or identity.

- Allow a child column of a not-generated parent column specifying
itself as a generated column. This previously did not work, but it
was possible to arrive at the state via other means (involving ALTER
TABLE), so it seems sensible to support it.

Add tests for each case. Also add documentation about the rules
involving generated columns and inheritance.

Discussion:
https://www.postgresql.org/message-id/flat/15830.1575468847%40sss.pgh.pa.us
https://www.postgresql.org/message-id/flat/2678bad1-048f-519a-ef24-b12962f41807%40enterprisedb.com
https://www.postgresql.org/message-id/flat/CAJvUf_u4h0DxkCMCeEKAWCuzGUTnDP-G5iVmSwxLQSXn0_FWNQ%40mail.gmail.com

Branch
------
REL_12_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/14751c340754af9f906a893eb87a894dea3adbc9

Modified Files
--------------
doc/src/sgml/ddl.sgml | 26 ++++++++++++++
src/backend/commands/tablecmds.c | 61 ++++++++++++++++++++++++++++++---
src/test/regress/expected/generated.out | 44 +++++++++++++++++++++++-
src/test/regress/sql/generated.sql | 22 +++++++++++-
4 files changed, 146 insertions(+), 7 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2020-05-08 11:40:33 pgsql: Unify find_other_exec() error messages
Previous Message Peter Eisentraut 2020-05-08 08:15:09 pgsql: Propagate ALTER TABLE ... SET STORAGE to indexes