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

Commit4e20674

Browse files
Add isolation tests for DROP INDEX CONCURRENTLY.
Backpatch to 9.2 to ensure bugs are fixed.Abhijit Menon-Sen
1 parentff3f9c8 commit4e20674

File tree

5 files changed

+116
-0
lines changed

5 files changed

+116
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
Parsed test spec with 3 sessions
2+
3+
starting permutation: noseq prepi preps begin explaini explains select2 drop insert2 end2 selecti selects end
4+
step noseq: SET enable_seqscan = false;
5+
step prepi: PREPARE getrow_idx AS SELECT * FROM test_dc WHERE data=34;
6+
step preps: PREPARE getrow_seq AS SELECT * FROM test_dc WHERE data::text=34::text;
7+
step begin: BEGIN;
8+
step explaini: EXPLAIN (COSTS OFF) EXECUTE getrow_idx;
9+
QUERY PLAN
10+
11+
Index Scan using test_dc_data on test_dc
12+
Index Cond: (data = 34)
13+
step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq;
14+
QUERY PLAN
15+
16+
Seq Scan on test_dc
17+
Filter: ((data)::text = '34'::text)
18+
step select2: SELECT * FROM test_dc WHERE data=34;
19+
id data
20+
21+
34 34
22+
step drop: DROP INDEX CONCURRENTLY test_dc_data; <waiting ...>
23+
step insert2: INSERT INTO test_dc(data) SELECT * FROM generate_series(1, 100);
24+
step end2: COMMIT;
25+
step selecti: EXECUTE getrow_idx;
26+
id data
27+
28+
34 34
29+
134 34
30+
step selects: EXECUTE getrow_seq;
31+
id data
32+
33+
34 34
34+
134 34
35+
step end: COMMIT;
36+
step drop: <... completed>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Parsed test spec with 3 sessions
2+
3+
starting permutation: explain drop cancel rollback droptab selecti dropi
4+
step explain: EXPLAIN (COSTS OFF) SELECT * FROM test_dc WHERE data=34343;
5+
QUERY PLAN
6+
7+
Bitmap Heap Scan on test_dc
8+
Recheck Cond: (data = 34343)
9+
-> Bitmap Index Scan on test_dc_data
10+
Index Cond: (data = 34343)
11+
step drop: DROP INDEX CONCURRENTLY test_dc_data; <waiting ...>
12+
step cancel: SELECT pg_cancel_backend(pid) FROM pg_stat_activity WHERE query = 'DROP INDEX CONCURRENTLY test_dc_data;';
13+
pg_cancel_backend
14+
15+
t
16+
step drop: <... completed>
17+
error in steps cancel drop: ERROR: canceling statement due to user request
18+
step rollback: ROLLBACK;
19+
step droptab: DROP TABLE test_dc;
20+
step selecti: SELECT indexrelid::regclass, indisvalid, indisready FROM pg_index WHERE indexrelid = 'test_dc_data'::regclass;
21+
indexrelid indisvalid indisready
22+
23+
test_dc_data f f
24+
step dropi: DROP INDEX test_dc_data;

‎src/test/isolation/isolation_schedule

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@ test: fk-contention
1414
test: fk-deadlock
1515
test: fk-deadlock2
1616
test: eval-plan-qual
17+
test: drop-index-concurrently-1
18+
test: drop-index-concurrently-2
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
setup
2+
{
3+
CREATETABLEtest_dc(idserialprimarykey,dataint);
4+
INSERTINTOtest_dc(data)SELECT*FROMgenerate_series(1,100);
5+
CREATEINDEXtest_dc_dataONtest_dc(data);
6+
}
7+
8+
teardown
9+
{
10+
DROPTABLEtest_dc;
11+
}
12+
13+
session"s1"
14+
step"noseq" {SETenable_seqscan=false; }
15+
step"prepi" {PREPAREgetrow_idxASSELECT*FROMtest_dcWHEREdata=34; }
16+
step"preps" {PREPAREgetrow_seqASSELECT*FROMtest_dcWHEREdata::text=34::text; }
17+
step"begin" {BEGIN; }
18+
step"explaini" {EXPLAIN (COSTSOFF)EXECUTEgetrow_idx; }
19+
step"explains" {EXPLAIN (COSTSOFF)EXECUTEgetrow_seq; }
20+
step"selecti" {EXECUTEgetrow_idx; }
21+
step"selects" {EXECUTEgetrow_seq; }
22+
step"end" {COMMIT; }
23+
24+
session"s2"
25+
setup {BEGIN; }
26+
step"select2" {SELECT*FROMtest_dcWHEREdata=34; }
27+
step"insert2" {INSERTINTOtest_dc(data)SELECT*FROMgenerate_series(1,100); }
28+
step"end2" {COMMIT; }
29+
30+
session"s3"
31+
step"drop" {DROPINDEXCONCURRENTLYtest_dc_data; }
32+
33+
permutation"noseq""prepi""preps""begin""explaini""explains""select2""drop""insert2""end2""selecti""selects""end"
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
setup
2+
{
3+
CREATETABLEtest_dc(idserialprimarykey,dataint);
4+
CREATEINDEXtest_dc_dataONtest_dc(data);
5+
}
6+
7+
session"s1"
8+
setup {BEGIN; }
9+
step"explain" {EXPLAIN (COSTSOFF)SELECT*FROMtest_dcWHEREdata=34343; }
10+
step"rollback" {ROLLBACK; }
11+
step"droptab" {DROPTABLEtest_dc; }
12+
step"selecti" {SELECTindexrelid::regclass,indisvalid,indisreadyFROMpg_indexWHEREindexrelid='test_dc_data'::regclass; }
13+
step"dropi" {DROPINDEXtest_dc_data; }
14+
15+
session"s2"
16+
step"drop" {DROPINDEXCONCURRENTLYtest_dc_data; }
17+
18+
session"s3"
19+
step"cancel" {SELECTpg_cancel_backend(pid)FROMpg_stat_activityWHEREquery='DROP INDEX CONCURRENTLY test_dc_data;'; }
20+
21+
permutation"explain""drop""cancel""rollback""droptab""selecti""dropi"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp