Changeset: 1c21af31a5f7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1c21af31a5f7 Added Files: sql/test/BugTracker-2017/Tests/cleanup_statistics.Bug-6439.stable.out.FreeBSD sql/test/BugTracker-2017/Tests/cleanup_statistics.Bug-6439.stable.out.Windows sql/test/BugTracker-2017/Tests/crash-on-limit-rename.Bug-6502.sql sql/test/BugTracker-2017/Tests/crash-on-limit-rename.Bug-6502.stable.err sql/test/BugTracker-2017/Tests/crash-on-limit-rename.Bug-6502.stable.out Modified Files: gdk/gdk_aggr.c sql/server/rel_select.c sql/test/BugTracker-2014/Tests/hexadecimal_literals.Bug-3621.stable.err sql/test/BugTracker-2015/Tests/crash_in_reduce_groupby.Bug-3818.stable.out sql/test/BugTracker-2017/Tests/All sql/test/BugTracker-2017/Tests/push_subslice.Bug-6322.stable.out Branch: default Log Message:
Merge with Jul2017 branch. diffs (truncated from 850 to 300 lines): diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c --- a/gdk/gdk_aggr.c +++ b/gdk/gdk_aggr.c @@ -1987,8 +1987,6 @@ BATcalcavg(BAT *b, BAT *s, dbl *avg, BUN if (cand == candend) \ break; \ i = *cand++ - b->hseqbase; \ - if (i >= end) \ - break; \ } else { \ i = start++; \ if (i == end) \ @@ -2000,7 +1998,7 @@ BATcalcavg(BAT *b, BAT *s, dbl *avg, BUN gid = gids[i] - min; \ else \ gid = (oid) i; \ - if (!skip_nils || !is_##TYPE##_nil(vals[i])) { \ + if (!is_##TYPE##_nil(vals[i])) { \ cnts[gid]++; \ } \ } \ @@ -2040,7 +2038,7 @@ BATgroupcount(BAT *b, BAT *g, BAT *e, BA } if (BATcount(b) == 0 || ngrp == 0) { - /* trivial: no products, so return bat aligned with g + /* trivial: no counts, so return bat aligned with g * with zero in the tail */ lng zero = 0; return BATconstant(ngrp == 0 ? 0 : min, TYPE_lng, &zero, ngrp, TRANSIENT); @@ -2057,62 +2055,89 @@ BATgroupcount(BAT *b, BAT *g, BAT *e, BA else gids = (const oid *) Tloc(g, start); - t = b->ttype; - nil = ATOMnilptr(t); - atomcmp = ATOMcompare(t); - t = ATOMbasetype(t); - switch (t) { - case TYPE_bte: - AGGR_COUNT(bte); - break; - case TYPE_sht: - AGGR_COUNT(sht); - break; - case TYPE_int: - AGGR_COUNT(int); - break; - case TYPE_lng: - AGGR_COUNT(lng); - break; -#ifdef HAVE_HGE - case TYPE_hge: - AGGR_COUNT(hge); - break; -#endif - case TYPE_flt: - AGGR_COUNT(flt); - break; - case TYPE_dbl: - AGGR_COUNT(dbl); - break; - default: - bi = bat_iterator(b); - - for (;;) { - if (cand) { - if (cand == candend) - break; - i = *cand++ - b->hseqbase; - if (i >= end) - break; + if (!skip_nils || b->tnonil) { + /* if nils are nothing special, or if there are no + * nils, we don't need to look at the values at all */ + if (cand) { + if (gids) { + while (cand < candend) { + i = *cand++ - b->hseqbase; + if (gids[i] >= min && gids[i] <= max) + cnts[gids[i] - min]++; + } } else { - i = start++; - if (i == end) - break; - } - if (gids == NULL || - (gids[i] >= min && gids[i] <= max)) { - if (gids) - gid = gids[i] - min; - else - gid = (oid) i; - if (!skip_nils || - (*atomcmp)(BUNtail(bi, i), nil) != 0) { - cnts[gid]++; + while (cand < candend) { + i = *cand++ - b->hseqbase; + cnts[i] = 1; } } + } else { + if (gids) { + for (i = start; i < end; i++) { + if (gids[i] >= min && gids[i] <= max) + cnts[gids[i] - min]++; + } + } else { + for (i = start; i < end; i++) + cnts[i] = 1; + } } - break; + } else { + t = b->ttype; + nil = ATOMnilptr(t); + atomcmp = ATOMcompare(t); + t = ATOMbasetype(t); + + switch (t) { + case TYPE_bte: + AGGR_COUNT(bte); + break; + case TYPE_sht: + AGGR_COUNT(sht); + break; + case TYPE_int: + AGGR_COUNT(int); + break; + case TYPE_lng: + AGGR_COUNT(lng); + break; +#ifdef HAVE_HGE + case TYPE_hge: + AGGR_COUNT(hge); + break; +#endif + case TYPE_flt: + AGGR_COUNT(flt); + break; + case TYPE_dbl: + AGGR_COUNT(dbl); + break; + default: + bi = bat_iterator(b); + + for (;;) { + if (cand) { + if (cand == candend) + break; + i = *cand++ - b->hseqbase; + } else { + i = start++; + if (i == end) + break; + } + if (gids == NULL || + (gids[i] >= min && gids[i] <= max)) { + if (gids) + gid = gids[i] - min; + else + gid = (oid) i; + if ((*atomcmp)(BUNtail(bi, i), nil) != 0) { + cnts[gid]++; + } + } + } + break; + } } BATsetcount(bn, ngrp); bn->tkey = BATcount(bn) <= 1; 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 @@ -245,17 +245,17 @@ rel_table_optname(mvc *sql, sql_rel *sq, } if (!columnrefs && sq->exps) { node *ne; + if (is_topn(sq->op)) { - /* - * if the current node is a LIMIT statement - * we perform the alias on the underlying projection - */ assert(sq->l); assert(is_project(((sql_rel*)sq->l)->op)); - ne = ((sql_rel*)sq->l)->exps->h; - } else { - ne = sq->exps->h; + sq = rel_project(sql->sa, sq, rel_projections(sql, sq, NULL, 1, 1)); + if (osq != sq->l) /* apply */ + osq->r = sq; + else + osq = sq; } + ne = sq->exps->h; for (; ne; ne = ne->next) { sql_exp *e = ne->data; diff --git a/sql/test/BugTracker-2014/Tests/hexadecimal_literals.Bug-3621.stable.err b/sql/test/BugTracker-2014/Tests/hexadecimal_literals.Bug-3621.stable.err --- a/sql/test/BugTracker-2014/Tests/hexadecimal_literals.Bug-3621.stable.err +++ b/sql/test/BugTracker-2014/Tests/hexadecimal_literals.Bug-3621.stable.err @@ -31,14 +31,6 @@ stderr of test 'hexadecimal_literals.Bug # 17:24:30 > MAPI = (monetdb) /var/tmp/mtest-30147/.s.monetdb.33525 -QUERY = select 0xg; -ERROR = !syntax error, unexpected IDENT, expecting SCOLON in: "select 0xg" -CODE = 42000 -MAPI = (monetdb) /var/tmp/mtest-25092/.s.monetdb.31020 -QUERY = select 0xG; -ERROR = !syntax error, unexpected IDENT, expecting SCOLON in: "select 0xg" -CODE = 42000 -MAPI = (monetdb) /var/tmp/mtest-25092/.s.monetdb.31020 QUERY = select 0x8000000000000000; ERROR = !Invalid hexadecimal number or hexadecimal too large (0x8000000000000000) in: "select 0x8000000000000000" CODE = 22003 @@ -90,15 +82,7 @@ MAPI = (monetdb) /var/tmp/mtest-25092/. QUERY = select 0x123456789abcdef0123456789abcdef01; ERROR = !Invalid hexadecimal number or hexadecimal too large (0x123456789abcdef0123456789abcdef01) in: "select 0x123456789abcdef0123456789abcdef01" CODE = 22003 -MAPI = (monetdb) /var/tmp/mtest-25092/.s.monetdb.31020 -QUERY = select -0xg; -ERROR = !syntax error, unexpected IDENT, expecting SCOLON in: "select -0xg" -CODE = 42000 -MAPI = (monetdb) /var/tmp/mtest-25092/.s.monetdb.31020 -QUERY = select -0xG; -ERROR = !syntax error, unexpected IDENT, expecting SCOLON in: "select -0xg" -CODE = 42000 -MAPI = (monetdb) /var/tmp/mtest-25092/.s.monetdb.31020 +MAPI = (monetdb) /var/tmp/mtest-5399/.s.monetdb.32319 QUERY = select -0x8000000000000000; ERROR = !Invalid hexadecimal number or hexadecimal too large (0x8000000000000000) in: "select -0x8000000000000000" CODE = 22003 diff --git a/sql/test/BugTracker-2015/Tests/crash_in_reduce_groupby.Bug-3818.stable.out b/sql/test/BugTracker-2015/Tests/crash_in_reduce_groupby.Bug-3818.stable.out --- a/sql/test/BugTracker-2015/Tests/crash_in_reduce_groupby.Bug-3818.stable.out +++ b/sql/test/BugTracker-2015/Tests/crash_in_reduce_groupby.Bug-3818.stable.out @@ -39,18 +39,16 @@ Ready. # FROM t2a # GROUP BY cods, elrik, ether, jaelen, sora; % .L11, .L11, .L11, .L11, .L11, .L11 # table_name -% cods, elrik, ether, jaelen, sora, L1 # name +% cods, elrik, ether, jaelen, sora, L7 # name % int, int, int, int, int, bigint # type % 1, 1, 1, 1, 1, 1 # length -[ 0, 0, 0, 0, 0, NULL ] #SELECT 0 AS cods, 0 AS elrik, 0 AS ether, 0 AS jaelen, 0 AS sora, SUM(tib0) # FROM t2a #GROUP BY cods, elrik, ether, jaelen, sora; % .L, .L, .L, .L, .L, sys.L1 # table_name -% cods, elrik, ether, jaelen, sora, L1 # name +% cods, elrik, ether, jaelen, sora, L14 # name % tinyint, tinyint, tinyint, tinyint, tinyint, bigint # type % 1, 1, 1, 1, 1, 1 # length -[ 0, 0, 0, 0, 0, NULL ] #drop table t2a; #drop table t1a; diff --git a/sql/test/BugTracker-2017/Tests/All b/sql/test/BugTracker-2017/Tests/All --- a/sql/test/BugTracker-2017/Tests/All +++ b/sql/test/BugTracker-2017/Tests/All @@ -122,3 +122,4 @@ sqlitelogictest-hidden-alias.Bug-6495 sqlitelogictest-comparisons-between-floating-points-and-NULL.Bug-6496 sqlitelogictest-not-between.Bug-6497 createorreplace-system-func.Bug-6499 +crash-on-limit-rename.Bug-6502 diff --git a/sql/test/BugTracker-2017/Tests/cleanup_statistics.Bug-6439.stable.out.FreeBSD b/sql/test/BugTracker-2017/Tests/cleanup_statistics.Bug-6439.stable.out.FreeBSD new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2017/Tests/cleanup_statistics.Bug-6439.stable.out.FreeBSD @@ -0,0 +1,76 @@ +stdout of test 'cleanup_statistics.Bug-6439` in directory 'sql/test/BugTracker-2017` itself: + + +# 17:52:04 > +# 17:52:04 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=33623" "--set" "mapi_usock=/var/tmp/mtest-15308/.s.monetdb.33623" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2017" +# 17:52:04 > + +# MonetDB 5 server v11.27.6 +# This is an unreleased version +# Serving database 'mTests_sql_test_BugTracker-2017', using 4 threads +# Compiled for x86_64-unknown-linux-gnu/64bit +# Found 7.330 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2017 MonetDB B.V., all rights reserved +# Visit https://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://localhost.nes.nl:33623/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-15308/.s.monetdb.33623 +# MonetDB/GIS module loaded +# MonetDB/SQL module loaded + +Ready. + +# 17:52:04 > +# 17:52:04 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-15308" "--port=33623" +# 17:52:04 > + +#CREATE TABLE sys.abc (a INT, b VARCHAR(10)); +#INSERT INTO sys.abc VALUES (1, 'one'); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list