mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-12 17:37:07 +08:00
As the test currently causes occasional deadlocks (due to the schema cleanup from previous sessions potentially still running), and the patch from f912d7dec2 has gotten a fair bit of buildfarm coverage, remove the test from the test schedules. There's a set of minor releases coming up. Leave the tests in place, so it can manually be run using EXTRA_TESTS. For now also leave it in master, as there's no imminent release, and there's plenty (re-)index related work in 12. But we'll have to disable it before long there too, unless somebody comes up with simple enough fixes for the deadlock (I'm about to post a vague idea to the list). Discussion: https://postgr.es/m/4622.1556982247@sss.pgh.pa.us Backpatch: 9.4-11 (no master!)
42 lines
2.0 KiB
SQL
42 lines
2.0 KiB
SQL
--
|
|
-- Check that system tables can be reindexed.
|
|
--
|
|
-- Note that this test currently is not included in the default
|
|
-- schedules, as currently reindexing catalog tables can cause
|
|
-- deadlocks:
|
|
--
|
|
-- * The lock upgrade between the ShareLock acquired for the reindex
|
|
-- and RowExclusiveLock needed for pg_class/pg_index locks can
|
|
-- trigger deadlocks.
|
|
--
|
|
-- * The uniqueness checks performed when reindexing a unique/primary
|
|
-- key index possibly need to wait for the transaction of a
|
|
-- about-to-deleted row in pg_class to commit. That can cause
|
|
-- deadlocks because, in contrast to user tables, locks on catalog
|
|
-- tables are routinely released before commit - therefore the lock
|
|
-- held for reindexing doesn't guarantee that no running transaction
|
|
-- performed modifications in the table underlying the index.
|
|
--
|
|
-- This is particularly problematic as such conflicts can be
|
|
-- triggered even when run in isolation, as a previous session's
|
|
-- temporary table cleanup might still be running (even when the
|
|
-- session ended from a client perspective).
|
|
|
|
|
|
-- Check reindexing of whole tables
|
|
REINDEX TABLE pg_class; -- mapped, non-shared, critical
|
|
REINDEX TABLE pg_index; -- non-mapped, non-shared, critical
|
|
REINDEX TABLE pg_operator; -- non-mapped, non-shared, critical
|
|
REINDEX TABLE pg_database; -- mapped, shared, critical
|
|
REINDEX TABLE pg_shdescription; -- mapped, shared non-critical
|
|
|
|
-- Check that individual system indexes can be reindexed. That's a bit
|
|
-- different from the entire-table case because reindex_relation
|
|
-- treats e.g. pg_class special.
|
|
REINDEX INDEX pg_class_oid_index; -- mapped, non-shared, critical
|
|
REINDEX INDEX pg_class_relname_nsp_index; -- mapped, non-shared, non-critical
|
|
REINDEX INDEX pg_index_indexrelid_index; -- non-mapped, non-shared, critical
|
|
REINDEX INDEX pg_index_indrelid_index; -- non-mapped, non-shared, non-critical
|
|
REINDEX INDEX pg_database_oid_index; -- mapped, shared, critical
|
|
REINDEX INDEX pg_shdescription_o_c_index; -- mapped, shared, non-critical
|