Changeset: 0a4300463fb6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0a4300463fb6
Added Files:
        sql/test/BugTracker-2019/Tests/prepared-merge-statement.Bug-6706.sql
        
sql/test/BugTracker-2019/Tests/prepared-merge-statement.Bug-6706.stable.err
        
sql/test/BugTracker-2019/Tests/prepared-merge-statement.Bug-6706.stable.out
Removed Files:
        sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.stable.out.int128
        
sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out.int128
        sql/test/BugTracker-2008/Tests/mul_div_bug.SF-2075135.stable.out.int128
        
sql/test/BugTracker-2009/Tests/TribooleanFailureWithSubquery.SF-2679434.stable.out.int128
        
sql/test/BugTracker-2009/Tests/arithmetic-small-values-null.SF-2921310.stable.out.int128
        sql/test/BugTracker-2009/Tests/avg-bug.SF-2132666.stable.out.int128
        
sql/test/BugTracker-2009/Tests/case_evaluates_all_branches.SF-2893484.stable.out.int128
        sql/test/BugTracker-2009/Tests/count_bug.SF-2604583.stable.out.int128
        sql/test/Tests/outerref_in_selection.sql.src
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_scenario.h
        sql/server/rel_psm.c
        sql/server/rel_select.c
        sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.sql
        sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.stable.out
        sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.sql
        sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out
        sql/test/BugTracker-2008/Tests/mul_div_bug.SF-2075135.sql
        
sql/test/BugTracker-2009/Tests/TribooleanFailureWithSubquery.SF-2679434.sql
        
sql/test/BugTracker-2009/Tests/TribooleanFailureWithSubquery.SF-2679434.stable.out
        sql/test/BugTracker-2009/Tests/avg-bug.SF-2132666.sql
        sql/test/BugTracker-2009/Tests/avg-bug.SF-2132666.stable.out
        sql/test/BugTracker-2009/Tests/bit_and.SF-2850341.stable.out.int128
        
sql/test/BugTracker-2009/Tests/case_evaluates_all_branches.SF-2893484.sql
        
sql/test/BugTracker-2009/Tests/case_evaluates_all_branches.SF-2893484.stable.out
        sql/test/BugTracker-2009/Tests/count_bug.SF-2604583.sql
        sql/test/BugTracker-2009/Tests/count_bug.SF-2604583.stable.out
        sql/test/BugTracker-2017/Tests/prepare.Bug-6133.stable.err
        sql/test/BugTracker-2019/Tests/All
        sql/test/Tests/outerref_in_selection.stable.out
        sql/test/merge-partitions/Tests/mergepart28.stable.err
Branch: context
Log Message:

merged with default


diffs (truncated from 1526 to 300 lines):

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
@@ -388,9 +388,12 @@ value_list(backend *be, list *vals, stmt
 {
        node *n;
        stmt *s;
-
+       sql_subtype *type = exp_subtype(vals->h->data);
+
+       if (!type)
+               return sql_error(be->mvc, 02, SQLSTATE(42000) "Could not infer 
the type of a value list column");
        /* create bat append values */
-       s = stmt_temp(be, exp_subtype(vals->h->data));
+       s = stmt_temp(be, type);
        for( n = vals->h; n; n = n->next) {
                sql_exp *e = n->data;
                stmt *i = exp_bin(be, e, left, NULL, NULL, NULL, NULL, sel);
@@ -400,7 +403,6 @@ value_list(backend *be, list *vals, stmt
 
                if (list_length(vals) == 1)
                        return i;
-               
                s = stmt_append(be, s, i);
        }
        return s;
diff --git a/sql/backends/monet5/sql_execute.c 
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -474,13 +474,7 @@ SQLstatementIntern(Client c, str *expr, 
 
        /* create private allocator */
        m->sa = NULL;
-       SQLtrans(m);
-       if(*m->errstr) {
-               if (strlen(m->errstr) > 6 && m->errstr[5] == '!')
-                       msg = createException(SQL, "sql.statement", "%s", 
m->errstr);
-               else
-                       msg = createException(SQL, "sql.statement", 
SQLSTATE(42000) "%s", m->errstr);
-               *m->errstr=0;
+       if ((msg = SQLtrans(m)) != MAL_SUCCEED) {
                if (inited)
                        SQLresetClient(c);
                return msg;
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
@@ -638,11 +638,11 @@ backend_dumpstmt(backend *be, MalBlkPtr 
                return -1;
        be->mvc_var = getDestVar(q);
        be->mb = mb;
-               s = sql_relation2stmt(be, r);
+       s = sql_relation2stmt(be, r);
        if (!s) {
                if (querylog)
                        (void) pushInt(mb, querylog, mb->stop);
-               return 0;
+               return (be->mvc->errstr[0] == '\0') ? 0 : -1;
        }
 
        be->mvc_var = old_mv;
@@ -741,8 +741,8 @@ backend_dumpproc(backend *be, Client c, 
                        sql_type *tpe = atom_type(a)->type;
                        int type, varid = 0;
 
-                       if(!tpe) {
-                               sql_error(m, 003, SQLSTATE(42000) "Could not 
determine type for argument %d\n", argc+1);
+                       if (!tpe) {
+                               sql_error(m, 003, SQLSTATE(42000) "Could not 
determine type for argument number %d\n", argc+1);
                                goto cleanup;
                        }
                        type = tpe->localtype;
@@ -762,8 +762,8 @@ backend_dumpproc(backend *be, Client c, 
                        sql_type *tpe = a->type.type;
                        int type, varid = 0;
 
-                       if(!tpe) {
-                               sql_error(m, 003, SQLSTATE(42000) "Could not 
determine type for argument %d\n", argc+1);
+                       if (!tpe) {
+                               sql_error(m, 003, SQLSTATE(42000) "Could not 
determine type for argument number %d\n", argc+1);
                                goto cleanup;
                        }
                        type = tpe->localtype;
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -637,32 +637,30 @@ SQLautocommit(mvc *m)
        return msg;
 }
 
-void
+str
 SQLtrans(mvc *m)
 {
        m->caching = m->cache;
        if (!m->session->active) {
                sql_session *s;
 
-               if(mvc_trans(m) < 0) {
-                       (void) sql_error(m, 02, SQLSTATE(HY001) "Allocation 
failure while starting the transaction");
-                       return;
-               }
+               if (mvc_trans(m) < 0)
+                       throw(SQL, "sql.trans", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                s = m->session;
                if (!s->schema) {
                        if (s->schema_name)
                                GDKfree(s->schema_name);
                        s->schema_name = monet5_user_get_def_schema(m, 
m->user_id);
-                       if(!s->schema_name) {
+                       if (!s->schema_name) {
                                mvc_cancel_session(m);
-                               (void) sql_error(m, 02, SQLSTATE(HY001) 
"Allocation failure while starting the transaction");
-                               return;
+                               throw(SQL, "sql.trans", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                        }
                        assert(s->schema_name);
                        s->schema = find_sql_schema(s->tr, s->schema_name);
                        assert(s->schema);
                }
        }
+       return MAL_SUCCEED;
 }
 
 #ifdef HAVE_EMBEDDED
@@ -1008,16 +1006,11 @@ SQLparser(Client c)
 #endif
        m = be->mvc;
        m->type = Q_PARSE;
-       if (be->language != 'X')
-               SQLtrans(m);
-       if(*m->errstr) {
-               if (strlen(m->errstr) > 6 && m->errstr[5] == '!')
-                       msg = createException(PARSE, "SQLparser", "%s", 
m->errstr);
-               else
-                       msg = createException(PARSE, "SQLparser", 
SQLSTATE(42000) "%s", m->errstr);
-               *m->errstr=0;
-               c->mode = FINISHCLIENT;
-               return msg;
+       if (be->language != 'X') {
+               if ((msg = SQLtrans(m)) != MAL_SUCCEED) {
+                       c->mode = FINISHCLIENT;
+                       return msg;
+               }
        }
        pstatus = m->session->status;
 
@@ -1042,7 +1035,8 @@ SQLparser(Client c)
                        n = sscanf(in->buf + in->pos + 7, "%d %d %d", &v, &off, 
&len);
 
                if (n == 2 || n == 3) {
-                       mvc_export_chunk(be, out, v, off, n == 3 ? len : 
m->reply_size);
+                       if (mvc_export_chunk(be, out, v, off, n == 3 ? len : 
m->reply_size))
+                               throw(SQL, "SQLparser", SQLSTATE(45000) "Result 
set construction failed");
 
                        in->pos = in->len;      /* HACK: should use parsed 
length */
                        return MAL_SUCCEED;
diff --git a/sql/backends/monet5/sql_scenario.h 
b/sql/backends/monet5/sql_scenario.h
--- a/sql/backends/monet5/sql_scenario.h
+++ b/sql/backends/monet5/sql_scenario.h
@@ -19,7 +19,7 @@ sql5_export str SQLprelude(Client cntxt,
 sql5_export str SQLepilogue(void *ret);
 
 sql5_export str SQLautocommit(mvc *m);
-sql5_export void SQLtrans(mvc *m);
+sql5_export str SQLtrans(mvc *m);
 
 sql5_export str SQLexit(Client c);
 sql5_export str SQLexitClient(Client c);
diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c
--- a/sql/server/rel_psm.c
+++ b/sql/server/rel_psm.c
@@ -856,7 +856,7 @@ rel_create_func(sql_query *query, dlist 
                                                arg_list = tpe;
                                        }
                                }
-                               (void)sql_error(sql, 02, SQLSTATE(42000) 
"CREATE %s%s: name '%s' (%s) already in use", KF, F, fname, arg_list);
+                               (void)sql_error(sql, 02, SQLSTATE(42000) 
"CREATE %s%s: name '%s' (%s) already in use", KF, F, fname, arg_list ? arg_list 
: "");
                                _DELETE(arg_list);
                                list_destroy(type_list);
                                return NULL;
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
@@ -1157,7 +1157,7 @@ exp_fix_scale(mvc *sql, sql_subtype *ct,
 static int
 rel_set_type_param(mvc *sql, sql_subtype *type, sql_exp *param, int upcast)
 {
-       if (!type || !param || param->type != e_atom)
+       if (!type || !param || (param->type != e_atom && param->type != 
e_column))
                return -1;
 
        /* use largest numeric types */
diff --git a/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.sql 
b/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.sql
--- a/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.sql
+++ b/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.sql
@@ -4,8 +4,8 @@ CREATE TABLE A (FIPS2 TIMESTAMP);
 INSERT INTO A VALUES (
 TIMESTAMP '1996-08-24 16:03:00.999999');
 
-SELECT EXTRACT (SECOND FROM FIPS2)
-* 1000000 - 999990 FROM A;
+SELECT CAST( EXTRACT (SECOND FROM FIPS2)
+* 1000000 - 999990 as decimal(18,6)) FROM A;
 
 select EXTRACT (SECOND FROM FIPS2) FROM A;
 
diff --git a/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.stable.out 
b/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.stable.out
--- a/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.stable.out
+++ b/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.stable.out
@@ -26,8 +26,8 @@ stdout of test 'extract_bug.SF-2075266` 
 # 13:27:40 >  
 
 [ 1    ]
-#SELECT EXTRACT (SECOND FROM FIPS2)
-#* 1000000 - 999990 FROM A;
+#SELECT CAST( EXTRACT (SECOND FROM FIPS2)
+#* 1000000 - 999990 as decimal(18,6)) FROM A;
 % sys.L2 # table_name
 % L2 # name
 % decimal # type
diff --git 
a/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.stable.out.int128 
b/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.stable.out.int128
deleted file mode 100644
--- a/sql/test/BugTracker-2008/Tests/extract_bug.SF-2075266.stable.out.int128
+++ /dev/null
@@ -1,47 +0,0 @@
-stdout of test 'extract_bug.SF-2075266` in directory 
'sql/test/BugTracker-2008` itself:
-
-
-# 13:27:40 >  
-# 13:27:40 >   mserver5 
"--config=/ufs/niels/scratch/rc/Linux-x86_64/etc/monetdb5.conf" --debug=10 
--set 
"monet_mod_path=/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5:/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5/lib:/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5/bin"
 --set "gdk_dbfarm=/ufs/niels/scratch/rc/Linux-x86_64/var/MonetDB5/dbfarm" 
--set "sql_logdir=/ufs/niels/scratch/rc/Linux-x86_64/var/MonetDB5/sql_logs"  
--set mapi_open=true --set xrpc_open=true --set mapi_port=36215 --set 
xrpc_port=40937 --set monet_prompt= --trace  
"--dbname=mTests_src_test_BugTracker-2008" --set sql_debug=16384 --set 
xquery_backend=algebra --set mal_listing=0 "--dbinit= include sql;" ; echo ; 
echo Over..
-# 13:27:40 >  
-
-# MonetDB server v5.6.0, based on kernel v1.24.1
-# Serving database 'mTests_src_test_BugTracker-2008'
-# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
-# Copyright (c) 1993-2008 CWI, all rights reserved
-# Visit http://monetdb.cwi.nl/ for further information
-# Listening for connection requests on mapi:monetdb://alf.ins.cwi.nl:36215/
-# MonetDB/SQL module v2.24.1 loaded
-
-# falling back to direct mode 
-# falling back to direct mode 
-# falling back to direct mode 
-#function user.main():void;
-#    clients.quit();
-#end main;
-
-
-# 13:27:40 >  
-# 13:27:40 >  mclient -lsql -umonetdb -Pmonetdb --host=alf --port=36215  -G
-# 13:27:40 >  
-
-[ 1    ]
-#SELECT EXTRACT (SECOND FROM FIPS2)
-#* 1000000 - 999990 FROM A;
-% sys.L2 # table_name
-% L2 # name
-% decimal # type
-% 40 # length
-[ 10.000000    ]
-#select EXTRACT (SECOND FROM FIPS2) FROM A;
-% sys.L2 # table_name
-% L2 # name
-% decimal # type
-% 11 # length
-[ 1.000        ]
-#drop table A;
-
-# 14:08:04 >  
-# 14:08:04 >  Done.
-# 14:08:04 >  
-
diff --git a/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.sql 
b/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.sql
--- a/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.sql
+++ b/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.sql
@@ -3,6 +3,6 @@ create table testola (color varchar(128)
 insert into testola values ('blue', 12);
 insert into testola values ('red', 2);
 
-select color, null, sum(count) from testola group by color;
+select color, null, cast( sum(count) as bigint) from testola group by color;
 
 drop table testola;
diff --git 
a/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out 
b/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out
--- a/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out
+++ b/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out
@@ -24,7 +24,7 @@ stdout of test 'groupby_with_NULL.SF-215
 
 [ 1    ]
 [ 1    ]
-#select color, null, sum(count) from testola group by color;
+#select color, null, cast( sum(count) as bigint) from testola group by color;
 % sys.testola, .L1,    sys.L3 # table_name
 % color,       L1,     L2 # name
 % varchar,     char,   bigint # type
diff --git 
a/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out.int128 
b/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out.int128
deleted file mode 100644
--- 
a/sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out.int128
+++ /dev/null
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to