aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/jsonfuncs.c
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2021-01-30 00:12:18 -0800
committerNoah Misch <noah@leadboat.com>2021-01-30 00:12:18 -0800
commit7da83415e5bc01bba0093f34f4f612b70c70b678 (patch)
treecb1056e46e43dfcc1da958a00c89f03e45e256bb /src/backend/utils/adt/jsonfuncs.c
parent360bd2321b1ad9c47466bc485ee5eb2f4515372e (diff)
downloadpostgresql-7da83415e5bc01bba0093f34f4f612b70c70b678.tar.gz
postgresql-7da83415e5bc01bba0093f34f4f612b70c70b678.zip
Revive "snapshot too old" with wal_level=minimal and SET TABLESPACE.
Given a permanent relation rewritten in the current transaction, the old_snapshot_threshold mechanism assumed the relation had never been subject to early pruning. Hence, a query could fail to report "snapshot too old" when the rewrite followed an early truncation. ALTER TABLE SET TABLESPACE is probably the only rewrite mechanism capable of exposing this bug. REINDEX sets indcheckxmin, avoiding the problem. CLUSTER has zeroed page LSNs since before old_snapshot_threshold existed, so old_snapshot_threshold has never cooperated with it. ALTER TABLE ... SET DATA TYPE makes the table look empty to every past snapshot, which is strictly worse. Back-patch to v13, where commit c6b92041d38512a4176ed76ad06f713d2e6c01a8 broke this. Kyotaro Horiguchi and Noah Misch Discussion: https://postgr.es/m/20210113.160705.2225256954956139776.horikyota.ntt@gmail.com
Diffstat (limited to 'src/backend/utils/adt/jsonfuncs.c')
0 files changed, 0 insertions, 0 deletions