diff --git a/src/gausskernel/process/tcop/auditfuncs.cpp b/src/gausskernel/process/tcop/auditfuncs.cpp index 4d62d6d9c..7344038cc 100644 --- a/src/gausskernel/process/tcop/auditfuncs.cpp +++ b/src/gausskernel/process/tcop/auditfuncs.cpp @@ -1157,7 +1157,7 @@ static void pgaudit_process_drop_objects(Node* node, const char* querystring) pgaudit_ddl_schema(objectname, querystring); } break; case OBJECT_TRIGGER: { - objectname = strVal(lfirst(list_tail(names))); + objectname = strVal(lfirst(list_tail((List*)lfirst(list_tail(names))))); pgaudit_ddl_trigger(objectname, querystring); } break; case OBJECT_FUNCTION: { diff --git a/src/test/regress/input/hw_audit_detailinfo.source b/src/test/regress/input/hw_audit_detailinfo.source index edebe4d69..ea277094a 100644 --- a/src/test/regress/input/hw_audit_detailinfo.source +++ b/src/test/regress/input/hw_audit_detailinfo.source @@ -32,12 +32,39 @@ SELECT detail_info FROM pg_query_audit('2021-12-17 9:30:00', '2031-12-12 22:00:0 -- DQL \! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_dml_state_select=1" > /dev/null 2>&1 +\! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_system_object=127" > /dev/null 2>&1 select pg_sleep(1); show audit_dml_state_select; create table t3(id int); select * from t3; SELECT detail_info FROM pg_query_audit('2021-12-17 9:30:00', '2031-12-12 22:00:00') where type='dml_action_select' and object_name='t3'; +-- trigger test +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(); +ALTER TRIGGER insert_trigger ON test_trigger_src_tbl RENAME TO +insert_trigger_renamed; +DROP TRIGGER insert_trigger_renamed ON test_trigger_src_tbl; +DROP FUNCTION tri_insert_func(); +DROP TABLE test_trigger_src_tbl; +DROP TABLE test_trigger_des_tbl; +SELECT object_name FROM pg_query_audit('2021-12-17 9:30:00', '2031-12-12 22:00:00') where object_name like '%insert_trigger%'; + +\! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_system_object" > /dev/null 2>&1 + -- 关闭xid开关 \! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_xid_info=0" > /dev/null 2>&1 \! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_dml_state=0" > /dev/null 2>&1 diff --git a/src/test/regress/output/hw_audit_detailinfo.source b/src/test/regress/output/hw_audit_detailinfo.source index 514db5c58..a177dd7f5 100644 --- a/src/test/regress/output/hw_audit_detailinfo.source +++ b/src/test/regress/output/hw_audit_detailinfo.source @@ -76,6 +76,7 @@ SELECT detail_info FROM pg_query_audit('2021-12-17 9:30:00', '2031-12-12 22:00:0 -- DQL \! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_dml_state_select=1" > /dev/null 2>&1 +\! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_system_object=127" > /dev/null 2>&1 select pg_sleep(1); pg_sleep ---------- @@ -100,6 +101,37 @@ SELECT detail_info FROM pg_query_audit('2021-12-17 9:30:00', '2031-12-12 22:00:0 xid=XIDNUM, select * from t3; (1 row) +-- trigger test +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(); +ALTER TRIGGER insert_trigger ON test_trigger_src_tbl RENAME TO +insert_trigger_renamed; +DROP TRIGGER insert_trigger_renamed ON test_trigger_src_tbl; +DROP FUNCTION tri_insert_func(); +DROP TABLE test_trigger_src_tbl; +DROP TABLE test_trigger_des_tbl; +SELECT object_name FROM pg_query_audit('2021-12-17 9:30:00', '2031-12-12 22:00:00') where object_name like '%insert_trigger%'; + object_name +------------------------ + insert_trigger + insert_trigger + insert_trigger_renamed +(3 rows) + +\! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_system_object" > /dev/null 2>&1 -- 关闭xid开关 \! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_xid_info=0" > /dev/null 2>&1 \! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1/ -c "audit_dml_state=0" > /dev/null 2>&1