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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list