diff --git a/src/backend/distributed/deparser/deparse_table_stmts.c b/src/backend/distributed/deparser/deparse_table_stmts.c index c12e5401a..9a8cdedef 100644 --- a/src/backend/distributed/deparser/deparse_table_stmts.c +++ b/src/backend/distributed/deparser/deparse_table_stmts.c @@ -279,7 +279,9 @@ AppendAlterTableCmdAddConstraint(StringInfo buf, Constraint *constraint, appendStringInfoString(buf, " REFERENCES"); - appendStringInfo(buf, " %s", quote_identifier(constraint->pktable->relname)); + appendStringInfo(buf, " %s", quote_qualified_identifier( + constraint->pktable->schemaname, + constraint->pktable->relname)); if (list_length(constraint->pk_attrs) > 0) { diff --git a/src/test/regress/expected/multi_alter_table_add_foreign_key_without_name.out b/src/test/regress/expected/multi_alter_table_add_foreign_key_without_name.out index 58571cc34..9af806685 100644 --- a/src/test/regress/expected/multi_alter_table_add_foreign_key_without_name.out +++ b/src/test/regress/expected/multi_alter_table_add_foreign_key_without_name.out @@ -156,7 +156,7 @@ SELECT con.conname FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid INNER JOIN pg_catalog.pg_namespace nsp ON nsp.oid = connamespace - WHERE rel.relname = 'referencing_table'; + WHERE rel.relname = 'referencing_table' ORDER BY con.conname ASC; conname --------------------------------------------------------------------- referencing_table_ref_id_fkey @@ -167,7 +167,7 @@ SELECT con.conname FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid INNER JOIN pg_catalog.pg_namespace nsp ON nsp.oid = connamespace - WHERE rel.relname LIKE 'referencing_table%'; + WHERE rel.relname LIKE 'referencing_table%' ORDER BY con.conname ASC; conname --------------------------------------------------------------------- referencing_table_ref_id_fkey @@ -184,7 +184,7 @@ SELECT con.conname FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid INNER JOIN pg_catalog.pg_namespace nsp ON nsp.oid = connamespace - WHERE rel.relname = 'referencing_table'; + WHERE rel.relname = 'referencing_table' ORDER BY con.conname ASC; conname --------------------------------------------------------------------- referencing_table_ref_id_fkey @@ -195,7 +195,7 @@ SELECT con.conname FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid INNER JOIN pg_catalog.pg_namespace nsp ON nsp.oid = connamespace - WHERE rel.relname LIKE 'referencing_table%'; + WHERE rel.relname LIKE 'referencing_table%' ORDER BY con.conname ASC; conname --------------------------------------------------------------------- referencing_table_ref_id_fkey @@ -560,3 +560,21 @@ drop cascades to table at_add_fk.referenced_table drop cascades to table at_add_fk.referencing_table drop cascades to table at_add_fk.reference_table drop cascades to table at_add_fk.reference_table_1770052 +-- test ADD FOREIGN KEY when REFERENCED table is in another schema. +CREATE SCHEMA schema_1; +CREATE TABLE schema_1.referenced_table(a int PRIMARY KEY, b int); +SELECT create_reference_table('schema_1.referenced_table'); + create_reference_table +--------------------------------------------------------------------- + +(1 row) + +CREATE SCHEMA schema_2; +CREATE TABLE schema_2.referencing_table (a int PRIMARY KEY, b int, c text); +ALTER TABLE schema_2.referencing_table ADD FOREIGN KEY (b) REFERENCES schema_1.referenced_table(a); +DROP SCHEMA schema_1, schema_2 CASCADE; +NOTICE: drop cascades to 4 other objects +DETAIL: drop cascades to table schema_2.referencing_table_1770054 +drop cascades to table schema_2.referencing_table +drop cascades to table schema_1.referenced_table +drop cascades to table schema_1.referenced_table_1770053 diff --git a/src/test/regress/sql/multi_alter_table_add_foreign_key_without_name.sql b/src/test/regress/sql/multi_alter_table_add_foreign_key_without_name.sql index 03df65709..f7ffd66a0 100644 --- a/src/test/regress/sql/multi_alter_table_add_foreign_key_without_name.sql +++ b/src/test/regress/sql/multi_alter_table_add_foreign_key_without_name.sql @@ -89,14 +89,14 @@ SELECT con.conname FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid INNER JOIN pg_catalog.pg_namespace nsp ON nsp.oid = connamespace - WHERE rel.relname = 'referencing_table'; + WHERE rel.relname = 'referencing_table' ORDER BY con.conname ASC; \c - - :public_worker_1_host :worker_1_port SELECT con.conname FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid INNER JOIN pg_catalog.pg_namespace nsp ON nsp.oid = connamespace - WHERE rel.relname LIKE 'referencing_table%'; + WHERE rel.relname LIKE 'referencing_table%' ORDER BY con.conname ASC; \c - - :master_host :master_port SET SEARCH_PATH = at_add_fk; @@ -109,14 +109,14 @@ SELECT con.conname FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid INNER JOIN pg_catalog.pg_namespace nsp ON nsp.oid = connamespace - WHERE rel.relname = 'referencing_table'; + WHERE rel.relname = 'referencing_table' ORDER BY con.conname ASC; \c - - :public_worker_1_host :worker_1_port SELECT con.conname FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid INNER JOIN pg_catalog.pg_namespace nsp ON nsp.oid = connamespace - WHERE rel.relname LIKE 'referencing_table%'; + WHERE rel.relname LIKE 'referencing_table%' ORDER BY con.conname ASC; \c - - :master_host :master_port SET SEARCH_PATH = at_add_fk; @@ -376,3 +376,16 @@ DROP TABLE citus_local_table CASCADE; RESET SEARCH_PATH; RESET client_min_messages; DROP SCHEMA at_add_fk CASCADE; + +-- test ADD FOREIGN KEY when REFERENCED table is in another schema. +CREATE SCHEMA schema_1; + +CREATE TABLE schema_1.referenced_table(a int PRIMARY KEY, b int); +SELECT create_reference_table('schema_1.referenced_table'); + +CREATE SCHEMA schema_2; + +CREATE TABLE schema_2.referencing_table (a int PRIMARY KEY, b int, c text); +ALTER TABLE schema_2.referencing_table ADD FOREIGN KEY (b) REFERENCES schema_1.referenced_table(a); + +DROP SCHEMA schema_1, schema_2 CASCADE;