Changeset: ee98bf47c63f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ee98bf47c63f
Modified Files:
        sql/server/rel_select.c
Branch: Jul2015
Log Message:

return proper error


diffs (61 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -5411,8 +5411,11 @@ rel_select_exp(mvc *sql, sql_rel *rel, S
                        te = rel_table_exp(sql, &rel, n->data.sym);
                } else 
                        ce = NULL;
-               if (!ce && !te)
+               if (!ce && !te) {
+                       if (sql->errstr[0])
+                               return NULL;
                        return sql_error(sql, 02, "SELECT: subquery result 
missing");
+               }
                /* here we should merge the column expressions we
                 * obtained so far with the table expression, ie
                 * t1.* or a subquery.
@@ -5722,12 +5725,12 @@ static sql_rel *
 rel_joinquery_(mvc *sql, sql_rel *rel, symbol *tab1, int natural, jt jointype, 
symbol *tab2, symbol *js)
 {
        operator_type op = op_join;
-       sql_rel *t1, *t2, *inner;
+       sql_rel *t1 = NULL, *t2 = NULL, *inner;
        int l_nil = 0, r_nil = 0;
 
        t1 = table_ref(sql, rel, tab1);
-       t2 = table_ref(sql, rel, tab2);
-
+       if (t1)
+               t2 = table_ref(sql, rel, tab2);
        if (!t1 || !t2)
                return NULL;
 
@@ -5891,8 +5894,10 @@ rel_crossquery(mvc *sql, sql_rel *rel, s
        symbol *tab1 = n->data.sym;
        symbol *tab2 = n->next->data.sym;
        sql_rel *t1 = table_ref(sql, rel, tab1);
-       sql_rel *t2 = table_ref(sql, rel, tab2);
-
+       sql_rel *t2 = NULL;
+       
+       if (t1)
+               t2 = table_ref(sql, rel, tab2);
        if (!t1 || !t2)
                return NULL;
 
@@ -5905,12 +5910,14 @@ rel_unionjoinquery(mvc *sql, sql_rel *re
 {
        dnode *n = q->data.lval->h;
        sql_rel *lv = table_ref(sql, rel, n->data.sym);
-       sql_rel *rv = table_ref(sql, rel, n->next->next->data.sym);
+       sql_rel *rv = NULL;
        int all = n->next->data.i_val;
        list *lexps, *rexps;
        node *m;
        int found = 0;
 
+       if (lv)
+                       rv = table_ref(sql, rel, n->next->next->data.sym);
        assert(n->next->type == type_int);
        if (!lv || !rv)
                return NULL;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to