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

Reply via email to