Thread: pgsql: Code review for FILLFACTOR patch.

pgsql: Code review for FILLFACTOR patch.

From
tgl@postgresql.org (Tom Lane)
Date:
Log Message:
-----------
Code review for FILLFACTOR patch.  Change WITH grammar as per earlier
discussion (including making def_arg allow reserved words), add missed
opt_definition for UNIQUE case.  Put the reloptions support code in a less
random place (I chose to make a new file access/common/reloptions.c).
Eliminate header inclusion creep.  Make the index options functions safely
user-callable (seems like client apps might like to be able to test validity
of options before trying to make an index).  Reduce overhead for normal case
with no options by allowing rd_options to be NULL.  Fix some unmaintainably
klugy code, including getting rid of Natts_pg_class_fixed at long last.
Some stylistic cleanup too, and pay attention to keeping comments in sync
with code.

Documentation still needs work, though I did fix the omissions in
catalogs.sgml and indexam.sgml.

Modified Files:
--------------
    pgsql/doc/src/sgml:
        catalogs.sgml (r2.124 -> r2.125)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/catalogs.sgml.diff?r1=2.124&r2=2.125)
        indexam.sgml (r2.14 -> r2.15)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/indexam.sgml.diff?r1=2.14&r2=2.15)
    pgsql/src/backend/access/common:
        Makefile (r1.21 -> r1.22)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/common/Makefile.diff?r1=1.21&r2=1.22)
        heaptuple.c (r1.108 -> r1.109)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/common/heaptuple.c.diff?r1=1.108&r2=1.109)
    pgsql/src/backend/access/gin:
        ginutil.c (r1.2 -> r1.3)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gin/ginutil.c.diff?r1=1.2&r2=1.3)
    pgsql/src/backend/access/gist:
        gist.c (r1.140 -> r1.141)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gist.c.diff?r1=1.140&r2=1.141)
        gistutil.c (r1.17 -> r1.18)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistutil.c.diff?r1=1.17&r2=1.18)
    pgsql/src/backend/access/hash:
        hashpage.c (r1.58 -> r1.59)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/hash/hashpage.c.diff?r1=1.58&r2=1.59)
        hashutil.c (r1.48 -> r1.49)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/hash/hashutil.c.diff?r1=1.48&r2=1.49)
    pgsql/src/backend/access/heap:
        heapam.c (r1.214 -> r1.215)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/heap/heapam.c.diff?r1=1.214&r2=1.215)
        hio.c (r1.62 -> r1.63)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/heap/hio.c.diff?r1=1.62&r2=1.63)
    pgsql/src/backend/access/index:
        genam.c (r1.56 -> r1.57)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/index/genam.c.diff?r1=1.56&r2=1.57)
    pgsql/src/backend/access/nbtree:
        nbtinsert.c (r1.138 -> r1.139)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtinsert.c.diff?r1=1.138&r2=1.139)
        nbtsort.c (r1.103 -> r1.104)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtsort.c.diff?r1=1.103&r2=1.104)
        nbtutils.c (r1.75 -> r1.76)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtutils.c.diff?r1=1.75&r2=1.76)
    pgsql/src/backend/access/transam:
        xlogutils.c (r1.45 -> r1.46)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xlogutils.c.diff?r1=1.45&r2=1.46)
    pgsql/src/backend/bootstrap:
        bootparse.y (r1.81 -> r1.82)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/bootstrap/bootparse.y.diff?r1=1.81&r2=1.82)
    pgsql/src/backend/catalog:
        heap.c (r1.303 -> r1.304)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/heap.c.diff?r1=1.303&r2=1.304)
        index.c (r1.267 -> r1.268)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/index.c.diff?r1=1.267&r2=1.268)
        indexing.c (r1.112 -> r1.113)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/indexing.c.diff?r1=1.112&r2=1.113)
    pgsql/src/backend/commands:
        cluster.c (r1.148 -> r1.149)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/cluster.c.diff?r1=1.148&r2=1.149)
        define.c (r1.96 -> r1.97)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/define.c.diff?r1=1.96&r2=1.97)
        indexcmds.c (r1.142 -> r1.143)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/indexcmds.c.diff?r1=1.142&r2=1.143)
        prepare.c (r1.54 -> r1.55)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/prepare.c.diff?r1=1.54&r2=1.55)
        sequence.c (r1.133 -> r1.134)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/sequence.c.diff?r1=1.133&r2=1.134)
        tablecmds.c (r1.191 -> r1.192)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/tablecmds.c.diff?r1=1.191&r2=1.192)
        vacuum.c (r1.331 -> r1.332)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuum.c.diff?r1=1.331&r2=1.332)
        vacuumlazy.c (r1.71 -> r1.72)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuumlazy.c.diff?r1=1.71&r2=1.72)
    pgsql/src/backend/executor:
        execMain.c (r1.272 -> r1.273)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execMain.c.diff?r1=1.272&r2=1.273)
    pgsql/src/backend/nodes:
        copyfuncs.c (r1.341 -> r1.342)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c.diff?r1=1.341&r2=1.342)
        equalfuncs.c (r1.275 -> r1.276)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c.diff?r1=1.275&r2=1.276)
        outfuncs.c (r1.276 -> r1.277)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.276&r2=1.277)
        readfuncs.c (r1.190 -> r1.191)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/readfuncs.c.diff?r1=1.190&r2=1.191)
    pgsql/src/backend/parser:
        analyze.c (r1.337 -> r1.338)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/analyze.c.diff?r1=1.337&r2=1.338)
        gram.y (r2.550 -> r2.551)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/gram.y.diff?r1=2.550&r2=2.551)
        parse_clause.c (r1.150 -> r1.151)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_clause.c.diff?r1=1.150&r2=1.151)
    pgsql/src/backend/utils/adt:
        ruleutils.c (r1.225 -> r1.226)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/ruleutils.c.diff?r1=1.225&r2=1.226)
    pgsql/src/backend/utils/cache:
        relcache.c (r1.243 -> r1.244)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/relcache.c.diff?r1=1.243&r2=1.244)
    pgsql/src/include/access:
        genam.h (r1.61 -> r1.62)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/genam.h.diff?r1=1.61&r2=1.62)
        gin.h (r1.2 -> r1.3)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/gin.h.diff?r1=1.2&r2=1.3)
        gist_private.h (r1.19 -> r1.20)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/gist_private.h.diff?r1=1.19&r2=1.20)
        hash.h (r1.70 -> r1.71)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/hash.h.diff?r1=1.70&r2=1.71)
        heapam.h (r1.113 -> r1.114)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/heapam.h.diff?r1=1.113&r2=1.114)
        nbtree.h (r1.99 -> r1.100)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/nbtree.h.diff?r1=1.99&r2=1.100)
    pgsql/src/include/catalog:
        catversion.h (r1.335 -> r1.336)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h.diff?r1=1.335&r2=1.336)
        heap.h (r1.83 -> r1.84)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/heap.h.diff?r1=1.83&r2=1.84)
        index.h (r1.67 -> r1.68)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/index.h.diff?r1=1.67&r2=1.68)
        pg_am.h (r1.44 -> r1.45)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_am.h.diff?r1=1.44&r2=1.45)
        pg_attribute.h (r1.121 -> r1.122)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_attribute.h.diff?r1=1.121&r2=1.122)
        pg_class.h (r1.93 -> r1.94)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_class.h.diff?r1=1.93&r2=1.94)
        pg_proc.h (r1.414 -> r1.415)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_proc.h.diff?r1=1.414&r2=1.415)
    pgsql/src/include/commands:
        defrem.h (r1.73 -> r1.74)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/defrem.h.diff?r1=1.73&r2=1.74)
    pgsql/src/include/nodes:
        parsenodes.h (r1.314 -> r1.315)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/parsenodes.h.diff?r1=1.314&r2=1.315)
    pgsql/src/include/parser:
        parse_clause.h (r1.45 -> r1.46)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/parser/parse_clause.h.diff?r1=1.45&r2=1.46)
    pgsql/src/include/utils:
        rel.h (r1.90 -> r1.91)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/rel.h.diff?r1=1.90&r2=1.91)

Added Files:
-----------
    pgsql/src/backend/access/common:
        reloptions.c (r1.1)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/common/reloptions.c?rev=1.1&content-type=text/x-cvsweb-markup)
    pgsql/src/include/access:
        reloptions.h (r1.1)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/reloptions.h?rev=1.1&content-type=text/x-cvsweb-markup)