Update of /cvsroot/monetdb/sql/src/server
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv17790/src/server

Modified Files:
        bin_optimizer.mx sql_optimize.mx sql_psm.mx sql_rel2bin.mx 
Log Message:
leak fixes in the psm code
(optimize phases are a bit more protected by asserts)


Index: sql_rel2bin.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_rel2bin.mx,v
retrieving revision 1.112
retrieving revision 1.113
diff -u -d -r1.112 -r1.113
--- sql_rel2bin.mx      26 Dec 2007 13:24:41 -0000      1.112
+++ sql_rel2bin.mx      30 Dec 2007 18:25:27 -0000      1.113
@@ -861,6 +861,7 @@
                list_destroy(l2);
                s->optimized = res->optimized = 2;
                if (res != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                }
                return res;
@@ -903,6 +904,7 @@
                        list_destroy(l);
                s->optimized = res->optimized = 2;
                if (res != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                }
                return res;
@@ -913,6 +915,7 @@
                stmt *res = push_semijoin(rel2bin(c, s->op1.stval), rel2bin(c, 
s->op2.stval));
                s->optimized = res->optimized = 2;
                if (res != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                }
                return res;
@@ -1028,6 +1031,7 @@
                res = stmt_list(nl);
                s->optimized = res->optimized = 2;
                if (res != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                }
                return res;
@@ -1037,6 +1041,7 @@
 
                if (s->flag == RDONLY && !mvc_debug_on(c, 8192)){
                        stmt *res = stmt_delta_table_bat( s->op1.cval, 
stmt_dup(s->h), s->flag);
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                        s->optimized = res->optimized = 2;
                        return res;
@@ -1049,6 +1054,7 @@
 
                if (s->flag == RDONLY && !mvc_debug_on(c, 8192)){
                        stmt *res = stmt_delta_table_idxbat( s->op1.idxval, 
s->flag);
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                        s->optimized = res->optimized = 2;
                        return res;

Index: sql_psm.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_psm.mx,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -d -r1.48 -r1.49
--- sql_psm.mx  31 Oct 2007 11:25:01 -0000      1.48
+++ sql_psm.mx  30 Dec 2007 18:25:27 -0000      1.49
@@ -584,21 +584,30 @@
                                stmt *b = NULL;
        
                                if (!(b = sequential_block(sql, NULL, restype, 
body, NULL, is_func))) {
+                                       sql_destroy_params(sql);
+                                       list_destroy(l);
                                        return NULL;
                                }
                        
                                /* check if we have a return statement */
-                               if (is_func && restype && !has_return(b)) 
+                               if (is_func && restype && !has_return(b)) {
+                                       sql_destroy_params(sql);
+                                       list_destroy(l);
                                        return sql_error(sql, 01, "Missing 
return statement");
-                               if (!is_func && !restype && has_return(b)) 
+                               }
+                               if (!is_func && !restype && has_return(b)) {
+                                       sql_destroy_params(sql);
+                                       list_destroy(l);
                                        return sql_error(sql, 01, "It is a 
procedure so it cannot have a return statement!!");
+                               }
        
                                /* in execute mode we instantiate the function 
*/
+                               sql_destroy_params(sql);
+
                                if (instantiate) {
+                                       list_destroy(l);
                                        return b;
                                } else {
-                                       sql_destroy_params(sql);
-
                                        f = mvc_create_func(sql, 
sql->session->schema, fname, l, restype, TRUE, is_aggr, "user", q, is_func);
                                        if (b) {
                                                id_col_l = 
stmt_list_dependencies(b, COLUMN_DEPENDENCY);
@@ -614,11 +623,14 @@
                                                list_destroy(view_id_l);
                                                stmt_destroy(b);
                                        }
+                                       list_destroy(l);
                                }
                        } else {
                                char *fmod = qname_module(ext_name);
                                char *fnme = qname_fname(ext_name);
                                mvc_create_func(sql, sql->session->schema, 
fname, l, restype, FALSE, is_aggr, fmod, fnme, is_func );
+                               sql_destroy_params(sql);
+                               list_destroy(l);
                        }
                }
        }

Index: bin_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/bin_optimizer.mx,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- bin_optimizer.mx    21 Dec 2007 17:02:25 -0000      1.7
+++ bin_optimizer.mx    30 Dec 2007 18:25:27 -0000      1.8
@@ -282,6 +282,7 @@
                        s = stmt_join(l, r, cmp_equal); 
                        ns = bin_optimizer(c, s);
                        stmt_destroy(s);
+                       assert(os->rewritten==NULL);
                        os->rewritten = stmt_dup(ns);
                        os->optimized = ns->optimized = 3;
                        return ns;
@@ -304,6 +305,7 @@
                        s = stmt_join(l, r, cmp_equal); 
                        ns = bin_optimizer(c, s);
                        stmt_destroy(s);
+                       assert(os->rewritten==NULL);
                        os->rewritten = stmt_dup(ns);
                        os->optimized = ns->optimized = 3;
                        return ns;
@@ -316,6 +318,7 @@
                                j->flag+1), j->flag);
                        ns = bin_optimizer(c, s);
                        stmt_destroy(s);
+                       assert(os->rewritten==NULL);
                        os->rewritten = stmt_dup(ns);
                        os->optimized = ns->optimized = 3;
                        return ns;
@@ -328,6 +331,7 @@
                                0));
                        ns = bin_optimizer(c, s);
                        stmt_destroy(s);
+                       assert(os->rewritten==NULL);
                        os->rewritten = stmt_dup(ns);
                        os->optimized = ns->optimized = 3;
                        return ns;
@@ -340,6 +344,7 @@
                                j->op2.stval->op1.aval->data.val.ival);
                        ns = bin_optimizer(c, s);
                        stmt_destroy(s);
+                       assert(os->rewritten==NULL);
                        os->rewritten = stmt_dup(ns);
                        os->optimized = ns->optimized = 3;
                        return ns;
@@ -388,6 +393,7 @@
                stmt_destroy(os);
                s->optimized = ns->optimized = 3;
                if (ns != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(ns);
                }
                return ns;
@@ -449,6 +455,7 @@
                stmt_destroy(os);
                s->optimized = ns->optimized = 3;
                if (ns != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(ns);
                }
                return ns;
@@ -593,6 +600,7 @@
                res = stmt_list(nl);
                s->optimized = res->optimized = 3;
                if (res != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                }
                return res;

Index: sql_optimize.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_optimize.mx,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -d -r1.86 -r1.87
--- sql_optimize.mx     26 Dec 2007 13:24:41 -0000      1.86
+++ sql_optimize.mx     30 Dec 2007 18:25:27 -0000      1.87
@@ -1704,6 +1704,7 @@
                res = stmt_reljoin2(l1, l2);
                s->optimized = res->optimized = 1;
                if (res != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                }
                return res;
@@ -1721,6 +1722,7 @@
                res = stmt_relselect(l);
                s->optimized = res->optimized = 1;
                if (res != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                }
                return res;
@@ -1826,6 +1828,7 @@
                res = stmt_list(nl);
                s->optimized = res->optimized = 1;
                if (res != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(res);
                }
                return res;
@@ -1840,6 +1843,7 @@
 
                s->optimized = np->optimized = 1;
                if (np != s) {
+                       assert(s->rewritten==NULL);
                        s->rewritten = stmt_dup(np);
                }
                return np;
@@ -1859,6 +1863,7 @@
                        stmt_destroy(f);
                        s->optimized = np->optimized = 1;
                        if (np != s) {
+                               assert(s->rewritten==NULL);
                                s->rewritten = stmt_dup(np);
                        }
                        return np;
@@ -1873,6 +1878,7 @@
                        stmt_destroy(pivots);
                        s->optimized = np->optimized = 1;
                        if (np != s) {
+                               assert(s->rewritten==NULL);
                                s->rewritten = stmt_dup(np);
                        }
                        return np;


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to