Clean up rewriter routines to use expression_tree_walker and

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

Commit: 389af07cf0bf80655b4f8f4eb0add8859d2154f8
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 1999-10-01T04:08:24Z
Releases: 7.1.1
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 ...

Files

PathChange+/−
src/backend/rewrite/locks.c modified +61 −76
src/backend/rewrite/rewriteHandler.c modified +511 −1551
src/backend/rewrite/rewriteManip.c modified +395 −817
src/include/rewrite/rewriteManip.h modified +12 −13