Changeset: 0656448233d2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0656448233d2
Added Files:
        
sql/test/BugTracker-2014/Tests/select-distinct-order-limit.Bug-3527.nomito
        sql/test/BugTracker-2014/Tests/select-distinct-order-limit.Bug-3527.sql
        
sql/test/BugTracker-2014/Tests/select-distinct-order-limit.Bug-3527.stable.err
        
sql/test/BugTracker-2014/Tests/select-distinct-order-limit.Bug-3527.stable.out
Modified Files:
        clients/Tests/MAL-signatures_all.stable.out
        clients/Tests/MAL-signatures_fits_geom.stable.out
        clients/Tests/MAL-signatures_geom.stable.out
        clients/Tests/MAL-signatures_none.stable.out
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_firstn.c
        monetdb5/mal/Tests/tst1225.mal
        monetdb5/mal/Tests/tst1225.stable.out
        monetdb5/mal/Tests/tst220.mal
        monetdb5/mal/Tests/tst220.stable.out
        monetdb5/mal/Tests/tst2510.mal
        monetdb5/mal/Tests/tst2510.stable.out
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_resolve.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/algebra.mal
        monetdb5/modules/mal/Tests/pqueue.mal
        monetdb5/modules/mal/Tests/pqueue.stable.out
        monetdb5/modules/mal/Tests/pqueue2.mal
        monetdb5/modules/mal/Tests/pqueue2.stable.out
        monetdb5/modules/mal/Tests/pqueue3.mal
        monetdb5/modules/mal/Tests/pqueue3.stable.out
        monetdb5/modules/mal/bbp.c
        monetdb5/optimizer/Tests/common.mal
        monetdb5/optimizer/Tests/common.stable.out
        monetdb5/optimizer/Tests/reorder01.mal
        monetdb5/optimizer/Tests/reorder01.stable.out
        monetdb5/optimizer/Tests/tst4631.mal
        monetdb5/optimizer/Tests/tst4631.stable.out
        monetdb5/optimizer/Tests/tst4730.mal
        monetdb5/optimizer/Tests/tst4730.stable.out
        monetdb5/optimizer/opt_support.c
        monetdb5/scheduler/run_pipeline.c
        monetdb5/tests/gdkTests/Tests/firstn.mal
        sql/backends/monet5/embeddedclient.c.in
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_scenario.c
        sql/benchmarks/tpch/Tests/02-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out
        sql/benchmarks/tpch/Tests/10-explain.stable.out
        sql/benchmarks/tpch/Tests/18-explain.stable.out
        sql/benchmarks/tpch/Tests/21-explain.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        sql/test/BugTracker-2014/Tests/All
        testing/Mtest.py.in
        testing/README
Branch: default
Log Message:

Merge with Oct2014 branch.


diffs (truncated from 2187 to 300 lines):

diff --git a/clients/Tests/MAL-signatures_all.stable.out 
b/clients/Tests/MAL-signatures_all.stable.out
--- a/clients/Tests/MAL-signatures_all.stable.out
+++ b/clients/Tests/MAL-signatures_all.stable.out
@@ -2302,27 +2302,27 @@ command algebra.exist(b:bat[:oid,:any_1]
 address ALGexist;
 comment Returns whether 'val' occurs in b.
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit)
 (X_7:bat[:oid,:oid],X_8:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit) 
(X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit) 
(X_4:bat[:oid,:oid],X_5:bat[:oid,:oid]) 
+pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid]
 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid] 
 address ALGfirstn;
 comment Calculate first N values of B
 
diff --git a/clients/Tests/MAL-signatures_fits_geom.stable.out 
b/clients/Tests/MAL-signatures_fits_geom.stable.out
--- a/clients/Tests/MAL-signatures_fits_geom.stable.out
+++ b/clients/Tests/MAL-signatures_fits_geom.stable.out
@@ -2302,27 +2302,27 @@ command algebra.exist(b:bat[:oid,:any_1]
 address ALGexist;
 comment Returns whether 'val' occurs in b.
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit)
 (X_7:bat[:oid,:oid],X_8:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit) 
(X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit) 
(X_4:bat[:oid,:oid],X_5:bat[:oid,:oid]) 
+pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid]
 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid] 
 address ALGfirstn;
 comment Calculate first N values of B
 
diff --git a/clients/Tests/MAL-signatures_geom.stable.out 
b/clients/Tests/MAL-signatures_geom.stable.out
--- a/clients/Tests/MAL-signatures_geom.stable.out
+++ b/clients/Tests/MAL-signatures_geom.stable.out
@@ -2302,27 +2302,27 @@ command algebra.exist(b:bat[:oid,:any_1]
 address ALGexist;
 comment Returns whether 'val' occurs in b.
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit)
 (X_7:bat[:oid,:oid],X_8:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit) 
(X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit) 
(X_4:bat[:oid,:oid],X_5:bat[:oid,:oid]) 
+pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid]
 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid] 
 address ALGfirstn;
 comment Calculate first N values of B
 
diff --git a/clients/Tests/MAL-signatures_none.stable.out 
b/clients/Tests/MAL-signatures_none.stable.out
--- a/clients/Tests/MAL-signatures_none.stable.out
+++ b/clients/Tests/MAL-signatures_none.stable.out
@@ -2301,27 +2301,27 @@ command algebra.exist(b:bat[:oid,:any_1]
 address ALGexist;
 comment Returns whether 'val' occurs in b.
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit)
 (X_7:bat[:oid,:oid],X_8:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit) 
(X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit) 
(X_4:bat[:oid,:oid],X_5:bat[:oid,:oid]) 
+pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid]
 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid] 
 address ALGfirstn;
 comment Calculate first N values of B
 
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -116,7 +116,7 @@ void BATderiveHeadProps(BAT *b, int expe
 void BATderiveProps(BAT *b, int expensive);
 BAT *BATextend(BAT *b, BUN newcap);
 BAT *BATfakeCommit(BAT *b);
-gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, BAT *grps, 
BUN n, int asc);
+gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, BAT *grps, 
BUN n, int asc, int distinct);
 int BATgetaccess(BAT *b);
 PROPrec *BATgetprop(BAT *b, int idx);
 gdk_return BATgroup(BAT **groups, BAT **extents, BAT **histo, BAT *b, BAT *g, 
BAT *e, BAT *h);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -3372,7 +3372,7 @@ gdk_export BAT *BATkdiff(BAT *b, BAT *c)
 gdk_export BAT *BATmergecand(BAT *a, BAT *b);
 gdk_export BAT *BATintersectcand(BAT *a, BAT *b);
 
-gdk_export gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, 
BAT *grps, BUN n, int asc);
+gdk_export gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, 
BAT *grps, BUN n, int asc, int distinct);
 
 #include "gdk_calc.h"
 
diff --git a/gdk/gdk_firstn.c b/gdk/gdk_firstn.c
--- a/gdk/gdk_firstn.c
+++ b/gdk/gdk_firstn.c
@@ -46,9 +46,9 @@
  *
  * Note that BATfirstn can be called in cascading fashion to calculate
  * the first n values of a table of multiple columns:
- *      BATfirstn(&s1, &g1, b1, NULL, NULL, n, asc);
- *      BATfirstn(&s2, &g2, b2, s1, g1, n, asc);
- *      BATfirstn(&s3, NULL, b3, s2, g2, n, asc);
+ *      BATfirstn(&s1, &g1, b1, NULL, NULL, n, asc, distinct);
+ *      BATfirstn(&s2, &g2, b2, s1, g1, n, asc, distinct);
+ *      BATfirstn(&s3, NULL, b3, s2, g2, n, asc, distinct);
  * If the input BATs b1, b2, b3 are large enough, s3 will contain the
  * OIDs of the smallest (largest) n elements in the table consisting
  * of the columns b1, b2, b3 when ordered in ascending order with b1
@@ -455,7 +455,7 @@ BATfirstn_unique_with_groups(BAT *b, BAT
        } while (0)
 
 static gdk_return
-BATfirstn_grouped(BAT **topn, BAT **gids, BAT *b, BAT *s, BUN n, int asc)
+BATfirstn_grouped(BAT **topn, BAT **gids, BAT *b, BAT *s, BUN n, int asc, int 
distinct)
 {
        BAT *bn, *gn;
        BATiter bi = bat_iterator(b);
@@ -466,7 +466,6 @@ BATfirstn_grouped(BAT **topn, BAT **gids
        int c;
        int (*cmp)(const void *, const void *);
        BUN ncnt;
-       int distinct = 0;
        struct group {
                BUN bun;
                BUN cnt;
@@ -730,7 +729,7 @@ BATfirstn_grouped(BAT **topn, BAT **gids
        } while (0)
 
 static gdk_return
-BATfirstn_grouped_with_groups(BAT **topn, BAT **gids, BAT *b, BAT *s, BAT *g, 
BUN n, int asc)
+BATfirstn_grouped_with_groups(BAT **topn, BAT **gids, BAT *b, BAT *s, BAT *g, 
BUN n, int asc, int distinct)
 {
        BAT *bn, *gn;
        BATiter bi = bat_iterator(b);
@@ -741,7 +740,6 @@ BATfirstn_grouped_with_groups(BAT **topn
        int c;
        int (*cmp)(const void *, const void *);
        BUN ncnt;
-       int distinct = 0;
        struct group {
                BUN bun;
                BUN cnt;
@@ -959,7 +957,7 @@ BATfirstn_grouped_with_groups(BAT **topn
 }
 
 gdk_return
-BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *s, BAT *g, BUN n, int asc)
+BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *s, BAT *g, BUN n, int asc, int 
distinct)
 {
        assert(topn != NULL);
        if (b == NULL) {
@@ -1001,11 +999,11 @@ BATfirstn(BAT **topn, BAT **gids, BAT *b
                        *topn = BATfirstn_unique(b, s, n, asc);
                        return *topn ? GDK_SUCCEED : GDK_FAIL;
                }
-               return BATfirstn_grouped(topn, gids, b, s, n, asc);
+               return BATfirstn_grouped(topn, gids, b, s, n, asc, distinct);
        }
        if (gids == NULL) {
                *topn = BATfirstn_unique_with_groups(b, s, g, n, asc);
                return *topn ? GDK_SUCCEED : GDK_FAIL;
        }
-       return BATfirstn_grouped_with_groups(topn, gids, b, s, g, n, asc);
+       return BATfirstn_grouped_with_groups(topn, gids, b, s, g, n, asc, 
distinct);
 }
diff --git a/monetdb5/mal/Tests/tst1225.mal b/monetdb5/mal/Tests/tst1225.mal
--- a/monetdb5/mal/Tests/tst1225.mal
+++ b/monetdb5/mal/Tests/tst1225.mal
@@ -10,8 +10,8 @@
        pc_a := calc.*(23,60);
        qc_a := calc.+(pc_a,59);
        tzone_bat:= bat.new(:oid,:timezone);
-       i8:= 8@0;       # don;t use 08@0
-       io.print(i8);   # don;t use 09@0
+       i8:= 8@0;       # don't use 08@0
+       io.print(i8);   # don't use 09@0
        i9:= 9@0;
        io.print(i9);
        bd_a := bat.insert(tzone_bat,8@0,tzone_08);
diff --git a/monetdb5/mal/Tests/tst1225.stable.out 
b/monetdb5/mal/Tests/tst1225.stable.out
--- a/monetdb5/mal/Tests/tst1225.stable.out
+++ b/monetdb5/mal/Tests/tst1225.stable.out
@@ -22,8 +22,8 @@ stdout of test 'tst1225` in directory 'm
 #      pc_a := calc.*(23,60);
 #      qc_a := calc.+(pc_a,59);
 #      tzone_bat:= bat.new(:oid,:timezone);
-#      i8:= 8@0;       # don;t use 08@0
-#      io.print(i8);   # don;t use 09@0
+#      i8:= 8@0;       # don't use 08@0
+#      io.print(i8);   # don't use 09@0
 #      i9:= 9@0;
 #      io.print(i9);
 #      bd_a := bat.insert(tzone_bat,8@0,tzone_08);
@@ -45,9 +45,9 @@ function user.main():void;
     qc_a := calc.+(pc_a,59);
     tzone_bat := bat.new(:oid,:timezone);
     i8 := 8@0;
-# don;t use 08@0 
+# don't use 08@0 
     io.print(i8);
-# don;t use 09@0 
+# don't use 09@0 
     i9 := 9@0;
     io.print(i9);
     bd_a := bat.insert(tzone_bat,8@0,tzone_08);
diff --git a/monetdb5/mal/Tests/tst220.mal b/monetdb5/mal/Tests/tst220.mal
--- a/monetdb5/mal/Tests/tst220.mal
+++ b/monetdb5/mal/Tests/tst220.mal
@@ -24,7 +24,7 @@ end createone;
        i:= bbp.getLRefCount(b);
        io.printf("refcount =%d[1]\n",i);
 
-       #handle an alias, which isn;t used!
+       #handle an alias, which isn't used!
        b2:= b;                 
        i:= bbp.getLRefCount(b);
        io.printf("after assignment refcount =%d[2]\n",i);
diff --git a/monetdb5/mal/Tests/tst220.stable.out 
b/monetdb5/mal/Tests/tst220.stable.out
--- a/monetdb5/mal/Tests/tst220.stable.out
+++ b/monetdb5/mal/Tests/tst220.stable.out
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to