Skip to content

Commit a180c2b

Browse files
committed
Stabilize test_decoding touching with sequences
Some of the test_decoding regression tests are unstable due to modifying a sequence. The first increment of a sequence after a checkpoint is always logged (and thus decoded), which makes the output unpredictable. The runs are usually much shorter than a checkpoint internal, so these failures are rare, but we've seen a couple of them on animals that are either slow or are running with valgrind/clobber cache/... Fixed by skipping sequence decoding in most tests, with the exception of the test aimed at testing decoding of sequences. Reported-by: Amita Kapila Discussion: https://postgr.es/m/d045f3c2-6cfb-06d3-5540-e63c320df8bc@enterprisedb.com
1 parent 54c72eb commit a180c2b

File tree

10 files changed

+44
-44
lines changed

10 files changed

+44
-44
lines changed

contrib/test_decoding/expected/ddl.out

Lines changed: 13 additions & 13 deletions
Large diffs are not rendered by default.

contrib/test_decoding/expected/decoding_in_xact.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
6868

6969
COMMIT;
7070
INSERT INTO nobarf(data) VALUES('3');
71-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
71+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
7272
data
7373
-----------------------------------------------------------
7474
BEGIN

contrib/test_decoding/expected/replorigin.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ SELECT pg_replication_origin_xact_setup('0/aabbccdd', '2013-01-01 00:00');
110110
(1 row)
111111

112112
INSERT INTO target_tbl(data)
113-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
113+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
114114
COMMIT;
115115
-- check replication progress for the session is correct
116116
SELECT pg_replication_origin_session_progress(false);
@@ -154,14 +154,14 @@ SELECT pg_replication_origin_progress('regress_test_decoding: regression_slot',
154154
SELECT pg_replication_origin_session_reset();
155155
ERROR: no replication origin is configured
156156
-- and magically the replayed xact will be filtered!
157-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
157+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
158158
data
159159
------
160160
(0 rows)
161161

162162
--but new original changes still show up
163163
INSERT INTO origin_tbl(data) VALUES ('will be replicated');
164-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
164+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
165165
data
166166
--------------------------------------------------------------------------------
167167
BEGIN
@@ -227,7 +227,7 @@ SELECT local_id, external_id,
227227
1 | regress_test_decoding: regression_slot_no_lsn | f | t
228228
(1 row)
229229

230-
SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0');
230+
SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0', 'include-sequences', '0');
231231
data
232232
-------------------------------------------------------------------------------------
233233
BEGIN

contrib/test_decoding/expected/rewrite.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ INSERT INTO replication_example(somedata, testcolumn1, testcolumn3) VALUES (7, 5
115115
COMMIT;
116116
-- make old files go away
117117
CHECKPOINT;
118-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
118+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
119119
data
120120
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
121121
BEGIN

contrib/test_decoding/expected/slot.out

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'in
107107
COMMIT
108108
(7 rows)
109109

110-
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
110+
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
111111
data
112112
---------------------------------------------------------------------------------------------------------
113113
BEGIN
@@ -132,15 +132,15 @@ SELECT :'wal_lsn' = :'end_lsn';
132132
t
133133
(1 row)
134134

135-
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
135+
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
136136
data
137137
---------------------------------------------------------------------------------------------------------
138138
BEGIN
139139
table public.replication_example: INSERT: id[integer]:6 somedata[integer]:1 text[character varying]:'6'
140140
COMMIT
141141
(3 rows)
142142

143-
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
143+
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
144144
data
145145
------
146146
(0 rows)

contrib/test_decoding/sql/ddl.sql

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ SELECT pg_drop_replication_slot('regression_slot');
1919

2020
-- check that we're detecting a streaming rep slot used for logical decoding
2121
SELECT 'init' FROM pg_create_physical_replication_slot('repl');
22-
SELECT data FROM pg_logical_slot_get_changes('repl', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
22+
SELECT data FROM pg_logical_slot_get_changes('repl', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
2323
SELECT pg_drop_replication_slot('repl');
2424

2525

@@ -68,7 +68,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
6868

6969
ALTER TABLE replication_example ALTER COLUMN somenum TYPE int4 USING (somenum::int4);
7070
-- check that this doesn't produce any changes from the heap rewrite
71-
SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
71+
SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
7272

7373
INSERT INTO replication_example(somedata, somenum) VALUES (5, 1);
7474

@@ -82,7 +82,7 @@ INSERT INTO replication_example(somedata, somenum, zaphod1) VALUES (6, 4, 2);
8282
COMMIT;
8383

8484
-- show changes
85-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
85+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
8686

8787
-- ON CONFLICT DO UPDATE support
8888
BEGIN;
@@ -91,7 +91,7 @@ INSERT INTO replication_example(id, somedata, somenum) SELECT i, i, i FROM gener
9191
COMMIT;
9292

9393
/* display results */
94-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
94+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
9595

9696
CREATE TABLE tr_unique(id2 serial unique NOT NULL, data int);
9797
INSERT INTO tr_unique(data) VALUES(10);
@@ -104,7 +104,7 @@ INSERT INTO tr_pkey(data) VALUES(1);
104104
DELETE FROM tr_pkey;
105105

106106
/* display results */
107-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
107+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
108108

109109
/*
110110
* check that disk spooling works (also for logical messages)
@@ -136,7 +136,7 @@ DROP TABLE spoolme;
136136
COMMIT;
137137

138138
SELECT data
139-
FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1')
139+
FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0')
140140
WHERE data ~ 'UPDATE';
141141

142142
-- check that a large, spooled, upsert works
@@ -145,7 +145,7 @@ SELECT g.i, -g.i FROM generate_series(8000, 12000) g(i)
145145
ON CONFLICT(id) DO UPDATE SET data = EXCLUDED.data;
146146

147147
SELECT substring(data, 1, 29), count(*)
148-
FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1') WITH ORDINALITY
148+
FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0') WITH ORDINALITY
149149
GROUP BY 1
150150
ORDER BY min(ordinality);
151151

@@ -202,7 +202,7 @@ RELEASE SAVEPOINT subtop;
202202
INSERT INTO tr_sub(path) VALUES ('2-top-#1');
203203
COMMIT;
204204

205-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
205+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
206206

207207
-- make sure rollbacked subtransactions aren't decoded
208208
BEGIN;
@@ -215,7 +215,7 @@ ROLLBACK TO SAVEPOINT b;
215215
INSERT INTO tr_sub(path) VALUES ('3-top-2-#2');
216216
COMMIT;
217217

218-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
218+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
219219

220220
-- test whether a known, but not yet logged toplevel xact, followed by a
221221
-- subxact commit is handled correctly
@@ -234,7 +234,7 @@ INSERT INTO tr_sub(path) VALUES ('5-top-1-#1');
234234
COMMIT;
235235

236236

237-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
237+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
238238

239239
-- check that DDL in aborted subtransactions handled correctly
240240
CREATE TABLE tr_sub_ddl(data int);
@@ -247,7 +247,7 @@ ALTER TABLE tr_sub_ddl ALTER COLUMN data TYPE bigint;
247247
INSERT INTO tr_sub_ddl VALUES(43);
248248
COMMIT;
249249

250-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
250+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
251251

252252

253253
/*
@@ -410,10 +410,10 @@ WHERE id = 1;
410410
-- make sure we decode correctly even if the toast table is gone
411411
DROP TABLE toasttable;
412412

413-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
413+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
414414

415415
-- done, free logical replication slot
416-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
416+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
417417

418418
SELECT pg_drop_replication_slot('regression_slot');
419419

contrib/test_decoding/sql/decoding_in_xact.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
3636
COMMIT;
3737

3838
INSERT INTO nobarf(data) VALUES('3');
39-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
39+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
4040

4141
SELECT 'stop' FROM pg_drop_replication_slot('regression_slot');

contrib/test_decoding/sql/replorigin.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ BEGIN;
6060
-- setup transaction origin
6161
SELECT pg_replication_origin_xact_setup('0/aabbccdd', '2013-01-01 00:00');
6262
INSERT INTO target_tbl(data)
63-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
63+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
6464
COMMIT;
6565

6666
-- check replication progress for the session is correct
@@ -79,11 +79,11 @@ SELECT pg_replication_origin_progress('regress_test_decoding: regression_slot',
7979
SELECT pg_replication_origin_session_reset();
8080

8181
-- and magically the replayed xact will be filtered!
82-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
82+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
8383

8484
--but new original changes still show up
8585
INSERT INTO origin_tbl(data) VALUES ('will be replicated');
86-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
86+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
8787

8888
SELECT pg_drop_replication_slot('regression_slot');
8989
SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot');
@@ -114,7 +114,7 @@ SELECT local_id, external_id,
114114
remote_lsn <> '0/0' AS valid_remote_lsn,
115115
local_lsn <> '0/0' AS valid_local_lsn
116116
FROM pg_replication_origin_status;
117-
SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0');
117+
SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0', 'include-sequences', '0');
118118
-- Clean up
119119
SELECT pg_replication_origin_session_reset();
120120
SELECT pg_drop_replication_slot('regression_slot_no_lsn');

contrib/test_decoding/sql/rewrite.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ COMMIT;
9090
-- make old files go away
9191
CHECKPOINT;
9292

93-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
93+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
9494

9595
-- trigger repeated rewrites of a system catalog with a toast table,
9696
-- that previously was buggy: 20180914021046.oi7dm4ra3ot2g2kt@alap3.anarazel.de

contrib/test_decoding/sql/slot.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot2', 'test_
5151
INSERT INTO replication_example(somedata, text) VALUES (1, 3);
5252

5353
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
54-
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
54+
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
5555

5656
INSERT INTO replication_example(somedata, text) VALUES (1, 4);
5757
INSERT INTO replication_example(somedata, text) VALUES (1, 5);
@@ -65,8 +65,8 @@ SELECT slot_name FROM pg_replication_slot_advance('regression_slot2', pg_current
6565

6666
SELECT :'wal_lsn' = :'end_lsn';
6767

68-
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
69-
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
68+
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
69+
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
7070

7171
DROP TABLE replication_example;
7272

0 commit comments

Comments
 (0)