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