Replace functional-index facility with expressional indexes. Any column

Tom Lane <tgl@sss.pgh.pa.us>

Commit: fc8d970cbcdd6f025475822a4cf01dfda0873226
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2003-05-28T16:04:02Z
Releases: 7.4.1
Replace functional-index facility with expressional indexes.  Any column
of an index can now be a computed expression instead of a simple variable.
Restrictions on expressions are the same as for predicates (only immutable
functions, no sub-selects).  This fixes problems recently introduced with
inlining SQL functions, because the inlining transformation is applied to
both expression trees so the planner can still match them up.  Along the
way, improve efficiency of handling index predicates (both predicates and
index expressions are now cached by the relcache) and fix 7.3 oversight
that didn't record dependencies of predicate expressions.

Files

PathChange+/−
contrib/dblink/dblink.c modified +1 −4
doc/src/sgml/catalogs.sgml modified +28 −26
doc/src/sgml/indices.sgml modified +60 −49
doc/src/sgml/plpgsql.sgml modified +4 −3
doc/src/sgml/ref/create_index.sgml modified +22 −25
doc/src/sgml/release.sgml modified +2 −1
src/backend/bootstrap/bootparse.y modified +2 −2
src/backend/bootstrap/bootstrap.c modified +5 −1
src/backend/catalog/dependency.c modified +86 −1
src/backend/catalog/heap.c modified +22 −38
src/backend/catalog/index.c modified +224 −276
src/backend/catalog/indexing.c modified +10 −8
src/backend/catalog/pg_constraint.c modified +5 −12
src/backend/commands/cluster.c modified +23 −32
src/backend/commands/indexcmds.c modified +127 −183
src/backend/commands/tablecmds.c modified +64 −60
src/backend/commands/vacuum.c modified +7 −4
src/backend/executor/execUtils.c modified +6 −7
src/backend/nodes/copyfuncs.c modified +2 −3
src/backend/nodes/equalfuncs.c modified +2 −3
src/backend/nodes/outfuncs.c modified +2 −3
src/backend/optimizer/path/indxpath.c modified +100 −147
src/backend/optimizer/path/pathkeys.c modified +29 −52
src/backend/optimizer/plan/createplan.c modified +49 −35
src/backend/optimizer/util/clauses.c modified +1 −23
src/backend/optimizer/util/plancat.c modified +35 −45
src/backend/parser/analyze.c modified +36 −8
src/backend/parser/gram.y modified +32 −54
src/backend/tcop/pquery.c modified +4 −3
src/backend/utils/adt/ruleutils.c modified +73 −53
src/backend/utils/adt/selfuncs.c modified +5 −7
src/backend/utils/cache/relcache.c modified +173 −36
src/bin/psql/describe.c modified +2 −5
src/include/catalog/catversion.h modified +2 −2
src/include/catalog/dependency.h modified +6 −1
src/include/catalog/index.h modified +4 −3
src/include/catalog/pg_index.h modified +16 −15
src/include/catalog/pg_opclass.h modified +2 −2
src/include/nodes/execnodes.h modified +7 −10
src/include/nodes/parsenodes.h modified +7 −9
src/include/nodes/relation.h modified +14 −15
src/include/optimizer/clauses.h modified +1 −4
src/include/utils/relcache.h modified +3 −1
src/include/utils/rel.h modified +5 −1
src/interfaces/python/tutorial/syscat.py modified +2 −2
src/test/regress/expected/create_index.out modified +14 −0
src/test/regress/expected/sanity_check.out modified +1 −1
src/test/regress/sql/create_index.sql modified +16 −0
src/test/regress/sql/sanity_check.sql modified +1 −1
src/tutorial/syscat.source modified +4 −4