From da00c62eeadfcbe2cb8f448ccfd39de70bcca086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Dub=C3=A9?= Date: Wed, 28 Aug 2019 22:33:24 +0000 Subject: [PATCH] create_distributed_table: include COLLATE on columns --- src/backend/distributed/utils/citus_ruleutils.c | 9 ++++++++- src/test/regress/expected/multi_schema_support.out | 7 +++++++ src/test/regress/sql/multi_schema_support.sql | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/utils/citus_ruleutils.c b/src/backend/distributed/utils/citus_ruleutils.c index fa192d79c..d4c3cdfe1 100644 --- a/src/backend/distributed/utils/citus_ruleutils.c +++ b/src/backend/distributed/utils/citus_ruleutils.c @@ -8,7 +8,6 @@ */ #include "postgres.h" -#include "c.h" #include "miscadmin.h" #include @@ -28,6 +27,7 @@ #include "catalog/pg_attribute.h" #include "catalog/pg_authid.h" #include "catalog/pg_class.h" +#include "catalog/pg_collation.h" #include "catalog/pg_extension.h" #include "catalog/pg_foreign_data_wrapper.h" #include "catalog/pg_index.h" @@ -380,6 +380,13 @@ pg_get_tableschemadef_string(Oid tableRelationId, bool includeSequenceDefaults) { appendStringInfoString(&buffer, " NOT NULL"); } + + if (attributeForm->attcollation != InvalidOid && + attributeForm->attcollation != DEFAULT_COLLATION_OID) + { + appendStringInfo(&buffer, " COLLATE %s", generate_collation_name( + attributeForm->attcollation)); + } } } diff --git a/src/test/regress/expected/multi_schema_support.out b/src/test/regress/expected/multi_schema_support.out index 743dcae22..a42cd2a17 100644 --- a/src/test/regress/expected/multi_schema_support.out +++ b/src/test/regress/expected/multi_schema_support.out @@ -448,6 +448,13 @@ CREATE TABLE test_schema_support.nation_hash_collation( n_regionkey integer not null, n_comment varchar(152) ); +SELECT master_get_table_ddl_events('test_schema_support.nation_hash_collation') ORDER BY 1; + master_get_table_ddl_events +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + ALTER TABLE test_schema_support.nation_hash_collation OWNER TO postgres + CREATE TABLE test_schema_support.nation_hash_collation (n_nationkey integer NOT NULL, n_name character(25) NOT NULL COLLATE test_schema_support.english, n_regionkey integer NOT NULL, n_comment character varying(152)) +(2 rows) + SELECT master_create_distributed_table('test_schema_support.nation_hash_collation', 'n_nationkey', 'hash'); master_create_distributed_table --------------------------------- diff --git a/src/test/regress/sql/multi_schema_support.sql b/src/test/regress/sql/multi_schema_support.sql index 9c25a332e..fd1540111 100644 --- a/src/test/regress/sql/multi_schema_support.sql +++ b/src/test/regress/sql/multi_schema_support.sql @@ -338,6 +338,7 @@ CREATE TABLE test_schema_support.nation_hash_collation( n_regionkey integer not null, n_comment varchar(152) ); +SELECT master_get_table_ddl_events('test_schema_support.nation_hash_collation') ORDER BY 1; SELECT master_create_distributed_table('test_schema_support.nation_hash_collation', 'n_nationkey', 'hash'); SELECT master_create_worker_shards('test_schema_support.nation_hash_collation', 4, 2);