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