Changeset: c416ac4ba363 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c416ac4ba363
Added Files:
sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.err
sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.out
sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6568.sql
sql/test/BugTracker-2018/Tests/sqlitelogictest-mal-calc-undefined.Bug-6566.stable.err
sql/test/BugTracker-2018/Tests/sqlitelogictest-mal-calc-undefined.Bug-6566.stable.out
sql/test/BugTracker-2018/Tests/sqlitelogictest-not-between-wrong.Bug-6569.sql
sql/test/BugTracker-2018/Tests/sqlitelogictest-undefined-calc.Bug-6570.sql
Modified Files:
clients/Tests/exports.stable.out
gdk/gdk_cross.c
gdk/gdk_group.c
monetdb5/mal/mal_interpreter.c
sql/server/rel_optimizer.c
sql/server/rel_select.c
sql/test/BugTracker-2015/Tests/null.Bug-3833.stable.out
sql/test/BugTracker-2016/Tests/null_in_null.Bug-3900.stable.out
sql/test/BugTracker-2018/Tests/All
sql/test/BugTracker-2018/Tests/sqlitelogictest-wrong-cast-null.Bug-6551.stable.out
testing/listexports.py.in
Branch: default
Log Message:
Merge with Mar2018 branch.
diffs (truncated from 503 to 300 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -428,16 +428,6 @@ lng logger_read_last_transaction_id(logg
gdk_return logger_reload(logger *lg);
gdk_return logger_restart(logger *lg);
int logger_sequence(logger *lg, int seq, lng *id);
-char *mcrypt_BackendSum(const char *string, size_t len);
-char *mcrypt_MD5Sum(const char *string, size_t len);
-char *mcrypt_RIPEMD160Sum(const char *string, size_t len);
-char *mcrypt_SHA1Sum(const char *string, size_t len);
-char *mcrypt_SHA224Sum(const char *string, size_t len);
-char *mcrypt_SHA256Sum(const char *string, size_t len);
-char *mcrypt_SHA384Sum(const char *string, size_t len);
-char *mcrypt_SHA512Sum(const char *string, size_t len);
-const char *mcrypt_getHashAlgorithms(void);
-char *mcrypt_hashPassword(const char *algo, const char *password, const char
*challenge);
void *mdlopen(const char *library, int mode);
int mo_add_option(opt **Set, int setlen, opt_kind kind, const char *name,
const char *value);
int mo_builtin_settings(opt **Set);
@@ -445,23 +435,6 @@ char *mo_find_option(opt *set, int setle
void mo_free_options(opt *set, int setlen);
void mo_print_options(opt *set, int setlen);
int mo_system_config(opt **Set, int setlen);
-void msab_dbfarminit(const char *dbfarm);
-void msab_dbpathinit(const char *dbpath);
-char *msab_deserialise(sabdb **ret, char *sabdb);
-char *msab_freeStatus(sabdb **ret);
-char *msab_getDBfarm(char **ret);
-char *msab_getDBname(char **ret);
-char *msab_getMyStatus(sabdb **ret);
-char *msab_getStatus(sabdb **ret, char *dbname);
-char *msab_getUplogInfo(sabuplog *ret, const sabdb *db);
-char *msab_marchConnection(const char *host, const int port);
-char *msab_marchScenario(const char *lang);
-char *msab_registerStarted(void);
-char *msab_registerStarting(void);
-char *msab_registerStop(void);
-char *msab_retreatScenario(const char *lang);
-char *msab_serialise(char **ret, const sabdb *db);
-char *msab_wildRetreat(void);
const oid oid_nil;
DIR *opendir(const char *dirname);
void print_trace(void);
@@ -595,6 +568,22 @@ MapiMsg mapi_timeout(Mapi mid, unsigned
void mapi_trace(Mapi mid, int flag);
char *mapi_unquote(char *msg);
MapiMsg mapi_virtual_result(MapiHdl hdl, int columns, const char
**columnnames, const char **columntypes, const int *columnlengths, int
tuplecount, const char ***tuples);
+char *mcrypt_BackendSum(const char *string, size_t len);
+char *mcrypt_MD5Sum(const char *string, size_t len);
+char *mcrypt_RIPEMD160Sum(const char *string, size_t len);
+char *mcrypt_SHA1Sum(const char *string, size_t len);
+char *mcrypt_SHA224Sum(const char *string, size_t len);
+char *mcrypt_SHA256Sum(const char *string, size_t len);
+char *mcrypt_SHA384Sum(const char *string, size_t len);
+char *mcrypt_SHA512Sum(const char *string, size_t len);
+const char *mcrypt_getHashAlgorithms(void);
+char *mcrypt_hashPassword(const char *algo, const char *password, const char
*challenge);
+int mo_add_option(opt **Set, int setlen, opt_kind kind, const char *name,
const char *value);
+int mo_builtin_settings(opt **Set);
+char *mo_find_option(opt *set, int setlen, const char *name);
+void mo_free_options(opt *set, int setlen);
+void mo_print_options(opt *set, int setlen);
+int mo_system_config(opt **Set, int setlen);
const char *wsaerror(int);
# monetdb5
@@ -2367,6 +2356,23 @@ char monet_characteristics[4096];
char monet_cwd[FILENAME_MAX];
size_t monet_memory;
void moveInstruction(MalBlkPtr mb, int pc, int target);
+void msab_dbfarminit(const char *dbfarm);
+void msab_dbpathinit(const char *dbpath);
+char *msab_deserialise(sabdb **ret, char *sabdb);
+char *msab_freeStatus(sabdb **ret);
+char *msab_getDBfarm(char **ret);
+char *msab_getDBname(char **ret);
+char *msab_getMyStatus(sabdb **ret);
+char *msab_getStatus(sabdb **ret, char *dbname);
+char *msab_getUplogInfo(sabuplog *ret, const sabdb *db);
+char *msab_marchConnection(const char *host, const int port);
+char *msab_marchScenario(const char *lang);
+char *msab_registerStarted(void);
+char *msab_registerStarting(void);
+char *msab_registerStop(void);
+char *msab_retreatScenario(const char *lang);
+char *msab_serialise(char **ret, const sabdb *db);
+char *msab_wildRetreat(void);
void mserver_reset(int exit);
str mtimeRef;
str mulRef;
diff --git a/gdk/gdk_cross.c b/gdk/gdk_cross.c
--- a/gdk/gdk_cross.c
+++ b/gdk/gdk_cross.c
@@ -36,8 +36,13 @@ BATsubcross(BAT **r1p, BAT **r2p, BAT *l
cnt2 = rcandend - rcand;
bn1 = COLnew(0, TYPE_oid, cnt1 * cnt2, TRANSIENT);
- if (bn1 == NULL)
+ bn2 = COLnew(0, TYPE_oid, cnt1 * cnt2, TRANSIENT);
+ if (bn1 == NULL || bn2 == NULL) {
+ BBPreclaim(bn1);
+ BBPreclaim(bn2);
return GDK_FAIL;
+ }
+
BATsetcount(bn1, cnt1 * cnt2);
bn1->tsorted = 1;
bn1->trevsorted = cnt1 <= 1;
@@ -58,13 +63,8 @@ BATsubcross(BAT **r1p, BAT **r2p, BAT *l
BATtseqbase(bn1, bn1->tkey ? seq : oid_nil);
}
- bn2 = COLnew(0, TYPE_oid, cnt1 * cnt2, TRANSIENT);
- if (bn2 == NULL) {
- BBPreclaim(bn1);
- return GDK_FAIL;
- }
BATsetcount(bn2, cnt1 * cnt2);
- bn2->tsorted = cnt1 <= 1;
+ bn2->tsorted = cnt1 <= 1 || cnt2 <= 1;
bn2->trevsorted = cnt2 <= 1;
bn2->tkey = cnt1 <= 1;
bn2->tnil = 0;
diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c
--- a/gdk/gdk_group.c
+++ b/gdk/gdk_group.c
@@ -633,7 +633,7 @@ BATgroup_internal(BAT **groups, BAT **ex
en->tnonil = 1;
en->tseqbase = oid_nil;
} else {
- en = BATdense(0, b->hseqbase, cnt);
+ en = BATdense(0, b->hseqbase + start, cnt);
if (en == NULL)
goto error;
}
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -655,8 +655,7 @@ str runMALsequence(Client cntxt, MalBlkP
BAT *_b = BATdescriptor(bid);
t = getBatType(t);
assert(stk->stk[a].vtype ==
TYPE_bat);
- assert(bid == 0 ||
- is_bat_nil(bid) ||
+ assert(is_bat_nil(bid) ||
t == TYPE_any ||
ATOMtype(_b->ttype)
== ATOMtype(t));
if(_b) BBPunfix(bid);
@@ -680,8 +679,7 @@ str runMALsequence(Client cntxt, MalBlkP
bat bid = stk->stk[a].val.bval;
t = getBatType(t);
assert(stk->stk[a].vtype == TYPE_bat);
- assert(bid == 0 ||
- is_bat_nil(bid) ||
+ assert(is_bat_nil(bid) ||
t == TYPE_any ||
ATOMtype(BBP_desc(bid)->ttype) == ATOMtype(t));
} else {
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -2880,15 +2880,20 @@ exp_simplify_math( mvc *sql, sql_exp *e,
if (!f->func->s && list_length(l) == 2) {
sql_exp *le = l->h->data;
sql_exp *re = l->h->next->data;
+ sql_subtype *et = exp_subtype(e);
if (exp_is_atom(le) && exp_is_null(sql, le)) {
(*changes)++;
exp_setname(sql->sa, le, exp_relname(e),
exp_name(e));
+ if (subtype_cmp(et, exp_subtype(le)) != 0)
+ le = exp_convert(sql->sa, le,
exp_subtype(le), et);
return le;
}
if (exp_is_atom(re) && exp_is_null(sql, re)) {
(*changes)++;
exp_setname(sql->sa, re, exp_relname(e),
exp_name(e));
+ if (subtype_cmp(et, exp_subtype(re)) != 0)
+ re = exp_convert(sql->sa, re,
exp_subtype(re), et);
return re;
}
}
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
@@ -184,6 +184,8 @@ rel_project2groupby(mvc *sql, sql_rel *g
g->op = op_groupby;
g->r = new_exp_list(sql->sa); /* add empty groupby column list
*/
+ if (!g->exps)
+ g->exps = new_exp_list(sql->sa);
for (en = g->exps->h; en; en = en->next) {
sql_exp *e = en->data;
diff --git a/sql/test/BugTracker-2015/Tests/null.Bug-3833.stable.out
b/sql/test/BugTracker-2015/Tests/null.Bug-3833.stable.out
--- a/sql/test/BugTracker-2015/Tests/null.Bug-3833.stable.out
+++ b/sql/test/BugTracker-2015/Tests/null.Bug-3833.stable.out
@@ -43,8 +43,8 @@ Ready.
#SELECT (1 = NULL);
% .L2 # table_name
% L2 # name
-% tinyint # type
-% 1 # length
+% boolean # type
+% 5 # length
[ NULL ]
#SELECT (TRUE OR NULL);
% .L2 # table_name
diff --git a/sql/test/BugTracker-2016/Tests/null_in_null.Bug-3900.stable.out
b/sql/test/BugTracker-2016/Tests/null_in_null.Bug-3900.stable.out
--- a/sql/test/BugTracker-2016/Tests/null_in_null.Bug-3900.stable.out
+++ b/sql/test/BugTracker-2016/Tests/null_in_null.Bug-3900.stable.out
@@ -38,8 +38,8 @@ Ready.
#select null in (1);
% .L3 # table_name
% L3 # name
-% tinyint # type
-% 1 # length
+% boolean # type
+% 5 # length
[ NULL ]
#select null between null and null;
% .L2 # table_name
diff --git a/sql/test/BugTracker-2018/Tests/All
b/sql/test/BugTracker-2018/Tests/All
--- a/sql/test/BugTracker-2018/Tests/All
+++ b/sql/test/BugTracker-2018/Tests/All
@@ -42,3 +42,6 @@ sqlitelogictest-groupby-having-in-cast.B
sqlitelogictest-groupby-having-not-null-not-in.Bug-6562
sqlitelogictest-complex-case-nullif-coalesce.Bug-6565
sqlitelogictest-mal-calc-undefined.Bug-6566
+sqlitelogictest-complex-case.Bug-6568
+sqlitelogictest-not-between-wrong.Bug-6569
+sqlitelogictest-undefined-calc.Bug-6570
diff --git
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.err
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.err
new file mode 100644
--- /dev/null
+++
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.err
@@ -0,0 +1,35 @@
+stderr of test 'sqlitelogictest-complex-case-nullif-coalesce.Bug-6565` in
directory 'sql/test/BugTracker-2018` itself:
+
+
+# 11:19:51 >
+# 11:19:51 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=32042" "--set"
"mapi_usock=/var/tmp/mtest-29502/.s.monetdb.32042" "--set" "monet_prompt="
"--forcemito"
"--dbpath=/home/niels/scratch/rc-old/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2018"
"--set" "embedded_c=true"
+# 11:19:51 >
+
+# builtin opt gdk_dbpath =
/home/niels/scratch/rc-old/Linux-x86_64/var/monetdb5/dbfarm/demo
+# builtin opt gdk_debug = 0
+# builtin opt gdk_vmtrim = no
+# builtin opt monet_prompt = >
+# builtin opt monet_daemon = no
+# builtin opt mapi_port = 50000
+# builtin opt mapi_open = false
+# builtin opt mapi_autosense = false
+# builtin opt sql_optimizer = default_pipe
+# builtin opt sql_debug = 0
+# cmdline opt gdk_nr_threads = 0
+# cmdline opt mapi_open = true
+# cmdline opt mapi_port = 32042
+# cmdline opt mapi_usock = /var/tmp/mtest-29502/.s.monetdb.32042
+# cmdline opt monet_prompt =
+# cmdline opt gdk_dbpath =
/home/niels/scratch/rc-old/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2018
+# cmdline opt embedded_c = true
+# cmdline opt gdk_debug = 553648138
+
+# 11:19:51 >
+# 11:19:51 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-29502" "--port=32042"
+# 11:19:51 >
+
+
+# 11:19:51 >
+# 11:19:51 > "Done."
+# 11:19:51 >
+
diff --git
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.out
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.out
new file mode 100644
--- /dev/null
+++
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.out
@@ -0,0 +1,39 @@
+stdout of test 'sqlitelogictest-complex-case-nullif-coalesce.Bug-6565` in
directory 'sql/test/BugTracker-2018` itself:
+
+
+# 11:19:51 >
+# 11:19:51 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=32042" "--set"
"mapi_usock=/var/tmp/mtest-29502/.s.monetdb.32042" "--set" "monet_prompt="
"--forcemito"
"--dbpath=/home/niels/scratch/rc-old/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2018"
"--set" "embedded_c=true"
+# 11:19:51 >
+
+# MonetDB 5 server v11.29.2
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2018', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit
+# Found 15.387 GiB available main-memory.
+# Copyright (c) 1993 - July 2008 CWI.
+# Copyright (c) August 2008 - 2018 MonetDB B.V., all rights reserved
+# Visit https://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://xps13:32042/
+# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-29502/.s.monetdb.32042
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+
+Ready.
+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list