pgsql: Reject system columns as elements of foreign keys.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Reject system columns as elements of foreign keys.
Дата
Msg-id E1piGWt-000fs6-Ob@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Reject system columns as elements of foreign keys.

Up through v11 it was sensible to use the "oid" system column as
a foreign key column, but since that was removed there's no visible
usefulness in making any of the remaining system columns a foreign
key.  Moreover, since the TupleTableSlot rewrites in v12, such cases
actively fail because of implicit assumptions that only user columns
appear in foreign keys.  The lack of complaints about that seems
like good evidence that no one is trying to do it.  Hence, rather
than trying to repair those assumptions (of which there are at least
two, maybe more), let's just forbid the case up front.

Per this patch, a system column in either the referenced or
referencing side of a foreign key will draw this error; however,
putting one in the referenced side would have failed later anyway,
since we don't allow unique indexes to be made on system columns.

Per bug #17877 from Alexander Lakhin.  Back-patch to v12; the
case still appears to work in v11, so we shouldn't break it there.

Discussion: https://postgr.es/m/17877-4bcc658e33df6de1@postgresql.org

Branch
------
REL_12_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/e8d74aac522a41e605d8f19fa1947fb118d43011

Modified Files
--------------
src/backend/commands/tablecmds.c          | 15 +++++++++++++--
src/test/regress/expected/foreign_key.out | 11 ++++++-----
src/test/regress/sql/foreign_key.sql      |  7 ++++---
3 files changed, 23 insertions(+), 10 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Reject system columns as elements of foreign keys.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Further tweaking of width_bucket() edge cases.