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

Reply via email to