mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-03-02 10:17:02 +08:00
If a query against an inheritance tree runs concurrently with an ALTER TABLE that's disinheriting one of the tree members, it's possible to get a "could not find inherited attribute" error because after obtaining lock on the removed member, make_inh_translation_list sees that its columns have attinhcount=0 and decides they aren't the columns it's looking for. An ideal fix, perhaps, would avoid including such a just-removed member table in the query at all; but there seems no way to accomplish that without adding expensive catalog rechecks or creating a likelihood of deadlocks. Instead, let's just drop the check on attinhcount. In this way, a query that's included a just-disinherited child will still succeed, which is not a completely unreasonable behavior. This problem has existed for a long time, so back-patch to all supported branches. Also add an isolation test verifying related behaviors. Patch by me; the new isolation test is based on Kyotaro Horiguchi's work. Discussion: https://postgr.es/m/20170626.174612.23936762.horiguchi.kyotaro@lab.ntt.co.jp
64 lines
1.4 KiB
Plaintext
64 lines
1.4 KiB
Plaintext
test: read-write-unique
|
|
test: read-write-unique-2
|
|
test: read-write-unique-3
|
|
test: read-write-unique-4
|
|
test: simple-write-skew
|
|
test: receipt-report
|
|
test: temporal-range-integrity
|
|
test: project-manager
|
|
test: classroom-scheduling
|
|
test: total-cash
|
|
test: referential-integrity
|
|
test: ri-trigger
|
|
test: partial-index
|
|
test: two-ids
|
|
test: multiple-row-versions
|
|
test: index-only-scan
|
|
test: deadlock-simple
|
|
test: deadlock-hard
|
|
test: deadlock-soft
|
|
test: deadlock-soft-2
|
|
test: fk-contention
|
|
test: fk-deadlock
|
|
test: fk-deadlock2
|
|
test: eval-plan-qual
|
|
test: lock-update-delete
|
|
test: lock-update-traversal
|
|
test: insert-conflict-do-nothing
|
|
test: insert-conflict-do-nothing-2
|
|
test: insert-conflict-do-update
|
|
test: insert-conflict-do-update-2
|
|
test: insert-conflict-do-update-3
|
|
test: insert-conflict-toast
|
|
test: delete-abort-savept
|
|
test: delete-abort-savept-2
|
|
test: aborted-keyrevoke
|
|
test: multixact-no-deadlock
|
|
test: multixact-no-forget
|
|
test: lock-committed-update
|
|
test: lock-committed-keyupdate
|
|
test: update-locked-tuple
|
|
test: propagate-lock-delete
|
|
test: tuplelock-conflict
|
|
test: tuplelock-update
|
|
test: freeze-the-dead
|
|
test: nowait
|
|
test: nowait-2
|
|
test: nowait-3
|
|
test: nowait-4
|
|
test: nowait-5
|
|
test: skip-locked
|
|
test: skip-locked-2
|
|
test: skip-locked-3
|
|
test: skip-locked-4
|
|
test: drop-index-concurrently-1
|
|
test: multiple-cic
|
|
test: alter-table-1
|
|
test: alter-table-2
|
|
test: alter-table-3
|
|
test: alter-table-4
|
|
test: create-trigger
|
|
test: async-notify
|
|
test: vacuum-reltuples
|
|
test: timeouts
|