Update of /cvsroot/monetdb/sql/src/server
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv13442/src/server
Modified Files:
Tag: SQL_2-16
sql_optimize.mx sql_select.mx sql_statement.mx
Log Message:
fixes for bug 1639108 mserver crashes on delete query
Index: sql_statement.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_statement.mx,v
retrieving revision 1.139.2.1
retrieving revision 1.139.2.2
diff -u -d -r1.139.2.1 -r1.139.2.2
--- sql_statement.mx 29 Jan 2007 09:42:19 -0000 1.139.2.1
+++ sql_statement.mx 12 Feb 2007 20:10:17 -0000 1.139.2.2
@@ -1392,7 +1392,7 @@
s->op1.stval = op1;
s->op2.stval = op2;
s->flag = cmptype;
- s->nrcols = 1;
+ s->nrcols = (op1->nrcols==2)?2:1;
s->h = stmt_dup(s->op1.stval->h);
s->t = stmt_dup(s->op1.stval->t);
return s;
@@ -1407,7 +1407,7 @@
s->op2.stval = op2;
s->op3.stval = op3;
s->flag = cmptype;
- s->nrcols = 1;
+ s->nrcols = (op1->nrcols==2)?2:1;
s->h = stmt_dup(s->op1.stval->h);
s->t = stmt_dup(s->op1.stval->t);
return s;
@@ -1422,7 +1422,7 @@
s->op2.stval = op2;
s->op3.stval = op3;
s->flag = cmp;
- s->nrcols = 1;
+ s->nrcols = (op1->nrcols==2)?2:1;
s->h = stmt_dup(s->op1.stval->h);
s->t = stmt_dup(s->op1.stval->t);
return s;
@@ -1437,7 +1437,7 @@
s->op1.stval = op1;
s->op2.stval = op2;
s->flag = cmptype;
- s->nrcols = 1;
+ s->nrcols = (op1->nrcols==2)?2:1;
s->h = stmt_dup(s->op1.stval->h);
return s;
}
@@ -1451,7 +1451,7 @@
s->op2.stval = op2;
s->op3.stval = op3;
s->flag = cmp;
- s->nrcols = 1;
+ s->nrcols = (op1->nrcols==2)?2:1;
s->h = stmt_dup(s->op1.stval->h);
return s;
}
@@ -2147,6 +2147,9 @@
return tail_type(st->op1.stval);
case st_atom:
return atom_type(st->op1.aval);
+ case st_var:
+ if (st->op2.typeval.type)
+ return &st->op2.typeval;
default:
fprintf(stderr, "missing head type %u: %s\n", st->type,
st_type2string(st->type));
return NULL;
@@ -2496,6 +2499,10 @@
fprintf(fp," aggr=%d", (int)s->aggr);
if (s->flag)
fprintf(fp," flag=%d", (int)s->flag);
+ if (s->h)
+ fprintf(fp," h=%p", s->h);
+ if (s->t)
+ fprintf(fp," t=%p", s->t);
fprintf(fp," ptr=%p", s);
switch (s->type) {
@@ -2656,7 +2663,7 @@
fprintf(fp, "id%d -> id%d
[headlabel=\"h\",color=green];\n",
stmt_stmt2dot(s->h, l, i, fp), -(s->optimized));
if (s->t)
- fprintf(fp, "id%d -> id%d
[headlabel=\"t\",color=green];\n",
+ fprintf(fp, "id%d -> id%d
[headlabel=\"t\",color=orange];\n",
stmt_stmt2dot(s->t, l, i, fp), -(s->optimized));
}
Index: sql_optimize.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_optimize.mx,v
retrieving revision 1.76
retrieving revision 1.76.2.1
diff -u -d -r1.76 -r1.76.2.1
--- sql_optimize.mx 17 Jan 2007 13:36:49 -0000 1.76
+++ sql_optimize.mx 12 Feb 2007 20:10:13 -0000 1.76.2.1
@@ -188,6 +188,8 @@
case st_append:
case st_diff:
case st_union:
+ case st_mark:
+ case st_var:
return 0;
default:
#ifndef NDEBUG
Index: sql_select.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_select.mx,v
retrieving revision 1.175.2.1
retrieving revision 1.175.2.2
diff -u -d -r1.175.2.1 -r1.175.2.2
--- sql_select.mx 29 Jan 2007 09:42:19 -0000 1.175.2.1
+++ sql_select.mx 12 Feb 2007 20:10:14 -0000 1.175.2.2
@@ -3197,9 +3197,11 @@
stmt *t, *oref = stmt_dup(o->next->data);
/* need to fix the oref tail */
+ /*
t = stmt_dup(oref->t->t);
stmt_destroy(oref->t);
oref->t = t;
+ */
t = stmt_reverse(oref);
if (sc->token == SQL_NOT_EXISTS)
@@ -3505,6 +3507,34 @@
stmt_destroy(tmp);
}
}
+ /* just add a select whole column */
+ for (n = scp->outers->h; n; n = n->next) {
+ stmt *o = n->data;
+ stmt *tmp = complex_find_subset(s, o);
+
+ if (!tmp) {
+ tmp = stmt_column(stmt_const(stmt_dup(o),
stmt_atom_int(0)), stmt_dup(o), NULL);
+ pending = 1;
+ if (!cur) {
+ cur = tmp;
+ continue;
+ }
+ } else if (!cur) {
+ cur = tmp;
+ continue;
+ }
+ if (pending) {
+ pending = 0;
+ tmp = stmt_join(stmt_dup(cur),
+ stmt_reverse(tmp), cmp_all);
+ if (s)
+ s = sql_and(sql, scp, s, tmp, sql_where);
+ else
+ s = stmt_set(tmp);
+ } else if (tmp) {
+ stmt_destroy(tmp);
+ }
+ }
if (!cur)
return s;
if ((t = scope_bind(scp, NULL, "row")) != NULL) {
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins