aboutsummaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rewriteHandler.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>1999-05-13 07:29:22 +0000
committerTom Lane <tgl@sss.pgh.pa.us>1999-05-13 07:29:22 +0000
commit507a0a2ab09144f524e3239b7fc201ad1ad1b78e (patch)
tree77c434943724f627e3c901f06443f02ae57d467b /src/backend/rewrite/rewriteHandler.c
parentf80642137cc0d2dbdaea68b8e439de0d50a5c01f (diff)
downloadpostgresql-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.c36
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 */