pgsql: postgres_fdw: Fix issues with generated columns in foreign table

Поиск
Список
Период
Сортировка
От Etsuro Fujita
Тема pgsql: postgres_fdw: Fix issues with generated columns in foreign table
Дата
Msg-id E1mBbHJ-0004Ny-Te@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
postgres_fdw: Fix issues with generated columns in foreign tables.

postgres_fdw imported generated columns from the remote tables as plain
columns, and caused failures like "ERROR: cannot insert a non-DEFAULT
value into column "foo"" when inserting into the foreign tables, as it
tried to insert values into the generated columns.  To fix, we do the
following under the assumption that generated columns in a postgres_fdw
foreign table are defined so that they represent generated columns in
the underlying remote table:

* Send DEFAULT for the generated columns to the foreign server on insert
  or update, not generated column values computed on the local server.
* Add to postgresImportForeignSchema() an option "import_generated" to
  include column generated expressions in the definitions of foreign
  tables imported from a foreign server.  The option is true by default.

The assumption seems reasonable, because that would make a query of the
postgres_fdw foreign table return values for the generated columns that
are consistent with the generated expression.

While here, fix another issue in postgresImportForeignSchema(): it tried
to include column generated expressions as column default expressions in
the foreign table definitions when the import_default option was enabled.

Per bug #16631 from Daniel Cherniy.  Back-patch to v12 where generated
columns were added.

Discussion: https://postgr.es/m/16631-e929fe9db0ffc7cf%40postgresql.org

Branch
------
REL_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/388a81bf4df4fc86a947368d94094e5276c2f255

Modified Files
--------------
contrib/postgres_fdw/deparse.c                 | 24 ++++++--
contrib/postgres_fdw/expected/postgres_fdw.out | 82 ++++++++++++++++++++++++--
contrib/postgres_fdw/postgres_fdw.c            | 59 +++++++++++++-----
contrib/postgres_fdw/sql/postgres_fdw.sql      | 21 ++++++-
doc/src/sgml/postgres-fdw.sgml                 | 12 ++++
5 files changed, 172 insertions(+), 26 deletions(-)


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

Предыдущее
От: Fujii Masao
Дата:
Сообщение: pgsql: Remove unused argument "txn" in maybe_send_schema().
Следующее
От: Andrew Dunstan
Дата:
Сообщение: Re: pgsql: Enable TAP tests of pg_receivewal for ZLIB on Windows, take thre