diff --git a/src/backend/distributed/utils/citus_ruleutils.c b/src/backend/distributed/utils/citus_ruleutils.c index 9f98c3624..b5c8a7dc4 100644 --- a/src/backend/distributed/utils/citus_ruleutils.c +++ b/src/backend/distributed/utils/citus_ruleutils.c @@ -290,7 +290,14 @@ pg_get_tableschemadef_string(Oid tableRelationId, bool includeSequenceDefaults) initStringInfo(&buffer); if (relationKind == RELKIND_RELATION) { - appendStringInfo(&buffer, "CREATE TABLE %s (", relationName); + appendStringInfoString(&buffer, "CREATE "); + + if (relation->rd_rel->relpersistence == RELPERSISTENCE_UNLOGGED) + { + appendStringInfoString(&buffer, "UNLOGGED "); + } + + appendStringInfo(&buffer, "TABLE %s (", relationName); } else { diff --git a/src/test/regress/expected/multi_create_table.out b/src/test/regress/expected/multi_create_table.out index 4baf88abe..8e0323f69 100644 --- a/src/test/regress/expected/multi_create_table.out +++ b/src/test/regress/expected/multi_create_table.out @@ -525,3 +525,30 @@ SELECT create_distributed_table('orders_hash_part', 'o_orderkey'); (1 row) +CREATE UNLOGGED TABLE unlogged_table +( + key text, + value text +); +SELECT create_distributed_table('unlogged_table', 'key'); + create_distributed_table +-------------------------- + +(1 row) + +SELECT * FROM master_get_table_ddl_events('unlogged_table'); + master_get_table_ddl_events +-------------------------------------------------------------------- + CREATE UNLOGGED TABLE public.unlogged_table (key text, value text) +(1 row) + +\c - - - :worker_1_port +SELECT relpersistence FROM pg_class WHERE relname LIKE 'unlogged_table_%'; + relpersistence +---------------- + u + u + u + u +(4 rows) + diff --git a/src/test/regress/sql/multi_create_table.sql b/src/test/regress/sql/multi_create_table.sql index a998feb8c..6995b8748 100644 --- a/src/test/regress/sql/multi_create_table.sql +++ b/src/test/regress/sql/multi_create_table.sql @@ -282,3 +282,14 @@ SELECT create_distributed_table('lineitem_hash_part', 'l_orderkey'); CREATE TABLE orders_hash_part (like orders); SELECT create_distributed_table('orders_hash_part', 'o_orderkey'); + +CREATE UNLOGGED TABLE unlogged_table +( + key text, + value text +); +SELECT create_distributed_table('unlogged_table', 'key'); +SELECT * FROM master_get_table_ddl_events('unlogged_table'); + +\c - - - :worker_1_port +SELECT relpersistence FROM pg_class WHERE relname LIKE 'unlogged_table_%';