!6512 修复gs_dump 带-c -t时导出导入表后触发器丢失的问题
Merge pull request !6512 from wangfeihuo/gs_dump
This commit is contained in:
@ -11334,7 +11334,7 @@ static void dumpDumpableObject(Archive* fout, DumpableObject* dobj)
|
||||
break;
|
||||
case DO_TRIGGER: {
|
||||
/* -t condition will not dump trigger without trigger function. */
|
||||
if (gTableCount == 0)
|
||||
if (gTableCount == 0 || outputClean)
|
||||
dumpTrigger(fout, (TriggerInfo*)dobj);
|
||||
break;
|
||||
}
|
||||
|
||||
38
src/test/regress/input/dump_with_trigger.source
Normal file
38
src/test/regress/input/dump_with_trigger.source
Normal file
@ -0,0 +1,38 @@
|
||||
create database dump_with_trigger;
|
||||
\c dump_with_trigger
|
||||
|
||||
CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT, id3 INT);
|
||||
CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT, id3 INT);
|
||||
|
||||
CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS
|
||||
$$
|
||||
DECLARE
|
||||
BEGIN
|
||||
INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3);
|
||||
RETURN NEW;
|
||||
END
|
||||
$$ LANGUAGE PLPGSQL;
|
||||
|
||||
CREATE TRIGGER insert_trigger
|
||||
BEFORE INSERT ON test_trigger_src_tbl
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE tri_insert_func();
|
||||
|
||||
|
||||
\! @abs_bindir@/gs_dump dump_with_trigger -p @portstring@ -f @abs_bindir@/dump_with_trigger.sql -w -c -t test_trigger_src_tbl >/dev/null 2>&1; echo $?
|
||||
drop table test_trigger_src_tbl;
|
||||
\! @abs_bindir@/gsql -ddump_with_trigger -p @portstring@ -f "@abs_bindir@/dump_with_trigger.sql";
|
||||
|
||||
-- dump_with_trigger check
|
||||
|
||||
SELECT tgname AS trigger_name,
|
||||
tgisinternal AS internal,
|
||||
tgtype::varchar AS trigger_type,
|
||||
tgrelid::regclass AS table_name,
|
||||
tgfoid::regproc AS function_name,
|
||||
tgattr AS trigger_columns,
|
||||
tgqual AS qualifier
|
||||
FROM pg_trigger order by 1;
|
||||
|
||||
\c postgres
|
||||
drop database dump_with_trigger;
|
||||
56
src/test/regress/output/dump_with_trigger.source
Normal file
56
src/test/regress/output/dump_with_trigger.source
Normal file
@ -0,0 +1,56 @@
|
||||
create database dump_with_trigger;
|
||||
\c dump_with_trigger
|
||||
CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT, id3 INT);
|
||||
CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT, id3 INT);
|
||||
CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS
|
||||
$$
|
||||
DECLARE
|
||||
BEGIN
|
||||
INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3);
|
||||
RETURN NEW;
|
||||
END
|
||||
$$ LANGUAGE PLPGSQL;
|
||||
CREATE TRIGGER insert_trigger
|
||||
BEFORE INSERT ON test_trigger_src_tbl
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE tri_insert_func();
|
||||
\! @abs_bindir@/gs_dump dump_with_trigger -p @portstring@ -f @abs_bindir@/dump_with_trigger.sql -w -c -t test_trigger_src_tbl >/dev/null 2>&1; echo $?
|
||||
0
|
||||
drop table test_trigger_src_tbl;
|
||||
\! @abs_bindir@/gsql -ddump_with_trigger -p @portstring@ -f "@abs_bindir@/dump_with_trigger.sql";
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
--?.*
|
||||
DROP TABLE
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
SET
|
||||
CREATE TABLE
|
||||
ALTER TABLE
|
||||
CREATE TRIGGER
|
||||
--?.*
|
||||
-- dump_with_trigger check
|
||||
SELECT tgname AS trigger_name,
|
||||
tgisinternal AS internal,
|
||||
tgtype::varchar AS trigger_type,
|
||||
tgrelid::regclass AS table_name,
|
||||
tgfoid::regproc AS function_name,
|
||||
tgattr AS trigger_columns,
|
||||
tgqual AS qualifier
|
||||
FROM pg_trigger order by 1;
|
||||
trigger_name | internal | trigger_type | table_name | function_name | trigger_columns | qualifier
|
||||
----------------+----------+--------------+----------------------+-----------------+-----------------+-----------
|
||||
insert_trigger | f | 7 | test_trigger_src_tbl | tri_insert_func | |
|
||||
(1 row)
|
||||
|
||||
\c postgres
|
||||
drop database dump_with_trigger;
|
||||
@ -63,7 +63,7 @@ test: set_transaction_test
|
||||
test: select_into_user_defined_variables
|
||||
test: select_into_file
|
||||
|
||||
test: gs_dump_package trigger_dump gs_dump_synonym dump_trigger_definer
|
||||
test: gs_dump_package trigger_dump gs_dump_synonym dump_trigger_definer dump_with_trigger
|
||||
test: out_param_func out_param_func_overload
|
||||
#test: sqlcode_cursor
|
||||
test: gs_dump_tableconstraint
|
||||
|
||||
Reference in New Issue
Block a user