Changeset: 798d9ad8af9a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=798d9ad8af9a
Modified Files:
gdk/gdk_aggr.c
sql/test/BugTracker-2013/Tests/case-orderby.Bug-3388.stable.out
Branch: Feb2013
Log Message:
fixed bug in gdk_aggr, handling of null only sets.
diffs (48 lines):
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -234,12 +234,12 @@ BATgroupaggrinit(const BAT *b, const BAT
if (gids == NULL || \
(gids[i] >= min && gids[i] <= max)) { \
gid = gids ? gids[i] - min : (oid) i; \
- if (nil_if_empty && \
+ x = vals[i]; \
+ if (nil_if_empty && x != TYPE1##_nil &&
\
!(seen[gid >> 5] & (1 << (gid &
0x1F)))) { \
seen[gid >> 5] |= 1 << (gid &
0x1F); \
sums[gid] = 0; \
} \
- x = vals[i]; \
if (x == TYPE1##_nil) { \
if (!skip_nils) { \
sums[gid] =
TYPE2##_nil; \
@@ -729,7 +729,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
else \
gid = (oid) i; \
} \
- if (nil_if_empty && \
+ if (nil_if_empty && vals[i] != TYPE1##_nil && \
!(seen[gid >> 5] & (1 << (gid & 0x1F)))) { \
seen[gid >> 5] |= 1 << (gid & 0x1F); \
prods[gid] = 1; \
diff --git a/sql/test/BugTracker-2013/Tests/case-orderby.Bug-3388.stable.out
b/sql/test/BugTracker-2013/Tests/case-orderby.Bug-3388.stable.out
--- a/sql/test/BugTracker-2013/Tests/case-orderby.Bug-3388.stable.out
+++ b/sql/test/BugTracker-2013/Tests/case-orderby.Bug-3388.stable.out
@@ -73,8 +73,6 @@ Ready.
% L1 # name
% bigint # type
% 2 # length
-[ 0 ]
-[ 0 ]
[ 2 ]
[ 2 ]
[ 3 ]
@@ -82,6 +80,8 @@ Ready.
[ 65 ]
[ NULL ]
[ NULL ]
+[ NULL ]
+[ NULL ]
#rollback;
# 09:17:50 >
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list