Parsed test spec with 3 sessions starting permutation: s3_prep s2_delete s3_vacuum s3_leaves s3_note s1_count s3_parked s2_insert s2_wakeup s1_plain s3_split s3_verify injection_points_attach ----------------------- (1 row) step s3_prep: VACUUM (FREEZE, ANALYZE) psr; step s2_delete: DELETE FROM psr WHERE k = 0 AND id <= 20000; step s3_vacuum: VACUUM psr; step s3_leaves: SELECT container_pages > 1 AS several_leaves, max_posting_height AS height FROM lion_index_stats('psr_k'); several_leaves|height --------------+------ t | 0 (1 row) s3: NOTICE: table "psr_leaves" does not exist, skipping step s3_note: DROP TABLE IF EXISTS psr_leaves; CREATE TABLE psr_leaves AS SELECT container_pages AS pages FROM lion_index_stats('psr_k'); step s1_count: SELECT count(*) FROM psr WHERE k = 1; step s3_parked: SELECT count(*) = 1 AS parked FROM pg_stat_activity WHERE wait_event_type = 'InjectionPoint' AND wait_event = 'lion-count-containers-pinned'; parked ------ t (1 row) step s2_insert: INSERT INTO psr SELECT 1000000 + i, 1, '' FROM generate_series(1, 10000) i; step s2_wakeup: /* * Detach first, so that nothing can park at the point again, then * release whoever is parked now. injection_points_wakeup() searches the * WAITERS, so it still works after the detach. */ SELECT injection_points_detach('lion-count-containers-pinned'); DO $$ DECLARE n int; zero int := 0; BEGIN FOR i IN 1 .. 6000 LOOP SELECT count(*) INTO n FROM pg_stat_activity WHERE wait_event = 'lion-count-containers-pinned'; IF n = 0 THEN zero := zero + 1; EXIT WHEN zero >= 10; ELSE zero := 0; BEGIN PERFORM injection_points_wakeup('lion-count-containers-pinned'); EXCEPTION WHEN OTHERS THEN NULL; END; END IF; PERFORM pg_sleep(0.01); END LOOP; END $$; injection_points_detach ----------------------- (1 row) step s1_count: <... completed> count ----- 5120 (1 row) step s1_plain: SET pg_lion.enable_count_pushdown = off; SELECT count(*) FROM psr WHERE k = 1; SET pg_lion.enable_count_pushdown = on; count ----- 15120 (1 row) step s3_split: SELECT container_pages > (SELECT pages FROM psr_leaves) AS leaf_was_split FROM lion_index_stats('psr_k'); leaf_was_split -------------- t (1 row) step s3_verify: SELECT lion_index_verify('psr_k', true); lion_index_verify ----------------- (1 row)