Changeset: c920a864d72a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c920a864d72a Modified Files: gdk/gdk_string.c sql/storage/bat/bat_logger.c sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.sql sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.stable.out sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.sql sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.stable.out sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.sql sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.stable.out sql/test/SQLancer/Tests/sqlancer02.sql sql/test/analytics/Tests/analytics17.stable.out sql/test/group-concat/Tests/groupconcat05.sql sql/test/group-concat/Tests/groupconcat05.stable.out Branch: default Log Message:
Merged with Jun2020 diffs (truncated from 658 to 300 lines): diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c --- a/gdk/gdk_string.c +++ b/gdk/gdk_string.c @@ -866,8 +866,8 @@ concat_strings(BAT **bnp, ValPtr pt, BAT } canditer_reset(ci); - if (nils == 0) { - char *single_str; + if (nils == 0 && !empty) { + char *single_str = NULL; if ((single_str = GDKmalloc(single_length + 1)) == NULL) return GDK_FAIL; @@ -1185,6 +1185,7 @@ GDKanalytical_str_group_concat(BAT *r, B str sb, sl, single_str = NULL, next_single_str; bool empty; size_t separator_length = 0, next_group_length, max_group_length = 0, next_length, offset; + bool hasnil = 0; assert(s && e && ((sep && !separator && BATcount(b) == BATcount(sep)) || (!sep && separator))); start = (lng *) Tloc(s, 0); @@ -1235,61 +1236,65 @@ GDKanalytical_str_group_concat(BAT *r, B } } - empty = true; - - if (!single_str) { /* reuse the same buffer, resize it when needed */ - max_group_length = next_group_length; - if ((single_str = GDKmalloc(max_group_length + 1)) == NULL) - goto allocation_error; - } else if (next_group_length > max_group_length) { - max_group_length = next_group_length; - if ((next_single_str = GDKrealloc(single_str, max_group_length + 1)) == NULL) + if (empty) { + if ((single_str = GDKstrdup(str_nil)) == NULL) goto allocation_error; - single_str = next_single_str; - } + hasnil = true; + } else { + empty = true; + if (!single_str) { /* reuse the same buffer, resize it when needed */ + max_group_length = next_group_length; + if ((single_str = GDKmalloc(max_group_length + 1)) == NULL) + goto allocation_error; + } else if (next_group_length > max_group_length) { + max_group_length = next_group_length; + if ((next_single_str = GDKrealloc(single_str, max_group_length + 1)) == NULL) + goto allocation_error; + single_str = next_single_str; + } - for (j = start[i]; j < l; j++) { - sb = BUNtvar(bi, (BUN) j); + for (j = start[i]; j < l; j++) { + sb = BUNtvar(bi, (BUN) j); - if (separator) { - if (strNil(sb)) - continue; - if (!empty) { - memcpy(single_str + offset, separator, separator_length); - offset += separator_length; + if (separator) { + if (strNil(sb)) + continue; + if (!empty) { + memcpy(single_str + offset, separator, separator_length); + offset += separator_length; + } + next_length = strlen(sb); + memcpy(single_str + offset, sb, next_length); + offset += next_length; + empty = false; + } else { /* sep case */ + assert(sep != NULL); + sl = BUNtvar(bis, (BUN) j); + + if (strNil(sb)) + continue; + if (!empty && !strNil(sl)) { + next_length = strlen(sl); + memcpy(single_str + offset, sl, next_length); + offset += next_length; + } + next_length = strlen(sb); + memcpy(single_str + offset, sb, next_length); + offset += next_length; + empty = false; } - next_length = strlen(sb); - memcpy(single_str + offset, sb, next_length); - offset += next_length; - empty = false; - } else { /* sep case */ - assert(sep != NULL); - sl = BUNtvar(bis, (BUN) j); + } - if (strNil(sb)) - continue; - if (!empty && !strNil(sl)) { - next_length = strlen(sl); - memcpy(single_str + offset, sl, next_length); - offset += next_length; - } - next_length = strlen(sb); - memcpy(single_str + offset, sb, next_length); - offset += next_length; - empty = false; - } + single_str[offset] = '\0'; } - - single_str[offset] = '\0'; if (BUNappend(r, single_str, false) != GDK_SUCCEED) goto allocation_error; - } GDKfree(single_str); BATsetcount(r, cnt); - r->tnonil = true; - r->tnil = false; + r->tnonil = !hasnil; + r->tnil = hasnil; return GDK_SUCCEED; allocation_error: GDKfree(single_str); diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c --- a/sql/storage/bat/bat_logger.c +++ b/sql/storage/bat/bat_logger.c @@ -154,29 +154,36 @@ tabins(void *lg, bool first, int tt, con while ((cname = va_arg(va, char *)) != NULL) { cval = va_arg(va, void *); len = snprintf(lname, sizeof(lname), "%s_%s_%s", sname, tname, cname); - if (len == -1 || (size_t)len >= sizeof(lname)) + if (len == -1 || (size_t)len >= sizeof(lname) || + (b = temp_descriptor(logger_find_bat(lg, lname, 0, 0))) == NULL) { + va_end(va); return GDK_FAIL; - if ((b = temp_descriptor(logger_find_bat(lg, lname, 0, 0))) == NULL) - return GDK_FAIL; + } if (first) { BAT *bn; if ((bn = COLcopy(b, b->ttype, true, PERSISTENT)) == NULL) { BBPunfix(b->batCacheid); + va_end(va); return GDK_FAIL; } BBPunfix(b->batCacheid); if (BATsetaccess(bn, BAT_READ) != GDK_SUCCEED || logger_add_bat(lg, bn, lname, 0, 0) != GDK_SUCCEED) { BBPunfix(bn->batCacheid); + va_end(va); return GDK_FAIL; } b = bn; } rc = BUNappend(b, cval, true); BBPunfix(b->batCacheid); - if (rc != GDK_SUCCEED) + if (rc != GDK_SUCCEED) { + va_end(va); return rc; + } } + va_end(va); + if (tt >= 0) { if ((b = COLnew(0, tt, 0, PERSISTENT)) == NULL) return GDK_FAIL; @@ -1128,16 +1135,20 @@ bl_find_table_value(const char *tabnam, b = temp_descriptor(logger_find_bat(bat_logger, tab, 0, 0)); if (b == NULL) { bat_destroy(s); + va_end(va); return NULL; } BAT *t = BATselect(b, s, val, val, 1, 1, 0); bat_destroy(b); bat_destroy(s); - if (t == NULL) + if (t == NULL) { + va_end(va); return NULL; + } s = t; if (BATcount(s) == 0) { bat_destroy(s); + va_end(va); return NULL; } } while ((tab = va_arg(va, const char *)) != NULL && diff --git a/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.sql b/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.sql --- a/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.sql +++ b/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.sql @@ -1,3 +1,3 @@ select 'a'+1; select 1-'a'; -select true+1; +select cast(true+1 as bigint); diff --git a/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.stable.out b/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.stable.out --- a/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.stable.out +++ b/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.stable.out @@ -1,32 +1,14 @@ stdout of test 'mixed_type.SF-917372` in directory 'sql/test/BugDay_2005-10-06_2.8` itself: -# 18:31:51 > -# 18:31:51 > mserver5 "--config=/ufs/niels/scratch/monetdb/Linux-x86_64/etc/monetdb5.conf" --debug=10 --set gdk_nr_threads=4 --set "monet_mod_path=/ufs/niels/scratch/monetdb/Linux-x86_64/lib/MonetDB5:/ufs/niels/scratch/monetdb/Linux-x86_64/lib/MonetDB5/lib:/ufs/niels/scratch/monetdb/Linux-x86_64/lib/MonetDB5/bin" --set "gdk_dbfarm=/ufs/niels/scratch/monetdb/Linux-x86_64/var/MonetDB5/dbfarm" --set "sql_logdir=/ufs/niels/scratch/monetdb/Linux-x86_64/var/MonetDB5/sql_logs" --set mapi_open=true --set xrpc_open=true --set mapi_port=38592 --set xrpc_port=45862 --set monet_prompt= --trace "--dbname=mTests_src_test_BugDay_2005-10-06_2.8" --set mal_listing=0 "--dbinit= include sql;" ; echo ; echo Over.. -# 18:31:51 > - -# MonetDB server v5.9.0, based on kernel v1.27.0 -# Serving database 'mTests_src_test_BugDay_2005-10-06_2.8', using 4 threads -# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked -# Copyright (c) 1993-July 2008 CWI. -# Copyright (c) August 2008- MonetDB B.V., all rights reserved -# Visit http://monetdb.cwi.nl/ for further information -# Listening for connection requests on mapi:monetdb://alf.ins.cwi.nl:38592/ -# MonetDB/SQL module v2.27.0 loaded +# 14:04:34 > +# 14:04:34 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-390464" "--port=31391" +# 14:04:34 > -#function user.main():void; -# clients.quit(); -#end main; - - -# 11:50:16 > -# 11:50:16 > Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb --host=localhost --port=35781 < mixed_type.SF-917372.sql -# 11:50:16 > - -#select true+1; -% .%2 # table_name -% %2 # name -% hugeint # type +#select cast(true+1 as bigint); +% .%1 # table_name +% %1 # name +% bigint # type % 1 # length [ 2 ] diff --git a/sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.sql b/sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.sql --- a/sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.sql +++ b/sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.sql @@ -1,7 +1,7 @@ CREATE TABLE t2852 (c INT); INSERT INTO t2852 VALUES (0); SELECT - COALESCE( + CAST(COALESCE( COALESCE("c" / CASE WHEN COALESCE("c" , 0) = 0 @@ -15,7 +15,7 @@ SELECT NULL END ,0) - , 0) + , 0) AS BIGINT) FROM t2852 ; diff --git a/sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.stable.out b/sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.stable.out --- a/sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.stable.out +++ b/sql/test/BugTracker-2011/Tests/CASE_nested_functions.Bug-2852.stable.out @@ -46,9 +46,9 @@ stdout of test 'CASE_nested_functions.Bu # FROM # t2852 # ; -% sys.%15 # table_name -% %15 # name -% hugeint # type +% sys.%4 # table_name +% %4 # name +% bigint # type % 1 # length [ 0 ] #DROP TABLE t2852; diff --git a/sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.sql b/sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.sql --- a/sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.sql +++ b/sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.sql @@ -1,1 +1,1 @@ -select 1 + null; +select cast(1 + null as bigint); diff --git a/sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.stable.out b/sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.stable.out --- a/sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.stable.out +++ b/sql/test/BugTracker-2017/Tests/one-plus-nil.Bug-6243.stable.out @@ -5,70 +5,10 @@ stdout of test 'one-plus-nil.Bug-6243` i # 21:23:57 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=39261" "--set" "mapi_usock=/var/tmp/mtest-22986/.s.monetdb.39261" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2017" "--set" "embedded_r=yes" "--set" "embedded_py=true" # 21:23:57 > -# MonetDB 5 server v11.25.12 (hg id: 947957af7128+) -# This is an unreleased version _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list