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

Reply via email to