Thread: pgsql: Get rid of the rather fuzzily defined FlattenedSubLink node type
pgsql: Get rid of the rather fuzzily defined FlattenedSubLink node type
From
tgl@postgresql.org (Tom Lane)
Date:
Log Message: ----------- Get rid of the rather fuzzily defined FlattenedSubLink node type in favor of making pull_up_sublinks() construct a full-blown JoinExpr tree representation of IN/EXISTS SubLinks that it is able to convert to semi or anti joins. This makes pull_up_sublinks() a shade more complex, but the gain in semantic clarity is worth it. I still have more to do in this area to address the previously-discussed problems, but this commit in itself fixes at least one bug in HEAD, as shown by added regression test case. Modified Files: -------------- pgsql/src/backend/nodes: copyfuncs.c (r1.424 -> r1.425) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c?r1=1.424&r2=1.425) equalfuncs.c (r1.348 -> r1.349) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c?r1=1.348&r2=1.349) nodeFuncs.c (r1.37 -> r1.38) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/nodeFuncs.c?r1=1.37&r2=1.38) outfuncs.c (r1.352 -> r1.353) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c?r1=1.352&r2=1.353) pgsql/src/backend/optimizer/plan: initsplan.c (r1.147 -> r1.148) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/initsplan.c?r1=1.147&r2=1.148) subselect.c (r1.145 -> r1.146) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/subselect.c?r1=1.145&r2=1.146) pgsql/src/backend/optimizer/prep: prepjointree.c (r1.62 -> r1.63) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/prep/prepjointree.c?r1=1.62&r2=1.63) prepunion.c (r1.165 -> r1.166) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/prep/prepunion.c?r1=1.165&r2=1.166) pgsql/src/backend/optimizer/util: clauses.c (r1.275 -> r1.276) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/clauses.c?r1=1.275&r2=1.276) var.c (r1.83 -> r1.84) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/var.c?r1=1.83&r2=1.84) pgsql/src/backend/rewrite: rewriteManip.c (r1.120 -> r1.121) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/rewrite/rewriteManip.c?r1=1.120&r2=1.121) pgsql/src/include/nodes: nodes.h (r1.220 -> r1.221) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/nodes.h?r1=1.220&r2=1.221) primnodes.h (r1.145 -> r1.146) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/primnodes.h?r1=1.145&r2=1.146) relation.h (r1.168 -> r1.169) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/relation.h?r1=1.168&r2=1.169) pgsql/src/include/optimizer: subselect.h (r1.35 -> r1.36) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/subselect.h?r1=1.35&r2=1.36) pgsql/src/test/regress/expected: join.out (r1.35 -> r1.36) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/join.out?r1=1.35&r2=1.36) join_1.out (r1.16 -> r1.17) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/join_1.out?r1=1.16&r2=1.17) pgsql/src/test/regress/sql: join.sql (r1.26 -> r1.27) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/join.sql?r1=1.26&r2=1.27)