Changeset: f4765a29cd3c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f4765a29cd3c
Modified Files:
sql/server/rel_schema.c
sql/server/rel_select.c
sql/test/sciql/Tests/01_create_02.sql
sql/test/sciql/Tests/01_create_02.stable.out
Branch: sciql
Log Message:
Always search for the array_* UDFs in the "sys" schema, i.s.o. in the current
schema.
This solves the problem with failed function binding when a schema other than
"sys" is used.
Modified an existing query to test this and approved stable.out
diffs (80 lines):
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -1071,7 +1071,7 @@ rel_create_table(mvc *sql, sql_schema *s
append(args, exp_atom(sql->sa,
atom_general(sql->sa, &sc->type, sc->dim->stop)));
append(args, exp_atom_int(sql->sa, N[i]));
append(args, exp_atom_int(sql->sa, M[i]));
- sf = sql_bind_func_(sql->sa,
sql->session->schema, "array_series", exps_subtype(args), F_FUNC);
+ sf = sql_bind_func_(sql->sa,
mvc_bind_schema(sql, "sys"), "array_series", exps_subtype(args), F_FUNC);
if (!sf)
return sql_error(sql, 02, "failed to
bind to the SQL function \"array_series\"");
func_exp = exp_op(sql->sa, args, sf);
@@ -1098,7 +1098,7 @@ rel_create_table(mvc *sql, sql_schema *s
}
append(args, exp_atom_lng(sql->sa, cntall));
append(args, e);
- sf = sql_bind_func_(sql->sa,
sql->session->schema, "array_filler", exps_subtype(args), F_FUNC);
+ sf = sql_bind_func_(sql->sa,
mvc_bind_schema(sql, "sys"), "array_filler", exps_subtype(args), F_FUNC);
if (!sf)
return sql_error(sql, 02, "failed to
bind to the SQL function \"array_filler\"");
func_exp = exp_op(sql->sa, args, sf);
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
@@ -511,7 +511,7 @@ rel_arrayslice(mvc *sql, sql_table *t, c
/* Only create 1 group and repeat the numbers once */
append(args, exp_atom_int(sql->sa, 1));
append(args, exp_atom_int(sql->sa, 1));
- sf = sql_bind_func_(sql->sa, sql->session->schema,
"array_series1", exps_subtype(args), F_FUNC);
+ sf = sql_bind_func_(sql->sa, mvc_bind_schema(sql,
"sys"), "array_series1", exps_subtype(args), F_FUNC);
if (!sf)
return sql_error(sql, 02, "failed to bind to
the SQL function \"array_series1\"");
slc_val = exp_op(sql->sa, args, sf);
@@ -4177,7 +4177,7 @@ _rel_tiling_aggr(mvc *sql, sql_rel **rel
append(srs_args, os_sto[i]);
append(srs_args, nrep[i]);
append(srs_args, ngrp[i]);
- if (!(sf = sql_bind_func_(sql->sa, sql->session->schema,
"array_series1", exps_subtype(srs_args), F_FUNC)))
+ if (!(sf = sql_bind_func_(sql->sa, mvc_bind_schema(sql, "sys"),
"array_series1", exps_subtype(srs_args), F_FUNC)))
return sql_error(sql, 02, "failed to bind to the SQL
function \"array_series1\"");
append(aggr_args, dim[i]);
@@ -4193,7 +4193,7 @@ _rel_tiling_aggr(mvc *sql, sql_rel **rel
append(aggr_args, exp);
append(aggr_types, exp_subtype(exp));
}
- if (!(sf = sql_bind_func_(sql->sa, sql->session->schema, aggrstr2,
aggr_types, F_FUNC)))
+ if (!(sf = sql_bind_func_(sql->sa, mvc_bind_schema(sql, "sys"),
aggrstr2, aggr_types, F_FUNC)))
return sql_error(sql, 02, "failed to bind to the SQL function
\"%s\"", aggrstr2);
exp = exp_op(sql->sa, aggr_args, sf);
if (!exp->name) {
diff --git a/sql/test/sciql/Tests/01_create_02.sql
b/sql/test/sciql/Tests/01_create_02.sql
--- a/sql/test/sciql/Tests/01_create_02.sql
+++ b/sql/test/sciql/Tests/01_create_02.sql
@@ -1,3 +1,6 @@
+CREATE SCHEMA TS;
+SET SCHEMA TS;
+
-- create an unbounded array
CREATE ARRAY ary (x INTEGER DIMENSION, v FLOAT DEFAULT 3.7);
@@ -5,3 +8,6 @@ SELECT * FROM ary;
DROP ARRAY ary;
+SET SCHEMA SYS;
+DROP SCHEMA TS;
+
diff --git a/sql/test/sciql/Tests/01_create_02.stable.out
b/sql/test/sciql/Tests/01_create_02.stable.out
--- a/sql/test/sciql/Tests/01_create_02.stable.out
+++ b/sql/test/sciql/Tests/01_create_02.stable.out
@@ -25,7 +25,7 @@ Ready.
#CREATE ARRAY ary (x INTEGER DIMENSION, v FLOAT DEFAULT 3.7);
#SELECT * FROM ary;
-% sys.ary, sys.ary # table_name
+% ts.ary, ts.ary # table_name
% x, v # name
% int, double # type
% 1, 24 # length
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list