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