Changeset: b68c34bbd171 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b68c34bbd171
Modified Files:
sql/include/sql_relation.h
sql/server/rel_dump.c
sql/server/rel_exp.c
sql/server/rel_optimize_others.c
sql/server/rel_optimize_sel.c
sql/server/rel_unnest.c
sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.test
sql/test/Tests/select_window_pushdown.test
sql/test/analytics/Tests/analytics00.test
Branch: ordered-set-aggregates
Log Message:
push topn under some rank functions
diffs (truncated from 304 to 300 lines):
diff --git a/sql/include/sql_relation.h b/sql/include/sql_relation.h
--- a/sql/include/sql_relation.h
+++ b/sql/include/sql_relation.h
@@ -55,6 +55,7 @@ typedef struct expression {
intern:1,
selfref:1, /* set when the expression references a
expression in the same projection list */
anti:1,
+ partitioning:1, /* partitioning */
ascending:1, /* order direction */
nulls_last:1, /* return null after all other rows */
zero_if_empty:1, /* in case of partial aggregator computation,
some aggregators need to return 0 instead of NULL */
@@ -233,6 +234,8 @@ typedef enum operator_type {
#define set_has_no_nil(e) (e)->has_no_nil = 1
#define set_has_nil(e) (e)->has_no_nil = 0
+#define is_partitioning(e) ((e)->partitioning)
+#define set_partitioning(e) ((e)->partitioning = 1)
#define is_ascending(e) ((e)->ascending)
#define set_ascending(e) ((e)->ascending = 1)
#define set_descending(e) ((e)->ascending = 0)
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -332,6 +332,8 @@ exp_print(mvc *sql, stream *fout, sql_ex
default:
;
}
+ if (e->type != e_atom && e->type != e_cmp && is_partitioning(e))
+ mnstr_printf(fout, " PART");
if (e->type != e_atom && e->type != e_cmp && is_ascending(e))
mnstr_printf(fout, " ASC");
if (e->type != e_atom && e->type != e_cmp && nulls_last(e))
@@ -1721,6 +1723,12 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
return NULL;
}
+ /* [ PART ] */
+ if (strncmp(r+*pos, "PART", strlen("PART")) == 0) {
+ (*pos)+= (int) strlen("PART");
+ skipWS(r, pos);
+ set_partitioning(exp);
+ }
/* [ ASC ] */
if (strncmp(r+*pos, "ASC", strlen("ASC")) == 0) {
(*pos)+= (int) strlen("ASC");
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -741,6 +741,8 @@ exp_propagate(allocator *sa, sql_exp *ne
set_any(ne);
if (is_symmetric(oe))
set_symmetric(ne);
+ if (is_partitioning(oe))
+ set_partitioning(ne);
if (is_ascending(oe))
set_ascending(ne);
if (nulls_last(oe))
diff --git a/sql/server/rel_optimize_others.c b/sql/server/rel_optimize_others.c
--- a/sql/server/rel_optimize_others.c
+++ b/sql/server/rel_optimize_others.c
@@ -1389,6 +1389,7 @@ rel_push_topn_and_sample_down_(visitor *
int fnd = 1;
for (node *n = obes->h; n && fnd; n = n->next) {
sql_exp *obe = n->data;
+ int part = is_partitioning(obe);
int asc = is_ascending(obe);
int nl = nulls_last(obe);
/* only simple rename expressions */
@@ -1401,6 +1402,8 @@ rel_push_topn_and_sample_down_(visitor *
if (exp_is_atom(pe))
return rel;
pe = exp_ref(v->sql, pe);
+ if (part)
+ set_partitioning(pe);
if (asc)
set_ascending(pe);
if (nl)
diff --git a/sql/server/rel_optimize_sel.c b/sql/server/rel_optimize_sel.c
--- a/sql/server/rel_optimize_sel.c
+++ b/sql/server/rel_optimize_sel.c
@@ -3572,6 +3572,23 @@ get_partition_by_key_columns(allocator *
return NULL;
}
+static bool
+rank_exp_has_partition_key(sql_exp *e)
+{
+ if (e->type == e_func) {
+ sql_subfunc *f = e->f;
+
+ if (f->func->type == F_ANALYTIC) {
+ list *args = e->l;
+
+ if (list_length(args) >= 2) { // the partition key is
the second argument
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
/*
* Checks if a filter column is also used as an aggregation key, so it can be
later safely pushed down.
*/
@@ -3803,6 +3820,35 @@ rel_push_select_down(visitor *v, sql_rel
/* cleanup list */
list_destroy(keyColumns);
}
+ /* also push (rewrite) limits on output of
row_number/(*)rank like window functions */
+ if (is_simple_project(r->op) /*&&
is_simple_project(pl->op)*/) { /* possible window functions */
+ for (n = exps->h; n; n = n->next) {
+ sql_exp *e = n->data;
+
+ if (e->type == e_cmp && (e->flag ==
cmp_lt || e->flag == cmp_lte) && exp_is_atom(e->r)) { /* simple limit */
+ sql_exp *ranke =
rel_find_exp(r, e->l);
+
+ if (ranke && ranke->type ==
e_func) {
+ sql_subfunc *rankf =
ranke->f;
+ if (rankf->func->type
== F_ANALYTIC) { /* rank functions cannot have a frame */
+ // For now only
for rank/row_number without partition by
+ if
(strcmp(rankf->func->base.name, "rank") == 0 && is_simple_project(pl->op) &&
pl->r &&
+
!rank_exp_has_partition_key(ranke)) {
+ r->l =
rel_topn(v->sql->sa, r->l, append(sa_list(v->sql->sa), e->r));
+
v->changes++;
+ break;
+ }
+ if
(strcmp(rankf->func->base.name, "row_number") == 0 && list_empty(r->r) &&
!is_topn(pl->op) &&
+
!rank_exp_has_partition_key(ranke)) {
+ r->l =
rel_topn(v->sql->sa, r->l, append(sa_list(v->sql->sa), e->r));
+
v->changes++;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
}
}
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -2808,6 +2808,10 @@ rewrite_rank(visitor *v, sql_rel *rel, s
if (gbe && obe) {
gbe = list_merge(sa_list(v->sql->sa), gbe, (fdup)NULL);
/* make sure the p->r is a different list than the gbe list */
i = 0;
+ for(node *n = gbe->h ; n ; n = n->next) {
+ sql_exp *e = n->data;
+ set_partitioning(e);
+ }
for(node *n = obe->h ; n ; n = n->next, i++) {
sql_exp *e1 = n->data;
bool found = false;
@@ -2866,6 +2870,8 @@ rewrite_rank(visitor *v, sql_rel *rel, s
sql_exp *found = exps_find_exp(rell->exps, next);
sql_exp *ref = exp_ref(v->sql, found ? found : next);
+ if (is_partitioning(next))
+ set_partitioning(ref);
if (is_ascending(next))
set_ascending(ref);
if (nulls_last(next))
diff --git
a/sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.test
b/sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.test
---
a/sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.test
+++
b/sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.test
@@ -53,8 +53,8 @@ project (
| | | | | | | | | | | table("sys"."args") [ "args"."func_id" NOT NULL as
"p"."func_id", "args"."inout" NOT NULL as "p"."inout", "args"."number" NOT NULL
as "p"."number" ]
| | | | | | | | | | ) [ ("p"."inout" NOT NULL) = (tinyint(1) "1") ]
| | | | | | | | | ) [ ("f"."id" NOT NULL UNIQUE) = ("p"."func_id" NOT NULL) ]
-| | | | | | | | ) [ "f"."id" NOT NULL, "p"."number" ] [ "f"."id" ASC NOT NULL,
"p"."number" ASC ]
-| | | | | | | ) [ "f"."id" NOT NULL, "p"."number" ] [ "f"."id" ASC NOT NULL,
"p"."number" NULLS LAST ]
+| | | | | | | | ) [ "f"."id" NOT NULL, "p"."number" ] [ "f"."id" PART ASC NOT
NULL, "p"."number" ASC ]
+| | | | | | | ) [ "f"."id" NOT NULL, "p"."number" ] [ "f"."id" PART ASC NOT
NULL, "p"."number" NULLS LAST ]
| | | | | | ) [ "f"."id" NOT NULL, "p"."number" ] [ "f"."id" ASC NOT NULL,
"p"."number" ASC ]
| | | | | ) [ "f"."id" NOT NULL, "sys"."row_number"(varchar["sys"."star"()],
boolean(1) "false", "sys"."diff"("sys"."diff"("f"."id" NOT NULL),
"p"."number")) as "line" ]
| | | | ) [ "f"."id" NOT NULL as "fid", "line" ]
diff --git a/sql/test/Tests/select_window_pushdown.test
b/sql/test/Tests/select_window_pushdown.test
--- a/sql/test/Tests/select_window_pushdown.test
+++ b/sql/test/Tests/select_window_pushdown.test
@@ -27,8 +27,8 @@ project (
| | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | | ) [ ("test"."k" NOT NULL) = (int(31) "10") ]
| | | | ) [ int(31) "10" as "t1"."k", "test"."v" NOT NULL UNIQUE as "t1"."v",
"sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as "%1"."%1",
"sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | ) [ "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
+| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
+| | ) [ "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31)
"1") ]
) [ int(31) "10" as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v", boolean(1)
"false" as "t2"."flag", int(31) "1" as "t2"."rank" ]
@@ -53,8 +53,8 @@ project (
| | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | | ) [ (int(31) "10") <= ("test"."k" NOT NULL) <= (int(31) "50") ]
| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
+| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
+| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
boolean(1) "false" as "t2"."flag", int(31) "1" as "t2"."rank" ]
@@ -79,8 +79,8 @@ project (
| | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | | ) [ ("test"."k" NOT NULL) notin (int(31) "10", int(31) "20", int(31)
"30") ]
| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as
"%2"."%2", "sys"."="("%2"."%2" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
+| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
+| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
boolean(1) "false" as "t2"."flag", int(31) "1" as "t2"."rank" ]
@@ -105,8 +105,8 @@ project (
| | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | | ) [ ("test"."k" NOT NULL) = (int(31) "10") ]
| | | | ) [ int(31) "10" as "t1"."k", "test"."v" NOT NULL UNIQUE as "t1"."v",
"sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as "%1"."%1",
"sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | ) [ "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
+| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
+| | ) [ "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
| ) [ ("t1"."v" NOT NULL UNIQUE) = (int(31) "15"), ("t1"."flag" NOT NULL) =
(boolean(1) "false"), ("t2"."rank") = (int(31) "1") ]
) [ int(31) "10" as "t2"."k", int(31) "15" as "t2"."v", boolean(1) "false" as
"t2"."flag", int(31) "1" as "t2"."rank" ]
@@ -132,8 +132,8 @@ project (
| | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | | ) [ ("test"."v" NOT NULL UNIQUE) = (int(31) "15") ]
| | | | ) [ "test"."k" NOT NULL as "t1"."k", int(31) "15" as "t1"."v",
"sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as "%1"."%1",
"sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | ) [ "t1"."k" NOT NULL, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."v" NOT NULL UNIQUE),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
+| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."v" PART NULLS LAST NOT NULL UNIQUE ]
+| | ) [ "t1"."k" NOT NULL, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."v" PART NOT NULL
UNIQUE), "sys"."diff"("t1"."v" PART NOT NULL UNIQUE)) as "t2"."rank" ]
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31)
"1"), ("t1"."k" NOT NULL) = (int(31) "10") ]
) [ int(31) "10" as "t2"."k", int(31) "15" as "t2"."v", boolean(1) "false" as
"t2"."flag", int(31) "1" as "t2"."rank" ]
@@ -159,8 +159,8 @@ project (
| | | | | | project (
| | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT
NULL ] [ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
+| | | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT
NULL ] [ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
+| | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
| | | ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") =
(int(31) "1") ]
| | ) [ "sys"."sql_mul"("t1"."k" NOT NULL, tinyint(4) "10") NOT NULL as
"t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v" ]
| ) [ ("t2"."k" NOT NULL) = (bigint(35) "10") ]
@@ -185,8 +185,8 @@ project (
| | | | project (
| | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
+| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
+| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
| ) [ ("t2"."rank") = (int(31) "1"), (("t1"."flag" NOT NULL) = (boolean(1)
"false")) or (("t1"."k" NOT NULL) = (int(31) "10")) ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", int(31) "1" as "t2"."rank" ]
@@ -211,8 +211,8 @@ project (
| | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | | ) [ ("test"."k" NOT NULL) <= (int(31) "10"), ("test"."v" NOT NULL
UNIQUE) in (int(31) "1", int(31) "2", int(31) "3") ]
| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as
"%2"."%2", "sys"."="("%2"."%2" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("sys"."diff"("t1"."k" NOT
NULL), "t1"."v" NOT NULL UNIQUE), "sys"."diff"("t1"."v" NOT NULL UNIQUE)) as
"t2"."rank" ]
+| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" PART ASC NOT NULL, "t1"."v" PART NULLS LAST NOT NULL UNIQUE ]
+| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("sys"."diff"("t1"."k" PART
NOT NULL), "t1"."v" PART NOT NULL UNIQUE), "sys"."diff"("t1"."v" PART NOT NULL
UNIQUE)) as "t2"."rank" ]
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
boolean(1) "false" as "t2"."flag", int(31) "1" as "t2"."rank" ]
@@ -247,8 +247,8 @@ project (
| | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | | ) [ ("test"."k" NOT NULL) = (varchar(100) "10") ]
| | | | ) [ varchar(100) "10" as "t1"."k", "test"."v" NOT NULL UNIQUE as
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | ) [ "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
+| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
+| | ) [ "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31)
"1") ]
) [ varchar(100) "10" as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
boolean(1) "false" as "t2"."flag", int(31) "1" as "t2"."rank" ]
@@ -273,8 +273,8 @@ project (
| | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ]
| | | | | ) [ (varchar["test"."k" NOT NULL] NOT NULL) FILTER
"sys"."like"(varchar "%10%", varchar "", boolean(1) "false") ]
| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
-| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
-| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
+| | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ]
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
+| | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
boolean(1) "false" as "t2"."flag", int(31) "1" as "t2"."rank" ]
diff --git a/sql/test/analytics/Tests/analytics00.test
b/sql/test/analytics/Tests/analytics00.test
--- a/sql/test/analytics/Tests/analytics00.test
+++ b/sql/test/analytics/Tests/analytics00.test
@@ -1871,8 +1871,8 @@ project (
| | | project (
| | | | table("sys"."myorders") [ "myorders"."o_custkey" NOT NULL UNIQUE,
"myorders"."o_totalprice" NOT NULL UNIQUE, "myorders"."o_orderdate" NOT NULL
UNIQUE ]
| | | ) [ "myorders"."o_custkey" NOT NULL UNIQUE, "myorders"."o_totalprice"
NOT NULL UNIQUE, "sys"."month"("myorders"."o_orderdate" NOT NULL UNIQUE) NOT
NULL as "%1"."%1" ]
-| | ) [ "myorders"."o_custkey" NOT NULL UNIQUE, "myorders"."o_totalprice" NOT
NULL UNIQUE, "%1"."%1" NOT NULL ] [ "myorders"."o_custkey" ASC NOT NULL UNIQUE,
"%1"."%1" ASC NOT NULL ]
-| ) [ "%1"."%1" NOT NULL, "sys"."diff"("myorders"."o_custkey" NOT NULL UNIQUE)
as "%2"."%2", "sys"."diff"("%1"."%1" NOT NULL) as "%3"."%3",
"sys"."min"("myorders"."o_totalprice" NOT NULL UNIQUE, "%2"."%2",
"sys"."diff"("%1"."%1" NOT NULL), int(1) "0", "sys"."window_bound"("%2"."%2",
"%3"."%3", int(1) "0", int(1) "0", int(1) "0", bigint(63)
"9223372036854775807"), "sys"."window_bound"("%2"."%2", "%3"."%3", int(1) "0",
int(3) "5", int(1) "0", bigint(63) "0")) as "%4"."%4" ]
+| | ) [ "myorders"."o_custkey" NOT NULL UNIQUE, "myorders"."o_totalprice" NOT
NULL UNIQUE, "%1"."%1" NOT NULL ] [ "myorders"."o_custkey" PART ASC NOT NULL
UNIQUE, "%1"."%1" ASC NOT NULL ]
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]