Changeset: 35e0afd740e8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=35e0afd740e8
Modified Files:
        sql/backends/monet5/sql_gencode.c
        sql/server/rel_select.c
        sql/test/VOC/run.all
Branch: default
Log Message:

look for Filter functions only in the sys schema.


diffs (116 lines):

diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -399,7 +399,7 @@ dump_joinN(backend *sql, MalBlkPtr mb, s
        char *mod = sql_func_mod(s->op4.funcval->func);
        char *fimp = sql_func_imp(s->op4.funcval->func);
        InstrPtr q;
-       int k, op1, op2, op3;
+       int k, op1, op2, op3 = 0;
 
        /* dump left and right operands */
        op1 = _dumpstmt(sql, mb, s->op1);
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
@@ -2045,11 +2045,11 @@ rel_filter_exp_(mvc *sql, sql_rel *rel, 
 
        /* find filter function */
        if (rs2)
-               f = sql_bind_func3(sql->sa, sql->session->schema, filter_op, 
exp_subtype(ls), exp_subtype(rs), exp_subtype(rs2), F_FILT);
+               f = sql_bind_func3(sql->sa, mvc_bind_schema(sql,"sys"), 
filter_op, exp_subtype(ls), exp_subtype(rs), exp_subtype(rs2), F_FILT);
        else
-               f = sql_bind_func(sql->sa, sql->session->schema, filter_op, 
exp_subtype(ls), exp_subtype(rs), F_FILT);
+               f = sql_bind_func(sql->sa, mvc_bind_schema(sql,"sys"), 
filter_op, exp_subtype(ls), exp_subtype(rs), F_FILT);
        if (!f) {
-               f = sql_find_func(sql->sa, sql->session->schema, filter_op, 
(rs2)?3:2, F_FILT);
+               f = sql_find_func(sql->sa, mvc_bind_schema(sql,"sys"), 
filter_op, (rs2)?3:2, F_FILT);
                if (f) {
                        node *m = f->func->ops->h;
                        sql_arg *a = m->data;
@@ -2510,7 +2510,6 @@ rel_logical_value_exp(mvc *sql, sql_rel 
                return NULL;
        }
        case SQL_LIKE:
-       case SQL_NOT_LIKE:
        {
                symbol *lo = sc->data.lval->h->data.sym;
                symbol *ro = sc->data.lval->h->next->data.sym;
@@ -2518,6 +2517,7 @@ rel_logical_value_exp(mvc *sql, sql_rel 
                sql_subtype *st = sql_bind_localtype("str");
                sql_exp *le = rel_value_exp(sql, rel, lo, f, ek);
                sql_exp *re, *ee = NULL;
+               char *like = insensitive ? "ilike" : "like";
 
                if (!le)
                        return NULL;
@@ -2543,19 +2543,9 @@ rel_logical_value_exp(mvc *sql, sql_rel 
                        char *escape = ro->data.lval->h->next->data.sval;
                        ee = exp_atom(sql->sa, atom_string(sql->sa, st, 
sa_strdup(sql->sa, escape)));
                }
-               if (sc->token == SQL_LIKE) {
-                       char *like = insensitive ? "ilike" : "like";
-                       if (ee)
-                               return rel_nop_(sql, le, re, ee, NULL, NULL, 
like, card_value);
-                       return rel_binop_(sql, le, re, NULL, like, card_value);
-               } else {
-                       char *like = insensitive ? "ilike" : "like";
-                       if (ee)
-                               le = rel_nop_(sql, le, re, ee, NULL, NULL, 
like, card_value);
-                       else
-                               le = rel_binop_(sql, le, re, NULL, like, 
card_value);
-                       return rel_unop_(sql, le, NULL, "not", card_value);
-               }
+               if (ee)
+                       return rel_nop_(sql, le, re, ee, NULL, NULL, like, 
card_value);
+               return rel_binop_(sql, le, re, NULL, like, card_value);
        }
        case SQL_BETWEEN:
        case SQL_NOT_BETWEEN:
@@ -2941,7 +2931,6 @@ rel_logical_exp(mvc *sql, sql_rel *rel, 
                return rel;
        }
        case SQL_LIKE:
-       case SQL_NOT_LIKE:
        {
                symbol *lo = sc->data.lval->h->data.sym;
                symbol *ro = sc->data.lval->h->next->data.sym;
@@ -2976,11 +2965,7 @@ rel_logical_exp(mvc *sql, sql_rel *rel, 
                }
                if ((le = rel_check_type(sql, st, le, type_equal)) == NULL) 
                        return sql_error(sql, 02, "LIKE: wrong type, should be 
string");
-               if (sc->token == SQL_LIKE)
-                       return rel_compare_exp(sql, rel, le, re,
-                                       (insensitive ? "ilike" : "like"), ee, 
TRUE);
-               return rel_compare_exp(sql, rel, le, re,
-                               (insensitive ? "not_ilike" : "not_like"), ee, 
TRUE);
+               return rel_compare_exp(sql, rel, le, re, (insensitive ? "ilike" 
: "like"), ee, TRUE);
        }
        case SQL_BETWEEN:
        case SQL_NOT_BETWEEN:
@@ -4527,8 +4512,11 @@ rel_select_exp(mvc *sql, sql_rel *rel, s
 
        if (sn->where) {
                sql_rel *r = rel_logical_exp(sql, rel, sn->where, sql_where);
-               if (!r)
-                       return sql_error(sql, 02, "Subquery result missing");
+               if (!r) {
+                       if (sql->errstr[0] == 0)
+                               return sql_error(sql, 02, "Subquery result 
missing");
+                       return NULL;
+               }
                rel = r;
        }
 
diff --git a/sql/test/VOC/run.all b/sql/test/VOC/run.all
--- a/sql/test/VOC/run.all
+++ b/sql/test/VOC/run.all
@@ -19,7 +19,7 @@
 
 PWD=`pwd`
 echo $PWD
-SQL='mclient -lsql -umonetdb -Pmonetdb'
+SQL='mclient -lsql'
 if [ $# -eq 1 ]; then
        SQL=$1
 fi
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to