diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 1999-05-13 07:29:22 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 1999-05-13 07:29:22 +0000 |
commit | 507a0a2ab09144f524e3239b7fc201ad1ad1b78e (patch) | |
tree | 77c434943724f627e3c901f06443f02ae57d467b /src/backend/rewrite/rewriteHandler.c | |
parent | f80642137cc0d2dbdaea68b8e439de0d50a5c01f (diff) | |
download | postgresql-507a0a2ab09144f524e3239b7fc201ad1ad1b78e.tar.gz postgresql-507a0a2ab09144f524e3239b7fc201ad1ad1b78e.zip |
Rip out QueryTreeList structure, root and branch. Querytree
lists are now plain old garden-variety Lists, allocated with palloc,
rather than specialized expansible-array data allocated with malloc.
This substantially simplifies their handling and eliminates several
sources of memory leakage.
Several basic types of erroneous queries (syntax error, attempt to
insert a duplicate key into a unique index) now demonstrably leak
zero bytes per query.
Diffstat (limited to 'src/backend/rewrite/rewriteHandler.c')
-rw-r--r-- | src/backend/rewrite/rewriteHandler.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index c5503a6f0b1..a5300e5672a 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -6,7 +6,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.40 1999/05/12 17:04:47 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.41 1999/05/13 07:28:41 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -3107,25 +3107,25 @@ void create_list(Node *ptr, List **intersect_list) * instead. */ Node *intersect_tree_analyze(Node *tree, Node *first_select, Node *parsetree) { - Node *result = (Node *)NIL; - List *arg; - - if(IsA(tree, SelectStmt)) + Node *result = (Node *) NIL; + List *arg; + + if (IsA(tree, SelectStmt)) { - QueryTreeList *qtree; - - /* If we get to the tree given in first_select return - * parsetree instead of performing parse_analyze() */ - if(tree == first_select){ - result = parsetree; - } - else { - /* transform the 'raw' nodes to 'cooked' Query nodes */ - qtree = parse_analyze(lcons(tree, NIL), NULL); - result = (Node *)qtree->qtrees[0]; - } - + /* If we get to the tree given in first_select return + * parsetree instead of performing parse_analyze() */ + if (tree == first_select) + { + result = parsetree; + } + else + { + /* transform the 'raw' nodes to 'cooked' Query nodes */ + List *qtree = parse_analyze(lcons(tree, NIL), NULL); + result = (Node *) lfirst(qtree); + } } + if(IsA(tree,Expr)) { /* Call recursively for every argument of the node */ |