Changeset: b41a8dfa5aed for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b41a8dfa5aed
Added Files:
        sql/test/BugTracker-2017/Tests/date-arithmetic.Bug-6415.stable.err
        sql/test/BugTracker-2017/Tests/date-arithmetic.Bug-6415.stable.out
Modified Files:
        clients/R/Tests/dbi.R
        sql/backends/monet5/Tests/rapi13.sql
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_upgrades.c
        sql/common/sql_types.c
        sql/server/rel_schema.c
        sql/server/rel_updates.c
        sql/test/BugDay_2005-10-06_2.9.3/Tests/set_types.SF-932360.sql
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.err
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.out
        sql/test/BugTracker-2011/Tests/default-interval.Bug-2877.sql
        
sql/test/BugTracker-2012/Tests/now_results_in_illegal_argument.Bug-2978.sql
        sql/test/BugTracker-2014/Tests/aggregates-intervals.Bug-3533.sql
        sql/test/BugTracker-2015/Tests/div_zero.Bug-3742.sql
        sql/test/BugTracker-2015/Tests/div_zero.Bug-3742.stable.out
        sql/test/BugTracker-2015/Tests/timestamp_convert.Bug-3815.sql
        sql/test/BugTracker-2015/Tests/timestamp_convert.Bug-3815.stable.out
        
sql/test/BugTracker-2016/Tests/column_name_lost_in_in_operator.Bug-6123.sql
        
sql/test/BugTracker-2016/Tests/column_name_lost_in_in_operator.Bug-6123.stable.out
        sql/test/BugTracker-2016/Tests/epoch.Bug-3979.sql
        sql/test/BugTracker-2016/Tests/select-in-from.Bug-6119.sql
        sql/test/BugTracker-2017/Tests/crash_on_NULL_ptr.Bug-6130.sql
        sql/test/BugTracker-2017/Tests/date-arithmetic.Bug-6415.sql
        sql/test/BugTracker-2019/Tests/cast-interval.Bug-6793.sql
        sql/test/BugTracker-2019/Tests/cast-interval.Bug-6793.stable.err
        sql/test/BugTracker-2019/Tests/cast-interval.Bug-6793.stable.out
        sql/test/SQLancer/Tests/sqlancer02.sql
        sql/test/SQLancer/Tests/sqlancer02.stable.err
        sql/test/SQLancer/Tests/sqlancer02.stable.out
        sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.sql
        sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.err
        sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.out
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/lateral/Tests/lateral.sql
        sql/test/miscellaneous/Tests/simple_selects.sql
        sql/test/miscellaneous/Tests/simple_selects.stable.err
        sql/test/miscellaneous/Tests/simple_selects.stable.out
        sql/test/pg_regress/Tests/date.stable.err
        sql/test/pg_regress/Tests/date.stable.out
        sql/test/pg_regress/Tests/interval.stable.err.int128
        sql/test/pg_regress/Tests/interval.stable.out
        sql/test/pg_regress/Tests/interval.stable.out.int128
        sql/test/pg_regress/Tests/reltime.sql
        sql/test/pg_regress/Tests/time.stable.err
        sql/test/pg_regress/Tests/time.stable.out
        sql/test/pg_regress/Tests/timestamp.sql
        sql/test/pg_regress/Tests/timestamp.stable.err
        sql/test/pg_regress/Tests/timestamp.stable.out
        sql/test/pg_regress/Tests/timestamptz.sql
        sql/test/pg_regress/Tests/timestamptz.stable.err
        sql/test/pg_regress/Tests/timestamptz.stable.out
        sql/test/pg_regress/Tests/timetz.stable.err
        sql/test/pg_regress/Tests/timetz.stable.out
        sql/test/snodgrass/Tests/cast_select.sql
        sql/test/snodgrass/Tests/cast_select.stable.err
        sql/test/snodgrass/Tests/cast_select.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
Branch: default
Log Message:

merged


diffs (truncated from 3319 to 300 lines):

diff --git a/clients/R/Tests/dbi.R b/clients/R/Tests/dbi.R
--- a/clients/R/Tests/dbi.R
+++ b/clients/R/Tests/dbi.R
@@ -193,7 +193,7 @@ stopifnot(identical("Роман Mühleisen", 
dbGetQuery(conn,"SELECT a FROM monetdbtest")$a[[1]]))
 dbRollback(conn)
 
 # this returns a column with esoteric type MONTH_INTERVAL
-stopifnot(identical(1L, as.integer(dbGetQuery(con, "select cast(1 as interval 
month) - cast(0 as interval month)")[[1]][[1]])))
+stopifnot(identical(1L, as.integer(dbGetQuery(con, "select interval '1' month 
+ interval '0' month")[[1]][[1]])))
 
 # reserved words in data frame column names
 stopifnot(dbIsValid(conn))
diff --git a/sql/backends/monet5/Tests/rapi13.sql 
b/sql/backends/monet5/Tests/rapi13.sql
--- a/sql/backends/monet5/Tests/rapi13.sql
+++ b/sql/backends/monet5/Tests/rapi13.sql
@@ -17,12 +17,12 @@ 2015-06-03 15:11:17.000000|2|"4006A4"|52
 2015-06-03 15:11:17.000000|2|"45AC45"|52.12491|6.03063|3.6e+04
 
 # three return columns works
-CREATE FUNCTION working_test(stt string, tss bigint, lat double, lon double, 
alt double) returns table (i int, j int, k int) language R {
+CREATE FUNCTION working_test(stt string, tss interval second, lat double, lon 
double, alt double) returns table (i int, j int, k int) language R {
        return(data.frame(1:10, 1:10, 1:10))
 };
 
 # but four does not? something to do with the amount of return columns?
-CREATE FUNCTION broken_test(stt string, tss bigint, lat double, lon double, 
alt double) returns table (i int, j int, k int, l int) language R {
+CREATE FUNCTION broken_test(stt string, tss interval second, lat double, lon 
double, alt double) returns table (i int, j int, k int, l int) language R {
        return(data.frame(1:10, 1:10, 1:10, 1:10))
 };
 
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -4567,17 +4567,8 @@ sql_delete_set_Fkeys(backend *be, sql_ke
 
                if (action == ACT_SET_DEFAULT) {
                        if (fc->c->def) {
-                               stmt *sq;
-                               char *msg, *typestr = 
subtype2string2(&fc->c->type);
-                               if(!typestr)
-                                       return sql_error(sql, 02, 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
-                               msg = sa_message(sql->sa, "select cast(%s as 
%s);", fc->c->def, typestr);
-                               _DELETE(typestr);
-                               sq = rel_parse_value(be, msg, sql->emode);
-                               if (!sq)
-                                       return NULL;
-                               upd = sq;
-                       }  else {
+                               upd = rel_parse_value(be, sa_message(sql->sa, 
"select %s;", fc->c->def), sql->emode);
+                       } else {
                                upd = stmt_atom(be, atom_general(sql->sa, 
&fc->c->type, NULL));
                        }
                } else {
@@ -4630,16 +4621,7 @@ sql_update_cascade_Fkeys(backend *be, sq
                        upd = updates[c->c->colnr];
                } else if (action == ACT_SET_DEFAULT) {
                        if (fc->c->def) {
-                               stmt *sq;
-                               char *msg, *typestr = 
subtype2string2(&fc->c->type);
-                               if(!typestr)
-                                       return sql_error(sql, 02, 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
-                               msg = sa_message(sql->sa, "select cast(%s as 
%s);", fc->c->def, typestr);
-                               _DELETE(typestr);
-                               sq = rel_parse_value(be, msg, sql->emode);
-                               if (!sq)
-                                       return NULL;
-                               upd = sq;
+                               upd = rel_parse_value(be, sa_message(sql->sa, 
"select %s;", fc->c->def), sql->emode);
                        } else {
                                upd = stmt_atom(be, atom_general(sql->sa, 
&fc->c->type, NULL));
                        }
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
@@ -316,7 +316,6 @@ create_table_or_view(mvc *sql, char* sna
                sql_column *c = n->data;
 
                if (c->def) {
-                       char *buf, *typestr;
                        sql_rel *r = NULL;
                        list *id_l;
 
@@ -325,21 +324,7 @@ create_table_or_view(mvc *sql, char* sna
                                sql->sa = osa;
                                throw(SQL, "sql.catalog",SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
                        }
-                       buf = sa_alloc(sql->sa, strlen(c->def) + 8);
-                       if (!buf) {
-                               sa_destroy(sql->sa);
-                               sql->sa = osa;
-                               throw(SQL, "sql.catalog",SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-                       }
-                       typestr = subtype2string2(&c->type);
-                       if (!typestr) {
-                               sa_destroy(sql->sa);
-                               sql->sa = osa;
-                               throw(SQL, "sql.catalog",SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-                       }
-                       snprintf(buf, BUFSIZ, "select cast(%s as %s);", c->def, 
typestr);
-                       _DELETE(typestr);
-                       r = rel_parse(sql, s, buf, m_deps);
+                       r = rel_parse(sql, s, sa_message(sql->sa, "select %s;", 
c->def), m_deps);
                        if (!r || !is_project(r->op) || !r->exps || 
list_length(r->exps) != 1 ||
                                rel_check_type(sql, &c->type, r, 
r->exps->h->data, type_equal) == NULL) {
                                if (r)
diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -2980,18 +2980,35 @@ sql_update_default(Client c, mvc *sql, c
                                        "DROP FUNCTION 
\"sys\".\"getcontent\"(url);\n"
                                        "DROP AGGREGATE 
\"json\".\"output\"(json);\n");
 
-                       /* Move sys.degrees and sys.radians to sql_types.c 
definitions */
+                       /* Move sys.degrees and sys.radians to sql_types.c 
definitions (I did this at the bat_logger) Remove the obsolete entries at 
privileges table */
+                       pos += snprintf(buf + pos, bufsize - pos,
+                                       "delete from privileges where obj_id in 
(select obj_id from privileges left join functions on privileges.obj_id = 
functions.id where functions.id is null and privileges.obj_id not in ((SELECT 
tables.id from tables), 0));\n");
+                       /* Remove sql_add and sql_sub between interval and 
numeric types */
                        pos += snprintf(buf + pos, bufsize - pos,
-                                       "delete from args where args.id in 
(select args.id from args left join functions on args.func_id = functions.id 
where args.name in ('r', 'd') and functions.id is null);\n"
-                                       "delete from privileges where obj_id in 
(select obj_id from privileges left join functions on privileges.obj_id = 
functions.id where functions.id is null and privileges.obj_id not in ((SELECT 
tables.id from tables), 0));\n");
+                                       "delete from functions where name in 
('sql_sub','sql_add') and func in ('+','-') and id in (select func_id from args 
where name = 'res_0' and type in ('sec_interval','month_interval'));\n");
+                       /* Remove arguments with no function correspondent */
+                       pos += snprintf(buf + pos, bufsize - pos,
+                                       "delete from args where id in (select 
args.id from args left join functions on args.func_id = functions.id where 
functions.id is null);\n");
 
-                       sql_subtype *types[2] = {sql_bind_localtype("flt"), 
sql_bind_localtype("dbl")};
                        list *functions = sa_list(sql->sa);
+                       /* Adding fixed versions of degrees and radians 
functions */
+                       sql_subtype *flt_types[2] = {sql_bind_localtype("flt"), 
sql_bind_localtype("dbl")};
                        for (int i = 0; i < 2; i++) {
-                               sql_subtype *next = types[i];
+                               sql_subtype *next = flt_types[i];
                                list_append(functions, sql_create_func(sql->sa, 
"degrees", "mmath", "degrees", FALSE, FALSE, SCALE_FIX, 0, next->type, 1, 
next->type));
                                list_append(functions, sql_create_func(sql->sa, 
"radians", "mmath", "radians", FALSE, FALSE, SCALE_FIX, 0, next->type, 1, 
next->type));
                        }
+
+                       /* Adding 'sql_sub' and 'sql_add' between interval 
types only */
+                       sql_subtype sec, month;
+                       sql_find_subtype(&sec, "sec_interval", 13, SCALE_FIX);
+                       sql_find_subtype(&month, "month_interval", 32, 0);
+                       sql_subtype *interval_types[2] = {&sec, &month};
+                       for (int i = 0; i < 2; i++) {
+                               sql_subtype *next = interval_types[i];
+                               list_append(functions, sql_create_func(sql->sa, 
"sql_sub", "calc", "-", FALSE, FALSE, SCALE_FIX, 0, next->type, 2, next->type, 
next->type));
+                               list_append(functions, sql_create_func(sql->sa, 
"sql_add", "calc", "+", FALSE, FALSE, SCALE_FIX, 0, next->type, 2, next->type, 
next->type));
+                       }
                        insert_functions(sql->session->tr, mvc_bind_table(sql, 
sys, "functions"), functions, mvc_bind_table(sql, sys, "args"));
 
                        pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", prev_schema);
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -102,11 +102,11 @@ static int convert_matrix[EC_MAX][EC_MAX
 /* EC_CHAR */          { 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2 },
 /* EC_STRING */                { 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2 },
 /* EC_BLOB */          { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0 },
-/* EC_POS */           { 0, 0, 2, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 
0 },
-/* EC_NUM */           { 0, 0, 2, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 
0 },
-/* EC_MONTH*/          { 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
0 },
-/* EC_SEC*/            { 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
0 },
-/* EC_DEC */           { 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 
0 },
+/* EC_POS */           { 0, 0, 2, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
0 },
+/* EC_NUM */           { 0, 0, 2, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
0 },
+/* EC_MONTH*/          { 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0 },
+/* EC_SEC*/                    { 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 
0, 0, 0, 0 },
+/* EC_DEC */           { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
0 },
 /* EC_FLT */           { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
0 },
 /* EC_TIME */          { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 
0 },
 /* EC_TIME_TZ */       { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 
0 },
@@ -1667,18 +1667,21 @@ sqltypeinit( sql_allocator *sa)
                /* scale fixing for all numbers */
                sql_create_func(sa, "scale_up", "calc", "*", FALSE, FALSE, 
SCALE_NONE, 0, *t, 2, *t, lt->type);
                sql_create_func(sa, "scale_down", "sql", "dec_round", FALSE, 
FALSE, SCALE_NONE, 0, *t, 2, *t, lt->type);
-               /* numeric function on INTERVALS */
-               if (*t != MONINT && *t != SECINT){
-                       sql_create_func(sa, "sql_sub", "calc", "-", FALSE, 
FALSE, SCALE_FIX, 0, MONINT, 2, MONINT, *t);
-                       sql_create_func(sa, "sql_add", "calc", "+", FALSE, 
FALSE, SCALE_FIX, 0, MONINT, 2, MONINT, *t);
+               /* numeric functions on INTERVALS */
+               if (*t != MONINT && *t != SECINT) {
                        sql_create_func(sa, "sql_mul", "calc", "*", FALSE, 
FALSE, SCALE_MUL, 0, MONINT, 2, MONINT, *t);
                        sql_create_func(sa, "sql_div", "calc", "/", FALSE, 
FALSE, SCALE_DIV, 0, MONINT, 2, MONINT, *t);
-                       sql_create_func(sa, "sql_sub", "calc", "-", FALSE, 
FALSE, SCALE_FIX, 0, SECINT, 2, SECINT, *t);
-                       sql_create_func(sa, "sql_add", "calc", "+", FALSE, 
FALSE, SCALE_FIX, 0, SECINT, 2, SECINT, *t);
                        sql_create_func(sa, "sql_mul", "calc", "*", FALSE, 
FALSE, SCALE_MUL, 0, SECINT, 2, SECINT, *t);
                        sql_create_func(sa, "sql_div", "calc", "/", FALSE, 
FALSE, SCALE_DIV, 0, SECINT, 2, SECINT, *t);
                }
        }
+
+       /* numeric functions on INTERVALS */
+       for (t = dates; *t != TME; t++) {
+               sql_create_func(sa, "sql_sub", "calc", "-", FALSE, FALSE, 
SCALE_FIX, 0, *t, 2, *t, *t);
+               sql_create_func(sa, "sql_add", "calc", "+", FALSE, FALSE, 
SCALE_FIX, 0, *t, 2, *t, *t);
+       }
+
        for (t = decimals, t++; t != floats; t++) {
                sql_type **u;
                for (u = numerical; u != floats; u++) {
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
@@ -1572,13 +1572,7 @@ sql_alter_table(sql_query *query, dlist 
                for (node *n = nt->columns.nelm; n; n = n->next) {
                        sql_column *c = n->data;
                        if (c->def) {
-                               char *d, *typestr = subtype2string2(&c->type);
-                               if (!typestr)
-                                       return sql_error(sql, 02, 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
-                               d = sql_message("select cast(%s as %s);", 
c->def, typestr);
-                               _DELETE(typestr);
-                               e = rel_parse_val(sql, d, sql->emode, NULL);
-                               _DELETE(d);
+                               e = rel_parse_val(sql, sa_message(sql->sa, 
"select %s;", c->def), sql->emode, NULL);
                        } else {
                                e = exp_atom(sql->sa, atom_general(sql->sa, 
&c->type, NULL));
                        }
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -29,12 +29,7 @@ insert_value(sql_query *query, sql_colum
                return exp_atom(sql->sa, atom_general(sql->sa, &c->type, NULL));
        } else if (s->token == SQL_DEFAULT) {
                if (c->def) {
-                       sql_exp *e;
-                       char *typestr = subtype2string2(&c->type);
-                       if(!typestr)
-                               return sql_error(sql, 02, SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-                       e = rel_parse_val(sql, sa_message(sql->sa, "select 
cast(%s as %s);", c->def, typestr), sql->emode, NULL);
-                       _DELETE(typestr);
+                       sql_exp *e = rel_parse_val(sql, sa_message(sql->sa, 
"select %s;", c->def), sql->emode, NULL);
                        if (!e || (e = rel_check_type(sql, &c->type, r ? *r : 
NULL, e, type_equal)) == NULL)
                                return sql_error(sql, 02, SQLSTATE(HY005) "%s: 
default expression could not be evaluated", action);
                        return e;
@@ -347,12 +342,7 @@ rel_inserts(mvc *sql, sql_table *t, sql_
                                                sql_exp *e = NULL;
 
                                                if (c->def) {
-                                                       char *q, *typestr = 
subtype2string2(&c->type);
-                                                       if(!typestr)
-                                                               return 
sql_error(sql, 02, SQLSTATE(HY013) MAL_MALLOC_FAIL);
-                                                       q = sa_message(sql->sa, 
"select cast(%s as %s);", c->def, typestr);
-                                                       _DELETE(typestr);
-                                                       e = rel_parse_val(sql, 
q, sql->emode, NULL);
+                                                       e = rel_parse_val(sql, 
sa_message(sql->sa, "select %s;", c->def), sql->emode, NULL);
                                                        if (!e || (e = 
rel_check_type(sql, &c->type, r, e, type_equal)) == NULL)
                                                                return 
sql_error(sql, 02, SQLSTATE(HY005) "%s: default expression could not be 
evaluated", action);
                                                } else {
@@ -943,18 +933,14 @@ update_generate_assignments(sql_query *q
 
                        if (single && a->token == SQL_DEFAULT) {
                                char *colname = assignment->h->next->data.sval;
-                               sql_column *col = mvc_bind_column(sql, t, 
colname);
+                               sql_column *c = mvc_bind_column(sql, t, 
colname);
 
-                               if (!col)
+                               if (!c)
                                        return sql_error(sql, 02, 
SQLSTATE(42S22) "%s: no such column '%s.%s'", action, t->base.name, colname);
-                               if (col->def) {
-                                       char *typestr = 
subtype2string2(&col->type);
-                                       if (!typestr)
-                                               return sql_error(sql, 02, 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
-                                       v = rel_parse_val(sql, 
sa_message(sql->sa, "select cast(%s as %s);", col->def, typestr), sql->emode, 
NULL);
-                                       _DELETE(typestr);
+                               if (c->def) {
+                                       v = rel_parse_val(sql, 
sa_message(sql->sa, "select %s;", c->def), sql->emode, NULL);
                                } else {
-                                       return sql_error(sql, 02, 
SQLSTATE(42000) "%s: column '%s' has no valid default value", action, 
col->base.name);
+                                       return sql_error(sql, 02, 
SQLSTATE(42000) "%s: column '%s' has no valid default value", action, 
c->base.name);
                                }
                        } else if (single) {
                                v = rel_value_exp(query, &r, a, sql_sel | 
sql_update_set, ek);
diff --git a/sql/test/BugDay_2005-10-06_2.9.3/Tests/set_types.SF-932360.sql 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/set_types.SF-932360.sql
--- a/sql/test/BugDay_2005-10-06_2.9.3/Tests/set_types.SF-932360.sql
+++ b/sql/test/BugDay_2005-10-06_2.9.3/Tests/set_types.SF-932360.sql
@@ -1,7 +1,7 @@
 set debug = 1;
 set debug = true;
-set current_timezone = 60;
+set current_timezone = interval '60' second;
 select current_timezone;
 set debug = false;
-set current_timezone = 0;
+set current_timezone = interval '0' second;
 select current_timezone;
diff --git 
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.err 
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.err
--- a/sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.err
+++ b/sql/test/BugDay_2005-12-19_2.9.3/Tests/cast_interval.SF.1280682.stable.err
@@ -5,6 +5,14 @@ stderr of test 'cast_interval.SF.1280682
 # 16:12:10 >  Mtimeout -timeout 180 Mserver 
"--config=/ufs/sjoerd/Monet-virgin/etc/MonetDB.conf" --debug=10 --set 
"monet_mod_path=/ufs/sjoerd/src/MonetDB/devel/sql-virgin/Linux/lib/MonetDB:/ufs/sjoerd/Monet-virgin/lib/MonetDB"
 --set "gdk_dbfarm=/ufs/sjoerd/Monet-virgin/var/MonetDB/dbfarm" --set 
"sql_logdir=/ufs/sjoerd/Monet-virgin/var/MonetDB/log" --set mapi_port=30623 
--set sql_port=49284 --set xquery_port=58556 --set monet_prompt= --trace 
"--dbname=mTests_src_test_BugDay_2005-12-19_2.9.3" 
--dbinit="module(sql_server); sql_server_start();" ; echo ; echo Over..
 # 16:12:10 >  
 
+MAPI  = (monetdb) /var/tmp/mtest-438601/.s.monetdb.35318
+QUERY = select cast( 1 as interval year );
+ERROR = !types tinyint(1,0) and month_interval(1,0) are not equal
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-438601/.s.monetdb.35318
+QUERY = select cast( 1 as interval day );
+ERROR = !types tinyint(1,0) and sec_interval(4,0) are not equal
+CODE  = 42000
 
 # 16:12:10 >  
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to