!3432 修复审计日志乱码bug

Merge pull request !3432 from Cross-罗/fix_audit
This commit is contained in:
opengauss-bot
2023-05-11 09:29:30 +00:00
committed by Gitee
3 changed files with 60 additions and 1 deletions

View File

@ -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: {

View File

@ -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

View File

@ -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