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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list