pgsql: Sanitize IF NOT EXISTS in EXPLAIN for CTAS and matviews

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема pgsql: Sanitize IF NOT EXISTS in EXPLAIN for CTAS and matviews
Дата
Msg-id E1kuaX7-0000Q9-MT@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Sanitize IF NOT EXISTS in EXPLAIN for CTAS and matviews

IF NOT EXISTS was ignored when specified in an EXPLAIN query for CREATE
MATERIALIZED VIEW or CREATE TABLE AS.  Hence, if this clause was
specified, the caller would get a failure if the relation already
exists instead of a success with a NOTICE message.

This commit makes the behavior of IF NOT EXISTS in EXPLAIN consistent
with the non-EXPLAIN'd DDL queries, preventing a failure with IF NOT
EXISTS if the relation to-be-created already exists.  The skip is done
before the SELECT query used for the relation is planned or executed,
and a "dummy" plan is generated instead depending on the format used by
EXPLAIN.

Author: Bharath Rupireddy
Reviewed-by: Zhijie Hou, Michael Paquier
Discussion: https://postgr.es/m/CALj2ACVa3oJ9O_wcGd+FtHWZds04dEKcakxphGz5POVgD4wC7Q@mail.gmail.com

Branch
------
master

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

Modified Files
--------------
src/backend/commands/createas.c           | 53 ++++++++++++++++++++++---------
src/backend/commands/explain.c            | 16 ++++++++++
src/include/commands/createas.h           |  2 ++
src/test/regress/expected/matview.out     | 38 ++++++++++++++++++++++
src/test/regress/expected/select_into.out | 42 ++++++++++++++++++++++++
src/test/regress/sql/matview.sql          | 23 ++++++++++++++
src/test/regress/sql/select_into.sql      | 21 ++++++++++++
7 files changed, 180 insertions(+), 15 deletions(-)


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

Предыдущее
От: Amit Kapila
Дата:
Сообщение: pgsql: Extend the output plugin API to allow decoding of prepared xacts
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix up usage of krb_server_keyfile GUC parameter.