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

Reply via email to