修复审计中删除触发器记录object_name的乱码问题
This commit is contained in:
@ -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: {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user