postgresql/src/include/access
Tom Lane 6f10eb2111 Refactor heap_page_prune so that instead of changing item states on-the-fly,
it accumulates the set of changes to be made and then applies them.  It had
to accumulate the set of changes anyway to prepare a WAL record for the
pruning action, so this isn't an enormous change; the only new complexity is
to not doubly mark tuples that are visited twice in the scan.  The main
advantage is that we can substantially reduce the scope of the critical
section in which the changes are applied, thus avoiding PANIC in foreseeable
cases like running out of memory in inval.c.  A nice secondary advantage is
that it is now far clearer that WAL replay will actually do the same thing
that the original pruning did.

This commit doesn't do anything about the open problem that
CacheInvalidateHeapTuple doesn't have the right semantics for a CTID change
caused by collapsing out a redirect pointer.  But whatever we do about that,
it'll be a good idea to not do it inside a critical section.
2008-03-08 21:57:59 +00:00
..
attnum.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
clog.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
genam.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
gin.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
gist.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
gist_private.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
gistscan.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
hash.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
heapam.h Refactor heap_page_prune so that instead of changing item states on-the-fly, 2008-03-08 21:57:59 +00:00
hio.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
htup.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
itup.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
multixact.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
nbtree.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
printtup.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
reloptions.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
relscan.h Fix CREATE INDEX CONCURRENTLY so that it won't use synchronized scan for 2008-01-14 01:39:09 +00:00
rewriteheap.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
rmgr.h Fix recently-understood problems with handling of XID freezing, particularly 2006-11-05 22:42:10 +00:00
sdir.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
skey.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
slru.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
subtrans.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
transam.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
tupdesc.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
tupmacs.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
tuptoaster.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
twophase.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
twophase_rmgr.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
valid.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
xact.h Fix PREPARE TRANSACTION to reject the case where the transaction has dropped a 2008-03-04 19:54:06 +00:00
xlog.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
xlog_internal.h Replace time_t with pg_time_t (same values, but always int64) in on-disk 2008-02-17 02:09:32 +00:00
xlogdefs.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00
xlogutils.h Update copyrights in source tree to 2008. 2008-01-01 19:46:01 +00:00