From b4ed4ee7efcc79a0f1f3b470ab237628165d57d1 Mon Sep 17 00:00:00 2001 From: zhang_xubo <2578876417@qq.com> Date: Sun, 27 Sep 2020 19:21:07 +0800 Subject: [PATCH] =?UTF-8?q?pg=5Fget=5Ftabledef=E5=87=BD=E6=95=B0=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E4=B8=8D=E6=94=AF=E6=8C=81foreigngn=5Fkey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/backend/utils/adt/ruleutils.cpp | 2 +- .../expected/function_get_table_def.out | 24 +++++++++++++++++++ src/test/regress/parallel_schedule | 2 ++ .../regress/sql/function_get_table_def.sql | 10 ++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/test/regress/expected/function_get_table_def.out create mode 100644 src/test/regress/sql/function_get_table_def.sql diff --git a/src/common/backend/utils/adt/ruleutils.cpp b/src/common/backend/utils/adt/ruleutils.cpp index 7d23b9ebd..b52aab824 100755 --- a/src/common/backend/utils/adt/ruleutils.cpp +++ b/src/common/backend/utils/adt/ruleutils.cpp @@ -1774,7 +1774,7 @@ static char* pg_get_tabledef_worker(Oid table_oid) while (HeapTupleIsValid(tuple = systable_getnext(scan))) { Form_pg_constraint con = (Form_pg_constraint)GETSTRUCT(tuple); - if (con->contype == 'c') { + if (con->contype == 'c' || con->contype == 'f') { if (!con->convalidated) { has_not_valid_check = true; continue; diff --git a/src/test/regress/expected/function_get_table_def.out b/src/test/regress/expected/function_get_table_def.out new file mode 100644 index 000000000..1edd075a0 --- /dev/null +++ b/src/test/regress/expected/function_get_table_def.out @@ -0,0 +1,24 @@ +create table table_function_export_def_base ( + id integer primary key, + name varchar(100) +); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "table_function_export_def_base_pkey" for table "table_function_export_def_base" +create table table_function_export_def ( + id integer primary key, + fid integer, + constraint table_export_base_fkey foreign key (fid) references table_function_export_def_base(id) +); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "table_function_export_def_pkey" for table "table_function_export_def" +select * from pg_get_tabledef('table_function_export_def'); + pg_get_tabledef +------------------------------------------------------------------------------------------------------- + SET search_path = public; + + CREATE TABLE table_function_export_def ( + + id integer NOT NULL, + + fid integer, + + CONSTRAINT table_export_base_fkey FOREIGN KEY (fid) REFERENCES table_function_export_def_base(id)+ + ) + + WITH (orientation=row, compression=no); + + ALTER TABLE table_function_export_def ADD CONSTRAINT table_function_export_def_pkey PRIMARY KEY (id); +(1 row) + diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index eeeed506f..e5e8d3806 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -600,3 +600,5 @@ test: parallel_query # gs_basebackup test: gs_basebackup + +test: function_get_table_def \ No newline at end of file diff --git a/src/test/regress/sql/function_get_table_def.sql b/src/test/regress/sql/function_get_table_def.sql new file mode 100644 index 000000000..6596d4a1c --- /dev/null +++ b/src/test/regress/sql/function_get_table_def.sql @@ -0,0 +1,10 @@ +create table table_function_export_def_base ( + id integer primary key, + name varchar(100) +); +create table table_function_export_def ( + id integer primary key, + fid integer, + constraint table_export_base_fkey foreign key (fid) references table_function_export_def_base(id) +); +select * from pg_get_tabledef('table_function_export_def');