Changeset: e4f07401b117 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e4f07401b117
Modified Files:
sql/backends/monet5/sql_rank.c
sql/backends/monet5/sql_rank.mal
sql/server/rel_select.c
Branch: analytics
Log Message:
also pass unit information (ie for now ROWS unit only)
diffs (65 lines):
diff --git a/sql/backends/monet5/sql_rank.c b/sql/backends/monet5/sql_rank.c
--- a/sql/backends/monet5/sql_rank.c
+++ b/sql/backends/monet5/sql_rank.c
@@ -307,7 +307,7 @@ SQLanalytics_args(BAT **r, BAT **b, BAT
*r = *b = *p = *o = NULL;
(void)cntxt;
- if (pci->argc != 7 ||
+ if (pci->argc != 8 ||
(getArgType(mb, pci, 2) != TYPE_bit &&
getBatType(getArgType(mb, pci, 2)) != TYPE_bit) ||
(getArgType(mb, pci, 3) != TYPE_bit &&
getBatType(getArgType(mb, pci, 3)) != TYPE_bit)){
throw(SQL, mod, "%s", err);
@@ -349,12 +349,13 @@ SQLmin(Client cntxt, MalBlkPtr mb, MalSt
BAT *r, *b, *p, *o;
str res = SQLanalytics_args( &r, &b, &p, &o, cntxt, mb, stk, pci,
"sql.min", "min(:any_1,:bit,:bit)");
int tpe = getArgType(mb, pci, 1);
- int start = *getArgReference_int(stk, pci, 4);
- int end = *getArgReference_int(stk, pci, 5);
- int excl = *getArgReference_int(stk, pci, 6);
+ int unit = *getArgReference_int(stk, pci, 4);
+ int start = *getArgReference_int(stk, pci, 5);
+ int end = *getArgReference_int(stk, pci, 6);
+ int excl = *getArgReference_int(stk, pci, 7);
- if (excl != 0)
- throw(SQL, "sql.min", "OVER currently only supports frame
extends with unit ROWS");
+ if (unit != 0 || excl != 0)
+ throw(SQL, "sql.min", "OVER currently only supports frame
extends with unit ROWS (and none of the excludes)");
(void)start;
(void)end;
diff --git a/sql/backends/monet5/sql_rank.mal b/sql/backends/monet5/sql_rank.mal
--- a/sql/backends/monet5/sql_rank.mal
+++ b/sql/backends/monet5/sql_rank.mal
@@ -47,11 +47,11 @@ pattern batsql.dense_rank(b:bat[:any_1],
address SQLdense_rank
comment "return the densely ranked groups";
-pattern sql.min(b:any_1, p:bit, o:bit, s:int, e:int, excl:int) :any_1
+pattern sql.min(b:any_1, p:bit, o:bit, unit:int, s:int, e:int, excl:int)
:any_1
address SQLmin
comment "return the minimum of groups";
-pattern batsql.min(b:bat[:any_1], p:any_2, o:any_3, s:int, e:int, exl:int)
:bat[:any_1]
+pattern batsql.min(b:bat[:any_1], p:any_2, o:any_3, unit:int, s:int, e:int,
exl:int) :bat[:any_1]
address SQLmin
comment "return the minimum of groups";
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
@@ -4312,11 +4312,12 @@ rel_rankop(mvc *sql, sql_rel **rel, symb
append(args, pe);
append(args, oe);
if (fbe) {
- /* for now skip unit */
+ append(args, list_fetch(fbe, 0)); /*units */
append(args, list_fetch(fbe, 1)); /*start */
append(args, list_fetch(fbe, 2)); /*end */
append(args, list_fetch(fbe, 3)); /*exclude */
} else if (aggr) {
+ append(args, exp_atom_int(sql->sa, 0)); /*ROWS */
append(args, exp_atom_int(sql->sa, -1)); /*start */
append(args, exp_atom_int(sql->sa, -1)); /*end */
append(args, exp_atom_int(sql->sa, 0)); /*exclude */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list