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

Commit8f32299

Browse files
committed
Detect unused steps in isolation specs and do some cleanup
This is useful for developers to find out if an isolation spec isover-engineered or if it needs more work by warning at the end of atest run if a step is not used, generating a failure with extra diffs.While on it, clean up all the specs which include steps not used in anypermutations to simplify them.This is a backpatch of989d23b and06fdc4e, as it is becoming useful tomake all the branches consistent for an upcoming patch that will improvethe output generated by isolationtester.Author: Michael PaquierReviewed-by: Asim Praveen, Melanie PlagemanDiscussion:https://postgr.es/m/20190819080820.GG18166@paquier.xyzDiscussion:https://postgr.es/m/794820.1623872009@sss.pgh.pa.usBackpatch-through: 9.6
1 parent834cb72 commit8f32299

14 files changed

+40
-42
lines changed

‎contrib/test_decoding/specs/concurrent_ddl_dml.spec

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ setup { SET synchronous_commit=on; }
1919
step"s1_init" {SELECT'init'FROMpg_create_logical_replication_slot('isolation_slot','test_decoding'); }
2020
step"s1_begin" {BEGIN; }
2121
step"s1_insert_tbl1" {INSERTINTOtbl1 (val1,val2)VALUES (1,1); }
22-
step"s1_insert_tbl1_3col" {INSERTINTOtbl1 (val1,val2,val3)VALUES (1,1,1); }
2322
step"s1_insert_tbl2" {INSERTINTOtbl2 (val1,val2)VALUES (1,1); }
2423
step"s1_insert_tbl2_3col" {INSERTINTOtbl2 (val1,val2,val3)VALUES (1,1,1); }
2524
step"s1_commit" {COMMIT; }
@@ -29,15 +28,8 @@ setup { SET synchronous_commit=on; }
2928

3029
step"s2_alter_tbl1_float" {ALTERTABLEtbl1ALTERCOLUMNval2TYPEfloat; }
3130
step"s2_alter_tbl1_char" {ALTERTABLEtbl1ALTERCOLUMNval2TYPEcharactervarying; }
32-
step"s2_alter_tbl1_text" {ALTERTABLEtbl1ALTERCOLUMNval2TYPEtext; }
3331
step"s2_alter_tbl1_boolean" {ALTERTABLEtbl1ALTERCOLUMNval2TYPEboolean; }
3432

35-
step"s2_alter_tbl1_add_int" {ALTERTABLEtbl1ADDCOLUMNval3INTEGER; }
36-
step"s2_alter_tbl1_add_float" {ALTERTABLEtbl1ADDCOLUMNval3FLOAT; }
37-
step"s2_alter_tbl1_add_char" {ALTERTABLEtbl1ADDCOLUMNval3charactervarying; }
38-
step"s2_alter_tbl1_add_boolean" {ALTERTABLEtbl1ADDCOLUMNval3BOOLEAN; }
39-
step"s2_alter_tbl1_add_text" {ALTERTABLEtbl1ADDCOLUMNval3TEXT; }
40-
4133
step"s2_alter_tbl2_float" {ALTERTABLEtbl2ALTERCOLUMNval2TYPEfloat; }
4234
step"s2_alter_tbl2_char" {ALTERTABLEtbl2ALTERCOLUMNval2TYPEcharactervarying; }
4335
step"s2_alter_tbl2_text" {ALTERTABLEtbl2ALTERCOLUMNval2TYPEtext; }
@@ -46,7 +38,6 @@ step "s2_alter_tbl2_boolean" { ALTER TABLE tbl2 ALTER COLUMN val2 TYPE boolean;
4638
step"s2_alter_tbl2_add_int" {ALTERTABLEtbl2ADDCOLUMNval3INTEGER; }
4739
step"s2_alter_tbl2_add_float" {ALTERTABLEtbl2ADDCOLUMNval3FLOAT; }
4840
step"s2_alter_tbl2_add_char" {ALTERTABLEtbl2ADDCOLUMNval3charactervarying; }
49-
step"s2_alter_tbl2_add_boolean" {ALTERTABLEtbl2ADDCOLUMNval3BOOLEAN; }
5041
step"s2_alter_tbl2_add_text" {ALTERTABLEtbl2ADDCOLUMNval3TEXT; }
5142
step"s2_alter_tbl2_drop_3rd_col" {ALTERTABLEtbl2DROPCOLUMNval3; }
5243
step"s2_alter_tbl2_3rd_char" {ALTERTABLEtbl2ALTERCOLUMNval3TYPEcharactervarying; }

‎contrib/test_decoding/specs/snapshot_transfer.spec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ step "s0_sub_get_base_snap" { INSERT INTO dummy VALUES (0); }
2525
step"s0_insert" {INSERTINTOharvestVALUES (1,2,3); }
2626
step"s0_end_sub0" {RELEASESAVEPOINTs0; }
2727
step"s0_end_sub1" {RELEASESAVEPOINTs1; }
28-
step"s0_insert2" {INSERTINTOharvestVALUES (1,2,3,4); }
2928
step"s0_commit" {COMMIT; }
3029
step"s0_get_changes" {SELECTdataFROMpg_logical_slot_get_changes('isolation_slot',NULL,NULL,'include-xids','0','skip-empty-xacts','1'); }
3130

‎src/test/isolation/expected/eval-plan-qual-trigger.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Parsed test spec with4 sessions
1+
Parsed test spec with3 sessions
22

33
starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s1_c s2_upd_a_data s2_c s0_rep
44
step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report();

‎src/test/isolation/isolationtester.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ main(int argc, char **argv)
8888
puts("isolationtester (PostgreSQL) "PG_VERSION);
8989
exit(0);
9090
default:
91-
fprintf(stderr,"Usage: isolationtester [-n] [CONNINFO]\n");
91+
fprintf(stderr,"Usage: isolationtester [CONNINFO]\n");
9292
returnEXIT_FAILURE;
9393
}
9494
}
@@ -252,10 +252,23 @@ static int *piles;
252252
staticvoid
253253
run_testspec(TestSpec*testspec)
254254
{
255+
inti;
256+
255257
if (testspec->permutations)
256258
run_named_permutations(testspec);
257259
else
258260
run_all_permutations(testspec);
261+
262+
/*
263+
* Verify that all steps have been used, complaining about anything
264+
* defined but not used.
265+
*/
266+
for (i=0;i<testspec->nallsteps;i++)
267+
{
268+
if (!testspec->allsteps[i]->used)
269+
fprintf(stderr,"unused step name: %s\n",
270+
testspec->allsteps[i]->name);
271+
}
259272
}
260273

261274
/*
@@ -455,7 +468,11 @@ run_permutation(TestSpec *testspec, int nsteps, Step **steps)
455468

456469
printf("\nstarting permutation:");
457470
for (i=0;i<nsteps;i++)
471+
{
472+
/* Track the permutation as in-use */
473+
steps[i]->used= true;
458474
printf(" %s",steps[i]->name);
475+
}
459476
printf("\n");
460477

461478
/* Perform setup */

‎src/test/isolation/isolationtester.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ struct Session
2929
structStep
3030
{
3131
intsession;
32+
boolused;
3233
char*name;
3334
char*sql;
3435
char*errormsg;

‎src/test/isolation/specparse.y

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ step:
145145
$$ = pg_malloc(sizeof(Step));
146146
$$->name =$2;
147147
$$->sql =$3;
148+
$$->used =false;
148149
$$->errormsg =NULL;
149150
}
150151
;

‎src/test/isolation/specs/eval-plan-qual-trigger.spec

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ session "s2"
113113
step"s2_b_rc" {BEGINISOLATIONLEVELREADCOMMITTED;SELECT1; }
114114
step"s2_b_rr" {BEGINISOLATIONLEVELREPEATABLEREAD;SELECT1; }
115115
step"s2_c" {COMMIT; }
116-
step"s2_r" {ROLLBACK; }
116+
#step "s2_r" { ROLLBACK; }
117117
step"s2_ins_a" {INSERTINTOtrigtestVALUES ('key-a','val-a-s2')RETURNING*; }
118118
step"s2_del_a" {
119119
DELETEFROMtrigtest
@@ -153,25 +153,25 @@ step "s2_upsert_a_data" {
153153
RETURNING*;
154154
}
155155

156-
session"s3"
156+
#session "s3"
157157
#setup { }
158-
step"s3_b_rc" {BEGINISOLATIONLEVELREADCOMMITTED;SELECT1; }
159-
step"s3_c" {COMMIT; }
160-
step"s3_r" {ROLLBACK; }
161-
step"s3_del_a" {
162-
DELETEFROMtrigtest
163-
WHERE
164-
noisy_oper('upd',key,'=','key-a')AND
165-
noisy_oper('upk',data,'<>','mismatch')
166-
RETURNING*
167-
}
168-
step"s3_upd_a_data" {
169-
UPDATEtrigtestSETdata=data||'-ups3'
170-
WHERE
171-
noisy_oper('upd',key,'=','key-a')AND
172-
noisy_oper('upk',data,'<>','mismatch')
173-
RETURNING*;
174-
}
158+
#step "s3_b_rc" { BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; }
159+
#step "s3_c" { COMMIT; }
160+
#step "s3_r" { ROLLBACK; }
161+
#step "s3_del_a" {
162+
# DELETE FROM trigtest
163+
# WHERE
164+
# noisy_oper('upd', key, '=', 'key-a') AND
165+
# noisy_oper('upk', data, '<>', 'mismatch')
166+
# RETURNING *
167+
#}
168+
#step "s3_upd_a_data" {
169+
# UPDATE trigtest SET data = data || '-ups3'
170+
# WHERE
171+
# noisy_oper('upd', key, '=', 'key-a') AND
172+
# noisy_oper('upk', data, '<>', 'mismatch')
173+
# RETURNING *;
174+
#}
175175

176176
### base case verifying that triggers see performed modifications
177177
# s1 updates, s1 commits, s2 updates

‎src/test/isolation/specs/freeze-the-dead.spec

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ session "s1"
1919
step"s1_begin"{BEGIN; }
2020
step"s1_update"{UPDATEtab_freezeSETx=x+1WHEREid=3; }
2121
step"s1_commit"{COMMIT; }
22-
step"s1_vacuum"{VACUUMFREEZEtab_freeze; }
2322
step"s1_selectone"{
2423
BEGIN;
2524
SETLOCALenable_seqscan=false;
@@ -28,7 +27,6 @@ step "s1_selectone"{
2827
COMMIT;
2928
}
3029
step"s1_selectall"{SELECT*FROMtab_freezeORDERBYname,id; }
31-
step"s1_reindex"{REINDEXTABLEtab_freeze; }
3230

3331
session"s2"
3432
step"s2_begin"{BEGIN; }
@@ -40,7 +38,6 @@ session "s3"
4038
step"s3_begin"{BEGIN; }
4139
step"s3_key_share"{SELECTidFROMtab_freezeWHEREid=3FORKEYSHARE; }
4240
step"s3_commit"{COMMIT; }
43-
step"s3_vacuum"{VACUUMFREEZEtab_freeze; }
4441

4542
# This permutation verfies that a previous bug
4643
# https://postgr.es/m/E5711E62-8FDF-4DCA-A888-C200BF6B5742@amazon.com

‎src/test/isolation/specs/insert-conflict-do-nothing.spec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ setup
3333
step"donothing2" {INSERTINTOints(key,val)VALUES(1,'donothing2')ONCONFLICTDONOTHING; }
3434
step"select2" {SELECT*FROMints; }
3535
step"c2" {COMMIT; }
36-
step"a2" {ABORT; }
3736

3837
# Regular case where one session block-waits on another to determine if it
3938
# should proceed with an insert or do nothing.

‎src/test/isolation/specs/insert-conflict-do-update-2.spec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ setup
3232
step"insert2" {INSERTINTOupsert(key,payload)VALUES('FOOFOO','insert2')ONCONFLICT (lower(key))DOUPDATEsetkey=EXCLUDED.key,payload=upsert.payload||' updated by insert2'; }
3333
step"select2" {SELECT*FROMupsert; }
3434
step"c2" {COMMIT; }
35-
step"a2" {ABORT; }
3635

3736
# One session (session 2) block-waits on another (session 1) to determine if it
3837
# should proceed with an insert or update. The user can still usefully UPDATE

‎src/test/isolation/specs/insert-conflict-do-update.spec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ setup
3030
step"insert2" {INSERTINTOupsert(key,val)VALUES(1,'insert2')ONCONFLICT (key)DOUPDATEsetval=upsert.val||' updated by insert2'; }
3131
step"select2" {SELECT*FROMupsert; }
3232
step"c2" {COMMIT; }
33-
step"a2" {ABORT; }
3433

3534
# One session (session 2) block-waits on another (session 1) to determine if it
3635
# should proceed with an insert or update. Notably, this entails updating a

‎src/test/isolation/specs/partition-key-update-1.spec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ step "s1r"{ ROLLBACK; }
5757

5858
session"s2"
5959
step"s2b"{BEGINISOLATIONLEVELREADCOMMITTED; }
60-
step"s2u"{UPDATEfooSETb='EFG'WHEREa=1; }
6160
step"s2u2"{UPDATEfootrgSETb='XYZ'WHEREa=1; }
6261
step"s2i"{INSERTINTObarVALUES(7); }
6362
step"s2d"{DELETEFROMfooWHEREa=1; }

‎src/test/isolation/specs/sequence-ddl.spec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ setup { BEGIN; }
1515
step"s1alter"{ALTERSEQUENCEseq1MAXVALUE10;}
1616
step"s1alter2"{ALTERSEQUENCEseq1MAXVALUE20;}
1717
step"s1restart"{ALTERSEQUENCEseq1RESTARTWITH5;}
18-
step"s1setval"{SELECTsetval('seq1',5);}
1918
step"s1commit"{COMMIT;}
2019

2120
session"s2"

‎src/test/isolation/specs/tuplelock-upgrade-no-deadlock.spec

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ teardown
1919
session"s0"
2020
step"s0_begin" {begin; }
2121
step"s0_keyshare" {selectidfromtlu_jobwhereid=1forkeyshare;}
22-
step"s0_share" {selectidfromtlu_jobwhereid=1forshare;}
2322
step"s0_rollback" {rollback; }
2423

2524
session"s1"
@@ -28,7 +27,6 @@ step "s1_keyshare" { select id from tlu_job where id = 1 for key share;}
2827
step"s1_share" {selectidfromtlu_jobwhereid=1forshare; }
2928
step"s1_fornokeyupd" {selectidfromtlu_jobwhereid=1fornokeyupdate; }
3029
step"s1_update" {updatetlu_jobsetname='b'whereid=1; }
31-
step"s1_delete" {deletefromtlu_jobwhereid=1; }
3230
step"s1_savept_e" {savepoints1_e; }
3331
step"s1_savept_f" {savepoints1_f; }
3432
step"s1_rollback_e" {rollbacktos1_e; }
@@ -44,7 +42,6 @@ step "s2_for_update" { select id from tlu_job where id = 1 for update; }
4442
step"s2_update" {updatetlu_jobsetname='b'whereid=1; }
4543
step"s2_delete" {deletefromtlu_jobwhereid=1; }
4644
step"s2_rollback" {rollback; }
47-
step"s2_commit" {commit; }
4845

4946
session"s3"
5047
setup {begin; }

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp