Thread: pgsql: Code review for FILLFACTOR patch.
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)