Rethink the way FSM truncation works. Instead of WAL-logging FSM
commit551c8477304921ddcc5a45f159d56940477e8455
authorheikki <heikki>
Wed, 19 Nov 2008 10:34:52 +0000 (19 10:34 +0000)
committerheikki <heikki>
Wed, 19 Nov 2008 10:34:52 +0000 (19 10:34 +0000)
tree17cfd5af19b7d85cb4d740807e67a5c1f1d11b14
parenta76a3d61e2d2ed06069bc282e1985996687982c8
Rethink the way FSM truncation works. Instead of WAL-logging FSM
truncations in FSM code, call FreeSpaceMapTruncateRel from smgr_redo. To
make that cleaner from modularity point of view, move the WAL-logging one
level up to RelationTruncate, and move RelationTruncate and all the
related WAL-logging to new src/backend/catalog/storage.c file. Introduce
new RelationCreateStorage and RelationDropStorage functions that are used
instead of calling smgrcreate/smgrscheduleunlink directly. Move the
pending rel deletion stuff from smgrcreate/smgrscheduleunlink to the new
functions. This leaves smgr.c as a thin wrapper around md.c; all the
transactional stuff is now in storage.c.

This will make it easier to add new forks with similar truncation logic,
like the visibility map.
30 files changed:
src/backend/access/gin/gininsert.c
src/backend/access/gin/ginvacuum.c
src/backend/access/gist/gist.c
src/backend/access/gist/gistvacuum.c
src/backend/access/heap/heapam.c
src/backend/access/nbtree/nbtree.c
src/backend/access/transam/rmgr.c
src/backend/access/transam/twophase.c
src/backend/access/transam/xact.c
src/backend/access/transam/xlogutils.c
src/backend/catalog/Makefile
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/catalog/storage.c [new file with mode: 0644]
src/backend/commands/tablecmds.c
src/backend/commands/vacuum.c
src/backend/commands/vacuumlazy.c
src/backend/rewrite/rewriteDefine.c
src/backend/storage/buffer/bufmgr.c
src/backend/storage/freespace/freespace.c
src/backend/storage/freespace/indexfsm.c
src/backend/storage/smgr/smgr.c
src/include/access/rmgr.h
src/include/access/xact.h
src/include/catalog/storage.h [new file with mode: 0644]
src/include/storage/bufmgr.h
src/include/storage/freespace.h
src/include/storage/indexfsm.h
src/include/storage/relfilenode.h
src/include/storage/smgr.h