pgsql: Rewrite the FSM.

From: heikki(at)postgresql(dot)org (Heikki Linnakangas)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Rewrite the FSM.
Date: 2008-09-30 10:52:14
Message-ID: 20080930105214.283247545A4@cvs.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
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.

Modified Files:
--------------
pgsql/contrib/pageinspect:
Makefile (r1.3 -> r1.4)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/pageinspect/Makefile?r1=1.3&r2=1.4)
pageinspect.sql.in (r1.4 -> r1.5)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/pageinspect/pageinspect.sql.in?r1=1.4&r2=1.5)
rawpage.c (r1.6 -> r1.7)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/pageinspect/rawpage.c?r1=1.6&r2=1.7)
pgsql/contrib/pg_freespacemap:
pg_freespacemap.sql.in (r1.8 -> r1.9)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/pg_freespacemap/pg_freespacemap.sql.in?r1=1.8&r2=1.9)
pgsql/doc/src/sgml:
acronyms.sgml (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/acronyms.sgml?r1=1.5&r2=1.6)
config.sgml (r1.190 -> r1.191)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/config.sgml?r1=1.190&r2=1.191)
pageinspect.sgml (r1.3 -> r1.4)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/pageinspect.sgml?r1=1.3&r2=1.4)
pgfreespacemap.sgml (r2.2 -> r2.3)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/pgfreespacemap.sgml?r1=2.2&r2=2.3)
release.sgml (r1.585 -> r1.586)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/release.sgml?r1=1.585&r2=1.586)
runtime.sgml (r1.417 -> r1.418)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/runtime.sgml?r1=1.417&r2=1.418)
storage.sgml (r1.24 -> r1.25)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/storage.sgml?r1=1.24&r2=1.25)
pgsql/doc/src/sgml/ref:
vacuum.sgml (r1.51 -> r1.52)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/vacuum.sgml?r1=1.51&r2=1.52)
pgsql/src/backend/access/gin:
gininsert.c (r1.14 -> r1.15)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gin/gininsert.c?r1=1.14&r2=1.15)
ginutil.c (r1.16 -> r1.17)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gin/ginutil.c?r1=1.16&r2=1.17)
ginvacuum.c (r1.21 -> r1.22)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gin/ginvacuum.c?r1=1.21&r2=1.22)
pgsql/src/backend/access/gist:
gist.c (r1.151 -> r1.152)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gist.c?r1=1.151&r2=1.152)
gistutil.c (r1.30 -> r1.31)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistutil.c?r1=1.30&r2=1.31)
gistvacuum.c (r1.36 -> r1.37)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistvacuum.c?r1=1.36&r2=1.37)
pgsql/src/backend/access/heap:
heapam.c (r1.263 -> r1.264)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/heap/heapam.c?r1=1.263&r2=1.264)
hio.c (r1.72 -> r1.73)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/heap/hio.c?r1=1.72&r2=1.73)
pgsql/src/backend/access/nbtree:
nbtpage.c (r1.110 -> r1.111)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtpage.c?r1=1.110&r2=1.111)
nbtree.c (r1.161 -> r1.162)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtree.c?r1=1.161&r2=1.162)
nbtsort.c (r1.117 -> r1.118)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtsort.c?r1=1.117&r2=1.118)
pgsql/src/backend/access/transam:
rmgr.c (r1.25 -> r1.26)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/rmgr.c?r1=1.25&r2=1.26)
xlogutils.c (r1.58 -> r1.59)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xlogutils.c?r1=1.58&r2=1.59)
pgsql/src/backend/bootstrap:
bootstrap.c (r1.245 -> r1.246)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/bootstrap/bootstrap.c?r1=1.245&r2=1.246)
pgsql/src/backend/catalog:
heap.c (r1.339 -> r1.340)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/heap.c?r1=1.339&r2=1.340)
index.c (r1.304 -> r1.305)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/index.c?r1=1.304&r2=1.305)
pgsql/src/backend/commands:
dbcommands.c (r1.212 -> r1.213)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/dbcommands.c?r1=1.212&r2=1.213)
vacuum.c (r1.377 -> r1.378)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuum.c?r1=1.377&r2=1.378)
vacuumlazy.c (r1.107 -> r1.108)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuumlazy.c?r1=1.107&r2=1.108)
pgsql/src/backend/postmaster:
bgwriter.c (r1.51 -> r1.52)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/bgwriter.c?r1=1.51&r2=1.52)
pgsql/src/backend/storage/freespace:
Makefile (r1.4 -> r1.5)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/freespace/Makefile?r1=1.4&r2=1.5)
freespace.c (r1.60 -> r1.61)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/freespace/freespace.c?r1=1.60&r2=1.61)
pgsql/src/backend/storage/ipc:
ipci.c (r1.96 -> r1.97)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/ipc/ipci.c?r1=1.96&r2=1.97)
pgsql/src/backend/storage/smgr:
smgr.c (r1.111 -> r1.112)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/smgr/smgr.c?r1=1.111&r2=1.112)
pgsql/src/backend/tcop:
postgres.c (r1.556 -> r1.557)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/tcop/postgres.c?r1=1.556&r2=1.557)
pgsql/src/backend/utils/cache:
relcache.c (r1.273 -> r1.274)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/relcache.c?r1=1.273&r2=1.274)
pgsql/src/backend/utils/misc:
guc.c (r1.473 -> r1.474)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/guc.c?r1=1.473&r2=1.474)
postgresql.conf.sample (r1.245 -> r1.246)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/postgresql.conf.sample?r1=1.245&r2=1.246)
pgsql/src/bin/initdb:
initdb.c (r1.161 -> r1.162)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/bin/initdb/initdb.c?r1=1.161&r2=1.162)
pgsql/src/include/access:
rmgr.h (r1.17 -> r1.18)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/access/rmgr.h?r1=1.17&r2=1.18)
pgsql/src/include/storage:
freespace.h (r1.28 -> r1.29)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/freespace.h?r1=1.28&r2=1.29)
lwlock.h (r1.39 -> r1.40)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/lwlock.h?r1=1.39&r2=1.40)
relfilenode.h (r1.16 -> r1.17)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/relfilenode.h?r1=1.16&r2=1.17)
pgsql/src/include/utils:
guc_tables.h (r1.42 -> r1.43)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/guc_tables.h?r1=1.42&r2=1.43)
rel.h (r1.107 -> r1.108)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/rel.h?r1=1.107&r2=1.108)

Added Files:
-----------
pgsql/contrib/pageinspect:
fsmfuncs.c (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/pageinspect/fsmfuncs.c?rev=1.1&content-type=text/x-cvsweb-markup)
pgsql/src/backend/storage/freespace:
README (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/freespace/README?rev=1.1&content-type=text/x-cvsweb-markup)
fsmpage.c (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/freespace/fsmpage.c?rev=1.1&content-type=text/x-cvsweb-markup)
indexfsm.c (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/freespace/indexfsm.c?rev=1.1&content-type=text/x-cvsweb-markup)
pgsql/src/include/storage:
fsm_internals.h (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/fsm_internals.h?rev=1.1&content-type=text/x-cvsweb-markup)
indexfsm.h (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/indexfsm.h?rev=1.1&content-type=text/x-cvsweb-markup)

Browse pgsql-committers by date

  From Date Subject
Next Message Heikki Linnakangas 2008-09-30 11:11:28 pgsql: Forgot to bump catalog version in the commit of FSM rewrite.
Previous Message User Mkz 2008-09-30 10:17:13 pgbouncer - pgbouncer: quiet compiler warning about ptr->int conversion