From 1dc22834b12513b0d33b388a4c3cb900c226c4f9 Mon Sep 17 00:00:00 2001 From: douxin Date: Wed, 30 Dec 2020 14:52:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BD=E6=95=B0pg=5Fget=5Ftabledef()?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=98=BE=E7=A4=BA=E5=85=A8=E5=B1=80=E4=B8=B4?= =?UTF-8?q?=E6=97=B6=E8=A1=A8=E7=9A=84DDL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/backend/utils/adt/ruleutils.cpp | 8 ++++++-- .../global_temporary_table_get_table_def.out | 20 +++++++++++++++++++ src/test/regress/parallel_schedule10 | 3 ++- .../global_temporary_table_get_table_def.sql | 8 ++++++++ 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/test/regress/expected/global_temporary_table_get_table_def.out create mode 100644 src/test/regress/sql/global_temporary_table_get_table_def.sql diff --git a/src/common/backend/utils/adt/ruleutils.cpp b/src/common/backend/utils/adt/ruleutils.cpp index 372b1c86a..ec2d9ef3b 100644 --- a/src/common/backend/utils/adt/ruleutils.cpp +++ b/src/common/backend/utils/adt/ruleutils.cpp @@ -2171,8 +2171,12 @@ static char* pg_get_tabledef_worker(Oid tableoid) appendStringInfo(&buf, "SET search_path = %s;", quote_identifier(get_namespace_name(tableinfo.spcid))); - appendStringInfo(&buf, "\nCREATE %s %s %s", - (tableinfo.relpersistence == RELPERSISTENCE_UNLOGGED) ? "UNLOGGED" : "", reltypename, relname); + appendStringInfo(&buf, + "\nCREATE %s%s %s", + (table_info.relpersistence == RELPERSISTENCE_UNLOGGED) ? "UNLOGGED " : + ((table_info.relpersistence == RELPERSISTENCE_GLOBAL_TEMP) ? "GLOBAL TEMPORARY " : ""), + rel_type_name, + rel_name); // get attribute info actual_atts = get_table_attribute(tableoid, &buf, formatter, ft_frmt_clmn, cnt_ft_frmt_clmns); diff --git a/src/test/regress/expected/global_temporary_table_get_table_def.out b/src/test/regress/expected/global_temporary_table_get_table_def.out new file mode 100644 index 000000000..2a4cccd48 --- /dev/null +++ b/src/test/regress/expected/global_temporary_table_get_table_def.out @@ -0,0 +1,20 @@ +CREATE GLOBAL TEMPORARY TABLE gtt1 ( + ID INTEGER NOT NULL, + NAME CHAR(16) NOT NULL, + ADDRESS VARCHAR(50), + POSTCODE CHAR(6) +) +ON COMMIT PRESERVE ROWS; +select * from pg_get_tabledef('gtt1'); + pg_get_tabledef +---------------------------------------------------------------------- + SET search_path = public; + + CREATE GLOBAL TEMPORARY TABLE gtt1 ( + + id integer NOT NULL, + + name character(16) NOT NULL, + + address character varying(50), + + postcode character(6) + + ) + + WITH (orientation=row, compression=no, on_commit_delete_rows=false); +(1 row) + diff --git a/src/test/regress/parallel_schedule10 b/src/test/regress/parallel_schedule10 index 08d778ae2..a0e6d788a 100644 --- a/src/test/regress/parallel_schedule10 +++ b/src/test/regress/parallel_schedule10 @@ -1,4 +1,4 @@ -# ---------- +# ---------- # The first group of parallel tests # ---------- test: boolean char name varchar text int2 int4 int8 oid float4 float8 bit numeric numeric_2 txid uuid money @@ -85,3 +85,4 @@ test: enum_empty_test test: alarm_component_test test: unify_definition_superuser + test: global_temporary_table_get_table_def diff --git a/src/test/regress/sql/global_temporary_table_get_table_def.sql b/src/test/regress/sql/global_temporary_table_get_table_def.sql new file mode 100644 index 000000000..85bd49971 --- /dev/null +++ b/src/test/regress/sql/global_temporary_table_get_table_def.sql @@ -0,0 +1,8 @@ +CREATE GLOBAL TEMPORARY TABLE gtt1 ( + ID INTEGER NOT NULL, + NAME CHAR(16) NOT NULL, + ADDRESS VARCHAR(50), + POSTCODE CHAR(6) +) +ON COMMIT PRESERVE ROWS; +select * from pg_get_tabledef('gtt1'); \ No newline at end of file