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