]> granicus.if.org Git - postgresql/commit
Rewrite the FSM. Instead of relying on a fixed-size shared memory segment, the
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 30 Sep 2008 10:52:14 +0000 (10:52 +0000)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 30 Sep 2008 10:52:14 +0000 (10:52 +0000)
commit15c121b3ed7eb2f290e19533e41ccca734d23574
treeb60226d720f87b82b5b44647e3d3031081cdfb07
parent2dbc0ca937f8ba9c76866a99fd04866232acea95
Rewrite the FSM. Instead of relying on a fixed-size shared memory segment, the
free space information is stored in a dedicated FSM relation fork, with each
relation (except for hash indexes; they don't use FSM).

This eliminates the max_fsm_relations and max_fsm_pages GUC options; remove any
trace of them from the backend, initdb, and documentation.

Rewrite contrib/pg_freespacemap to match the new FSM implementation. Also
introduce a new variant of the get_raw_page(regclass, int4, int4) function in
contrib/pageinspect that let's you to return pages from any relation fork, and
a new fsm_page_contents() function to inspect the new FSM pages.
53 files changed:
contrib/pageinspect/Makefile
contrib/pageinspect/fsmfuncs.c [new file with mode: 0644]
contrib/pageinspect/pageinspect.sql.in
contrib/pageinspect/rawpage.c
contrib/pg_freespacemap/pg_freespacemap.sql.in
doc/src/sgml/acronyms.sgml
doc/src/sgml/config.sgml
doc/src/sgml/pageinspect.sgml
doc/src/sgml/pgfreespacemap.sgml
doc/src/sgml/ref/vacuum.sgml
doc/src/sgml/release.sgml
doc/src/sgml/runtime.sgml
doc/src/sgml/storage.sgml
src/backend/access/gin/gininsert.c
src/backend/access/gin/ginutil.c
src/backend/access/gin/ginvacuum.c
src/backend/access/gist/gist.c
src/backend/access/gist/gistutil.c
src/backend/access/gist/gistvacuum.c
src/backend/access/heap/heapam.c
src/backend/access/heap/hio.c
src/backend/access/nbtree/nbtpage.c
src/backend/access/nbtree/nbtree.c
src/backend/access/nbtree/nbtsort.c
src/backend/access/transam/rmgr.c
src/backend/access/transam/xlogutils.c
src/backend/bootstrap/bootstrap.c
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/commands/dbcommands.c
src/backend/commands/vacuum.c
src/backend/commands/vacuumlazy.c
src/backend/postmaster/bgwriter.c
src/backend/storage/freespace/Makefile
src/backend/storage/freespace/README [new file with mode: 0644]
src/backend/storage/freespace/freespace.c
src/backend/storage/freespace/fsmpage.c [new file with mode: 0644]
src/backend/storage/freespace/indexfsm.c [new file with mode: 0644]
src/backend/storage/ipc/ipci.c
src/backend/storage/smgr/smgr.c
src/backend/tcop/postgres.c
src/backend/utils/cache/relcache.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample
src/bin/initdb/initdb.c
src/include/access/rmgr.h
src/include/storage/freespace.h
src/include/storage/fsm_internals.h [new file with mode: 0644]
src/include/storage/indexfsm.h [new file with mode: 0644]
src/include/storage/lwlock.h
src/include/storage/relfilenode.h
src/include/utils/guc_tables.h
src/include/utils/rel.h