Promote row expressions to full-fledged citizens of the expression syntax,

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

Commit: 2f63232d30ca64a8f2684af855230f23a701d371
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2004-05-10T22:44:49Z
Releases: 8.0.0
Promote row expressions to full-fledged citizens of the expression syntax,
rather than allowing them only in a few special cases as before.  In
particular you can now pass a ROW() construct to a function that accepts
a rowtype parameter.  Internal generation of RowExprs fixes a number of
corner cases that used to not work very well, such as referencing the
whole-row result of a JOIN or subquery.  This represents a further step in
the work I started a month or so back to make rowtype values into
first-class citizens.

Files

PathChange+/−
doc/src/sgml/func.sgml modified +58 −25
doc/src/sgml/syntax.sgml modified +80 −1
doc/src/sgml/xfunc.sgml modified +24 −11
src/backend/executor/execQual.c modified +86 −1
src/backend/executor/execTuples.c modified +35 −1
src/backend/nodes/copyfuncs.c modified +19 −1
src/backend/nodes/equalfuncs.c modified +22 −1
src/backend/nodes/makefuncs.c modified +13 −1
src/backend/nodes/outfuncs.c modified +14 −1
src/backend/nodes/readfuncs.c modified +18 −1
src/backend/optimizer/path/allpaths.c modified +14 −13
src/backend/optimizer/path/clausesel.c modified +2 −7
src/backend/optimizer/prep/prepjointree.c modified +24 −26
src/backend/optimizer/util/clauses.c modified +58 −51
src/backend/optimizer/util/var.c modified +37 −16
src/backend/parser/gram.y modified +165 −293
src/backend/parser/parse_coerce.c modified +120 −1
src/backend/parser/parse_expr.c modified +263 −41
src/backend/parser/parse_target.c modified +5 −1
src/backend/rewrite/rewriteHandler.c modified +4 −1
src/backend/rewrite/rewriteManip.c modified +77 −35
src/backend/utils/adt/ruleutils.c modified +33 −5
src/include/catalog/catversion.h modified +2 −2
src/include/executor/executor.h modified +2 −1
src/include/nodes/execnodes.h modified +12 −1
src/include/nodes/makefuncs.h modified +3 −1
src/include/nodes/nodes.h modified +3 −1
src/include/nodes/primnodes.h modified +18 −1
src/include/optimizer/var.h modified +1 −2
src/include/rewrite/rewriteManip.h modified +3 −2
src/pl/plpgsql/src/pl_exec.c modified +11 −1
src/test/regress/input/misc.source modified +11 −0
src/test/regress/output/constraints.source modified +2 −2
src/test/regress/output/misc.source modified +39 −0