|
|
|
|
@ -5,7 +5,7 @@ |
|
|
|
|
# - s2: UPSERT the same tuple |
|
|
|
|
# - s3: CREATE UNIQUE INDEX CONCURRENTLY (with a predicate) |
|
|
|
|
# |
|
|
|
|
# - s4: control concurrency via injection points |
|
|
|
|
# - s4 and s5: control concurrency via injection points |
|
|
|
|
|
|
|
|
|
setup |
|
|
|
|
{ |
|
|
|
|
@ -27,6 +27,7 @@ setup |
|
|
|
|
{ |
|
|
|
|
SELECT injection_points_set_local(); |
|
|
|
|
SELECT injection_points_attach('check-exclusion-or-unique-constraint-no-conflict', 'wait'); |
|
|
|
|
SELECT injection_points_attach('pre-invalidate-catalog-snapshot-end', 'notice'); |
|
|
|
|
SELECT injection_points_attach('invalidate-catalog-snapshot-end', 'wait'); |
|
|
|
|
} |
|
|
|
|
step s1_start_upsert |
|
|
|
|
@ -62,11 +63,6 @@ step s4_wakeup_s1 |
|
|
|
|
SELECT injection_points_detach('check-exclusion-or-unique-constraint-no-conflict'); |
|
|
|
|
SELECT injection_points_wakeup('check-exclusion-or-unique-constraint-no-conflict'); |
|
|
|
|
} |
|
|
|
|
step s4_wakeup_s1_from_invalidate_catalog_snapshot |
|
|
|
|
{ |
|
|
|
|
SELECT injection_points_detach('invalidate-catalog-snapshot-end'); |
|
|
|
|
SELECT injection_points_wakeup('invalidate-catalog-snapshot-end'); |
|
|
|
|
} |
|
|
|
|
step s4_wakeup_s2 |
|
|
|
|
{ |
|
|
|
|
SELECT injection_points_detach('exec-insert-before-insert-speculative'); |
|
|
|
|
@ -78,11 +74,22 @@ step s4_wakeup_define_index_before_set_valid |
|
|
|
|
SELECT injection_points_wakeup('define-index-before-set-valid'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
session s5 |
|
|
|
|
step s5_noop |
|
|
|
|
{ |
|
|
|
|
} |
|
|
|
|
step s5_wakeup_s1_from_invalidate_catalog_snapshot |
|
|
|
|
{ |
|
|
|
|
SELECT injection_points_detach('invalidate-catalog-snapshot-end'); |
|
|
|
|
SELECT injection_points_wakeup('invalidate-catalog-snapshot-end'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
permutation |
|
|
|
|
s5_noop(s1_start_upsert notices 1) |
|
|
|
|
s3_start_create_index(s1_start_upsert, s2_start_upsert) |
|
|
|
|
s1_start_upsert |
|
|
|
|
s4_wakeup_define_index_before_set_valid |
|
|
|
|
s2_start_upsert(s1_start_upsert) |
|
|
|
|
s4_wakeup_s1_from_invalidate_catalog_snapshot |
|
|
|
|
s5_wakeup_s1_from_invalidate_catalog_snapshot |
|
|
|
|
s4_wakeup_s2 |
|
|
|
|
s4_wakeup_s1 |
|
|
|
|
|