Changeset: 3f4c52f1c7a2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3f4c52f1c7a2
Modified Files:
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.mal
        sql/server/rel_select.c
Branch: default
Log Message:

merged with Jul2017


diffs (72 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -2784,11 +2784,8 @@ zero_or_one(ptr ret, const bat *bid)
                BATiter bi = bat_iterator(b);
                p = BUNtail(bi, 0);
        } else {
-               char buf[BUFSIZ];
-
                p = NULL;
-               snprintf(buf, BUFSIZ, "21000!cardinality violation (" BUNFMT 
">1)", c);
-               throw(SQL, "zero_or_one", "%s", buf);
+               throw(SQL, "zero_or_one", "21000!cardinality violation, scalar 
value expected");
        }
        _s = ATOMsize(ATOMtype(b->ttype));
        if (ATOMextern(b->ttype)) {
diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal
--- a/sql/backends/monet5/sql.mal
+++ b/sql/backends/monet5/sql.mal
@@ -339,10 +339,7 @@ inline function sql.subzero_or_one( b:ba
        c01 := calc.not(c0);
        c1 := calc.>(m,1:lng);
        c11 := calc.and(c01,c1);
-       ms := calc.str(m); 
-       msg := str.+("21000!zero_or_one: cardinality violation (", ms);
-       msg1 := str.+(msg, ">1)");
-       sql.assert(c11, msg1);
+       sql.assert(c11, "21000!zero_or_one: cardinality violation, scalar 
expression expected");
        return zero_or_one := b;
 end sql.subzero_or_one;
 
@@ -358,10 +355,7 @@ inline function sql.all( b:bat[:any_1], 
        c01 := calc.not(c0);
        c1 := calc.>(m,1:lng);
        c11 := calc.and(c01,c1);
-       ms := calc.str(m); 
-       msg := str.+("21000!zero_or_one: cardinality violation (", ms);
-       msg1 := str.+(msg, ">1)");
-       sql.assert(c11, msg1);
+       sql.assert(c11, "21000!zero_or_one: cardinality violation, scalar 
expression expected ");
        return all := b;
 end sql.all;
 
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
@@ -4914,7 +4914,7 @@ rel_query(mvc *sql, sql_rel *rel, symbol
                sql_rel *fnd = NULL;
 
                for (n = fl->h; n ; n = n->next) {
-                       int lateral = check_is_lateral(n->data.sym);
+                       int lateral = check_is_lateral(n->data.sym), 
lateral_used = 0;
 
                        fnd = table_ref(sql, NULL, n->data.sym, 0);
                        if (!fnd && (rel || lateral) && sql->session->status != 
-ERR_AMBIGUOUS) {
@@ -4938,6 +4938,7 @@ rel_query(mvc *sql, sql_rel *rel, symbol
                                        fnd = table_ref(sql, res, n->data.sym, 
lateral);
                                        if (fnd && is_project(fnd->op)) 
                                                fnd->exps = 
list_merge(fnd->exps, pre_exps, (fdup)NULL);
+                                       lateral_used = 1;
                                } else {
                                        fnd = table_ref(sql, rel, n->data.sym, 
0);
                                }
@@ -4946,7 +4947,7 @@ rel_query(mvc *sql, sql_rel *rel, symbol
 
                        if (!fnd)
                                break;
-                       if (res && !lateral)
+                       if (res && !lateral_used)
                                res = rel_crossproduct(sql->sa, res, fnd, 
op_join);
                        else
                                res = fnd;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to