1
1
-- Test prepared transactions. When two-phase-commit is enabled, transactions are
2
2
-- decoded at PREPARE time rather than at COMMIT PREPARED time.
3
3
SET synchronous_commit = on;
4
- SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
4
+ SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding', false, true );
5
5
?column?
6
6
----------
7
7
init
@@ -15,14 +15,14 @@ BEGIN;
15
15
INSERT INTO test_prepared1 VALUES (1);
16
16
INSERT INTO test_prepared1 VALUES (2);
17
17
-- should show nothing because the xact has not been prepared yet.
18
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
18
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
19
19
data
20
20
------
21
21
(0 rows)
22
22
23
23
PREPARE TRANSACTION 'test_prepared#1';
24
24
-- should show both the above inserts and the PREPARE TRANSACTION.
25
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
25
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
26
26
data
27
27
----------------------------------------------------
28
28
BEGIN
@@ -32,7 +32,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two
32
32
(4 rows)
33
33
34
34
COMMIT PREPARED 'test_prepared#1';
35
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
35
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
36
36
data
37
37
-----------------------------------
38
38
COMMIT PREPARED 'test_prepared#1'
@@ -42,7 +42,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two
42
42
BEGIN;
43
43
INSERT INTO test_prepared1 VALUES (3);
44
44
PREPARE TRANSACTION 'test_prepared#2';
45
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
45
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
46
46
data
47
47
----------------------------------------------------
48
48
BEGIN
@@ -51,7 +51,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two
51
51
(3 rows)
52
52
53
53
ROLLBACK PREPARED 'test_prepared#2';
54
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
54
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
55
55
data
56
56
-------------------------------------
57
57
ROLLBACK PREPARED 'test_prepared#2'
@@ -74,7 +74,7 @@ WHERE locktype = 'relation'
74
74
(2 rows)
75
75
76
76
-- The insert should show the newly altered column but not the DDL.
77
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
77
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
78
78
data
79
79
-------------------------------------------------------------------------
80
80
BEGIN
@@ -89,7 +89,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two
89
89
-- the ALTER will stop us inserting into the other one.
90
90
--
91
91
INSERT INTO test_prepared2 VALUES (5);
92
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
92
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
93
93
data
94
94
----------------------------------------------------
95
95
BEGIN
@@ -98,7 +98,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two
98
98
(3 rows)
99
99
100
100
COMMIT PREPARED 'test_prepared#3';
101
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
101
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
102
102
data
103
103
-----------------------------------
104
104
COMMIT PREPARED 'test_prepared#3'
@@ -107,7 +107,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two
107
107
-- make sure stuff still works
108
108
INSERT INTO test_prepared1 VALUES (6);
109
109
INSERT INTO test_prepared2 VALUES (7);
110
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
110
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
111
111
data
112
112
--------------------------------------------------------------------
113
113
BEGIN
@@ -138,7 +138,7 @@ WHERE locktype = 'relation'
138
138
139
139
-- The above CLUSTER command shouldn't cause a timeout on 2pc decoding.
140
140
SET statement_timeout = '180s';
141
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
141
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
142
142
data
143
143
---------------------------------------------------------------------------
144
144
BEGIN
@@ -150,7 +150,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two
150
150
RESET statement_timeout;
151
151
COMMIT PREPARED 'test_prepared_lock';
152
152
-- consume the commit
153
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
153
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
154
154
data
155
155
--------------------------------------
156
156
COMMIT PREPARED 'test_prepared_lock'
@@ -166,7 +166,7 @@ INSERT INTO test_prepared_savepoint VALUES (2);
166
166
ROLLBACK TO SAVEPOINT test_savepoint;
167
167
PREPARE TRANSACTION 'test_prepared_savepoint';
168
168
-- should show only 1, not 2
169
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
169
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
170
170
data
171
171
------------------------------------------------------------
172
172
BEGIN
@@ -176,7 +176,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two
176
176
177
177
COMMIT PREPARED 'test_prepared_savepoint';
178
178
-- consume the commit
179
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
179
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
180
180
data
181
181
-------------------------------------------
182
182
COMMIT PREPARED 'test_prepared_savepoint'
@@ -187,14 +187,14 @@ BEGIN;
187
187
INSERT INTO test_prepared1 VALUES (20);
188
188
PREPARE TRANSACTION 'test_prepared_nodecode';
189
189
-- should show nothing
190
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
190
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
191
191
data
192
192
------
193
193
(0 rows)
194
194
195
195
COMMIT PREPARED 'test_prepared_nodecode';
196
196
-- should be decoded now
197
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
197
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
198
198
data
199
199
---------------------------------------------------------------------
200
200
BEGIN
@@ -207,7 +207,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two
207
207
DROP TABLE test_prepared1;
208
208
DROP TABLE test_prepared2;
209
209
-- show results. There should be nothing to show
210
- SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'two-phase-commit', '1', ' include-xids', '0', 'skip-empty-xacts', '1');
210
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
211
211
data
212
212
------
213
213
(0 rows)
0 commit comments