OSDN Git Service

Clean up rewriter routines to use expression_tree_walker and
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 1 Oct 1999 04:08:24 +0000 (04:08 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 1 Oct 1999 04:08:24 +0000 (04:08 +0000)
commit389af07cf0bf80655b4f8f4eb0add8859d2154f8
tree38e81bcdb5e7d8ca864d2220c9e15628ba901e89
parentce1f5ed5472d6fb3878cfc0ee5026a3764c25b57
Clean up rewriter routines to use expression_tree_walker and
expression_tree_mutator rather than ad-hoc tree walking code.  This shortens
the code materially and fixes a fair number of sins of omission.  Also,
change modifyAggrefQual to *not* recurse into subselects, since its mission
is satisfied if it removes aggregate functions from the top level of a
WHERE clause.  This cures problems with queries of the form SELECT ...
WHERE x IN (SELECT ... HAVING something-using-an-aggregate), which would
formerly get mucked up by modifyAggrefQual.  The routine is still
fundamentally broken, of course, but I don't think there's any way to get
rid of it before we implement subselects in FROM ...
src/backend/rewrite/locks.c
src/backend/rewrite/rewriteHandler.c
src/backend/rewrite/rewriteManip.c
src/include/rewrite/rewriteManip.h