Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit77216ca

Browse files
committed
Add tests for session_replication_role
This was hardly tested at all. The trigger case was lightly tested bythe logical replication tests, but rules and event triggers were nottested at all.
1 parent2082b37 commit77216ca

File tree

6 files changed

+115
-13
lines changed

6 files changed

+115
-13
lines changed

‎src/test/regress/expected/event_trigger.out

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,34 @@ create event trigger regress_event_trigger_noperms on ddl_command_start
8888
ERROR: permission denied to create event trigger "regress_event_trigger_noperms"
8989
HINT: Must be superuser to create an event trigger.
9090
reset role;
91-
-- all OK
92-
alter event trigger regress_event_trigger enable replica;
93-
alter event trigger regress_event_trigger enable always;
94-
alter event trigger regress_event_trigger enable;
91+
-- test enabling and disabling
9592
alter event trigger regress_event_trigger disable;
96-
-- regress_event_trigger2 and regress_event_trigger_end should fire, but not
97-
-- regress_event_trigger
93+
-- fires _trigger2 and _trigger_end should fire, but not _trigger
9894
create table event_trigger_fire1 (a int);
9995
NOTICE: test_event_trigger: ddl_command_start CREATE TABLE
10096
NOTICE: test_event_trigger: ddl_command_end CREATE TABLE
97+
alter event trigger regress_event_trigger enable;
98+
set session_replication_role = replica;
99+
-- fires nothing
100+
create table event_trigger_fire2 (a int);
101+
alter event trigger regress_event_trigger enable replica;
102+
-- fires only _trigger
103+
create table event_trigger_fire3 (a int);
104+
NOTICE: test_event_trigger: ddl_command_start CREATE TABLE
105+
alter event trigger regress_event_trigger enable always;
106+
-- fires only _trigger
107+
create table event_trigger_fire4 (a int);
108+
NOTICE: test_event_trigger: ddl_command_start CREATE TABLE
109+
reset session_replication_role;
110+
-- fires all three
111+
create table event_trigger_fire5 (a int);
112+
NOTICE: test_event_trigger: ddl_command_start CREATE TABLE
113+
NOTICE: test_event_trigger: ddl_command_start CREATE TABLE
114+
NOTICE: test_event_trigger: ddl_command_end CREATE TABLE
115+
-- clean up
116+
alter event trigger regress_event_trigger disable;
117+
drop table event_trigger_fire2, event_trigger_fire3, event_trigger_fire4, event_trigger_fire5;
118+
NOTICE: test_event_trigger: ddl_command_end DROP TABLE
101119
-- regress_event_trigger_end should fire on these commands
102120
grant all on table event_trigger_fire1 to public;
103121
NOTICE: test_event_trigger: ddl_command_end GRANT

‎src/test/regress/expected/rules.out

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3233,3 +3233,37 @@ CREATE RULE parted_table_insert AS ON INSERT to parted_table
32333233
DO INSTEAD INSERT INTO parted_table_1 VALUES (NEW.*);
32343234
ALTER RULE parted_table_insert ON parted_table RENAME TO parted_table_insert_redirect;
32353235
DROP TABLE parted_table;
3236+
--
3237+
-- Test enabling/disabling
3238+
--
3239+
CREATE TABLE ruletest1 (a int);
3240+
CREATE TABLE ruletest2 (b int);
3241+
CREATE RULE rule1 AS ON INSERT TO ruletest1
3242+
DO INSTEAD INSERT INTO ruletest2 VALUES (NEW.*);
3243+
INSERT INTO ruletest1 VALUES (1);
3244+
ALTER TABLE ruletest1 DISABLE RULE rule1;
3245+
INSERT INTO ruletest1 VALUES (2);
3246+
ALTER TABLE ruletest1 ENABLE RULE rule1;
3247+
SET session_replication_role = replica;
3248+
INSERT INTO ruletest1 VALUES (3);
3249+
ALTER TABLE ruletest1 ENABLE REPLICA RULE rule1;
3250+
INSERT INTO ruletest1 VALUES (4);
3251+
RESET session_replication_role;
3252+
INSERT INTO ruletest1 VALUES (5);
3253+
SELECT * FROM ruletest1;
3254+
a
3255+
---
3256+
2
3257+
3
3258+
5
3259+
(3 rows)
3260+
3261+
SELECT * FROM ruletest2;
3262+
b
3263+
---
3264+
1
3265+
4
3266+
(2 rows)
3267+
3268+
DROP TABLE ruletest1;
3269+
DROP TABLE ruletest2;

‎src/test/regress/expected/triggers.out

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,12 @@ insert into trigtest default values;
569569
alter table trigtest enable trigger trigtest_a_stmt_tg;
570570
insert into trigtest default values;
571571
NOTICE: trigtest INSERT AFTER STATEMENT
572+
set session_replication_role = replica;
573+
insert into trigtest default values; -- does not trigger
574+
alter table trigtest enable always trigger trigtest_a_stmt_tg;
575+
insert into trigtest default values; -- now it does
576+
NOTICE: trigtest INSERT AFTER STATEMENT
577+
reset session_replication_role;
572578
insert into trigtest2 values(1);
573579
insert into trigtest2 values(2);
574580
delete from trigtest where i=2;
@@ -595,7 +601,9 @@ select * from trigtest;
595601
3
596602
4
597603
5
598-
(3 rows)
604+
6
605+
7
606+
(5 rows)
599607

600608
drop table trigtest2;
601609
drop table trigtest;

‎src/test/regress/sql/event_trigger.sql

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,26 @@ create event trigger regress_event_trigger_noperms on ddl_command_start
8989
execute procedure test_event_trigger();
9090
reset role;
9191

92-
-- all OK
92+
-- test enabling and disabling
93+
alter event trigger regress_event_trigger disable;
94+
-- fires _trigger2 and _trigger_end should fire, but not _trigger
95+
createtableevent_trigger_fire1 (aint);
96+
alter event trigger regress_event_trigger enable;
97+
set session_replication_role= replica;
98+
-- fires nothing
99+
createtableevent_trigger_fire2 (aint);
93100
alter event trigger regress_event_trigger enable replica;
101+
-- fires only _trigger
102+
createtableevent_trigger_fire3 (aint);
94103
alter event trigger regress_event_trigger enable always;
95-
alter event trigger regress_event_trigger enable;
104+
-- fires only _trigger
105+
createtableevent_trigger_fire4 (aint);
106+
reset session_replication_role;
107+
-- fires all three
108+
createtableevent_trigger_fire5 (aint);
109+
-- clean up
96110
alter event trigger regress_event_trigger disable;
97-
98-
-- regress_event_trigger2 and regress_event_trigger_end should fire, but not
99-
-- regress_event_trigger
100-
createtableevent_trigger_fire1 (aint);
111+
droptable event_trigger_fire2, event_trigger_fire3, event_trigger_fire4, event_trigger_fire5;
101112

102113
-- regress_event_trigger_end should fire on these commands
103114
grant allon table event_trigger_fire1 to public;

‎src/test/regress/sql/rules.sql

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,3 +1177,29 @@ CREATE RULE parted_table_insert AS ON INSERT to parted_table
11771177
DO INSTEADINSERT INTO parted_table_1VALUES (NEW.*);
11781178
ALTERRULE parted_table_insertON parted_table RENAME TO parted_table_insert_redirect;
11791179
DROPTABLE parted_table;
1180+
1181+
--
1182+
-- Test enabling/disabling
1183+
--
1184+
CREATETABLEruletest1 (aint);
1185+
CREATETABLEruletest2 (bint);
1186+
1187+
CREATERULErule1ASON INSERT TO ruletest1
1188+
DO INSTEADINSERT INTO ruletest2VALUES (NEW.*);
1189+
1190+
INSERT INTO ruletest1VALUES (1);
1191+
ALTERTABLE ruletest1 DISABLE RULE rule1;
1192+
INSERT INTO ruletest1VALUES (2);
1193+
ALTERTABLE ruletest1 ENABLE RULE rule1;
1194+
SET session_replication_role= replica;
1195+
INSERT INTO ruletest1VALUES (3);
1196+
ALTERTABLE ruletest1 ENABLE REPLICA RULE rule1;
1197+
INSERT INTO ruletest1VALUES (4);
1198+
RESET session_replication_role;
1199+
INSERT INTO ruletest1VALUES (5);
1200+
1201+
SELECT*FROM ruletest1;
1202+
SELECT*FROM ruletest2;
1203+
1204+
DROPTABLE ruletest1;
1205+
DROPTABLE ruletest2;

‎src/test/regress/sql/triggers.sql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,11 @@ alter table trigtest disable trigger user;
401401
insert into trigtest defaultvalues;
402402
altertable trigtest enable trigger trigtest_a_stmt_tg;
403403
insert into trigtest defaultvalues;
404+
set session_replication_role= replica;
405+
insert into trigtest defaultvalues;-- does not trigger
406+
altertable trigtest enable always trigger trigtest_a_stmt_tg;
407+
insert into trigtest defaultvalues;-- now it does
408+
reset session_replication_role;
404409
insert into trigtest2values(1);
405410
insert into trigtest2values(2);
406411
deletefrom trigtestwhere i=2;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp