blob: 3110d2ab9c3894a0715e7827abfc960a7cc0070e [file] [log] [blame]
-- Test to ensure that autostats correctly uses skip_locked to prevent unwanted
-- lock waits. This aligns autostats to PG autoanalyze behavior.
CREATE TABLE test_autostats_locking(i int);
INSERT INTO test_autostats_locking SELECT 1 FROM generate_series(1, 10);
ANALYZE test_autostats_locking;
SELECT reltuples FROM pg_class WHERE relname = 'test_autostats_locking';
SET gp_autostats_mode TO onchange;
SET gp_autostats_on_change_threshold TO 9;
SET gp_autostats_lock_wait TO off;
1: BEGIN;
-- Hold a lock that conflicts with ANALYZE.
1: LOCK test_autostats_locking IN SHARE UPDATE EXCLUSIVE MODE;
-- This insert should not block because of the concurrent lock.
INSERT INTO test_autostats_locking SELECT 1 FROM generate_series(1, 10);
-- And reltuples should NOT have been updated from the autostats-analyze as
-- lock acquisition was unsuccessful.
SELECT reltuples FROM pg_class WHERE relname = 'test_autostats_locking';
1: END;
INSERT INTO test_autostats_locking SELECT 1 FROM generate_series(1, 10);
-- And reltuples should have been updated from the autostats-analyze as
-- lock acquisition was successful.
SELECT reltuples FROM pg_class WHERE relname = 'test_autostats_locking';