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