Changeset: e03189d2bebe for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e03189d2bebe
Modified Files:
sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
sql/backends/monet5/rel_bin.c
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.test
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.sql
sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.sql
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
sql/test/mapi/Tests/sql_int128.stable.out.int128
sql/test/miscellaneous/Tests/simple_plans.stable.out
sql/test/remote/Tests/partition_elim.stable.out
Branch: default
Log Message:
Merged with Oct2020
diffs (truncated from 1628 to 300 lines):
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -1515,16 +1515,12 @@ rel2bin_basetable(backend *be, sql_rel *
{
mvc *sql = be->mvc;
sql_table *t = rel->l;
- sql_column *c = rel->r;
+ sql_column *fcol = NULL;
+ sql_idx *fi = NULL;
list *l = sa_list(sql->sa);
- stmt *dels, *col = NULL;
+ stmt *dels = stmt_tid(be, t, rel->flag == REL_PARTITION), *col = NULL;
node *en;
- if (!t && c)
- t = c->t;
-
- dels = stmt_tid(be, t, rel->flag == REL_PARTITION);
-
/* add aliases */
assert(rel->exps);
for( en = rel->exps->h; en && !col; en = en->next ) {
@@ -1539,10 +1535,12 @@ rel2bin_basetable(backend *be, sql_rel *
/* do not include empty indices in the plan */
if ((hash_index(i->type) && list_length(i->columns) <=
1) || !idx_has_column(i->type))
continue;
+ fi = i;
col = stmt_idx(be, i, NULL/*dels*/, dels->partition);
} else {
sql_column *c = find_sql_column(t, oname);
+ fcol = c;
col = stmt_col(be, c, NULL/*dels*/, dels->partition);
}
}
@@ -1552,26 +1550,8 @@ rel2bin_basetable(backend *be, sql_rel *
const char *oname = exp->r;
stmt *s = NULL;
- if (is_func(exp->type)) {
- assert(0);
- list *exps = exp->l;
- sql_exp *cexp = exps->h->data;
- const char *cname = cexp->r;
- list *l = sa_list(sql->sa);
-
- c = find_sql_column(t, cname);
- s = stmt_col(be, c, NULL/*dels*/, dels->partition);
- append(l, s);
- if (exps->h->next) {
- sql_exp *at = exps->h->next->data;
- stmt *u = exp_bin(be, at, NULL, NULL, NULL,
NULL, NULL, NULL, 0, 0, 0);
- if(!u)
- return NULL;
-
- append(l, u);
- }
- s = stmt_Nop(be, stmt_list(be, l), NULL, exp->f);
- } else if (oname[0] == '%' && strcmp(oname, TID) == 0) {
+ assert(!is_func(exp->type));
+ if (oname[0] == '%' && strcmp(oname, TID) == 0) {
/* tid function sql.tid(t) */
const char *rnme = t->base.name;
@@ -1588,11 +1568,11 @@ rel2bin_basetable(backend *be, sql_rel *
/* do not include empty indices in the plan */
if ((hash_index(i->type) && list_length(i->columns) <=
1) || !idx_has_column(i->type))
continue;
- s = stmt_idx(be, i, NULL/*dels*/, dels->partition);
+ s = (i == fi) ? col : stmt_idx(be, i, NULL/*dels*/,
dels->partition);
} else {
sql_column *c = find_sql_column(t, oname);
- s = stmt_col(be, c, NULL/*dels*/, dels->partition);
+ s = (c == fcol) ? col : stmt_col(be, c, NULL/*dels*/,
dels->partition);
}
s->tname = rname;
s->cname = exp_name(exp);
diff --git
a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
--- a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
+++ b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
@@ -129,22 +129,20 @@ top N (
% clob # type
% 114 # length
function user.main():void;
- X_1:void := querylog.define("explain select * from oblo;":str,
"minimal_pipe":str, 19:int);
+ X_1:void := querylog.define("explain select * from oblo;":str,
"minimal_pipe":str, 15:int);
X_4:int := sql.mvc();
C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "oblo":str);
+ X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
X_11:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
(X_13:bat[:oid], X_14:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_17:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
- X_18:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
- (X_19:bat[:oid], X_20:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_21:bat[:int] := sql.delta(X_17:bat[:int], X_19:bat[:oid],
X_20:bat[:int], X_18:bat[:int]);
- X_22:bat[:int] := algebra.projection(C_5:bat[:oid], X_21:bat[:int]);
- X_24:bat[:str] := bat.pack("sys.oblo":str);
- X_25:bat[:str] := bat.pack("a":str);
- X_26:bat[:str] := bat.pack("int":str);
- X_27:bat[:int] := bat.pack(32:int);
- X_28:bat[:int] := bat.pack(0:int);
- sql.resultSet(X_24:bat[:str], X_25:bat[:str], X_26:bat[:str],
X_27:bat[:int], X_28:bat[:int], X_22:bat[:int]);
+ X_16:bat[:int] := sql.delta(X_8:bat[:int], X_13:bat[:oid], X_14:bat[:int],
X_11:bat[:int]);
+ X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_16:bat[:int]);
+ X_19:bat[:str] := bat.pack("sys.oblo":str);
+ X_20:bat[:str] := bat.pack("a":str);
+ X_21:bat[:str] := bat.pack("int":str);
+ X_22:bat[:int] := bat.pack(32:int);
+ X_23:bat[:int] := bat.pack(0:int);
+ sql.resultSet(X_19:bat[:str], X_20:bat[:str], X_21:bat[:str],
X_22:bat[:int], X_23:bat[:int], X_17:bat[:int]);
end user.main;
#inline actions= 0 time=0 usec
#remap actions= 0 time=1 usec
@@ -160,28 +158,26 @@ end user.main;
% clob # type
% 114 # length
function user.main():void;
- X_1:void := querylog.define("explain select * from oblo offset 2;":str,
"minimal_pipe":str, 25:int);
+ X_1:void := querylog.define("explain select * from oblo offset 2;":str,
"minimal_pipe":str, 21:int);
X_4:int := sql.mvc();
C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "oblo":str);
+ X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
X_11:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
(X_13:bat[:oid], X_14:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_17:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
- X_18:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
- (X_19:bat[:oid], X_20:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_21:bat[:int] := sql.delta(X_17:bat[:int], X_19:bat[:oid],
X_20:bat[:int], X_18:bat[:int]);
- X_22:bat[:int] := algebra.projection(C_5:bat[:oid], X_21:bat[:int]);
- X_23:lng := nil:lng;
- X_25:lng := 2:lng;
- X_27:lng := calc.+(X_25:lng, X_23:lng);
- X_28:lng := calc.-(X_27:lng, 1:int);
- C_29:bat[:oid] := algebra.subslice(X_22:bat[:int], X_25:lng, X_28:lng);
- X_30:bat[:int] := algebra.projection(C_29:bat[:oid], X_22:bat[:int]);
- X_32:bat[:str] := bat.pack("sys.oblo":str);
- X_33:bat[:str] := bat.pack("a":str);
- X_34:bat[:str] := bat.pack("int":str);
- X_35:bat[:int] := bat.pack(32:int);
- X_36:bat[:int] := bat.pack(0:int);
- sql.resultSet(X_32:bat[:str], X_33:bat[:str], X_34:bat[:str],
X_35:bat[:int], X_36:bat[:int], X_30:bat[:int]);
+ X_16:bat[:int] := sql.delta(X_8:bat[:int], X_13:bat[:oid], X_14:bat[:int],
X_11:bat[:int]);
+ X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_16:bat[:int]);
+ X_18:lng := nil:lng;
+ X_20:lng := 2:lng;
+ X_22:lng := calc.+(X_20:lng, X_18:lng);
+ X_23:lng := calc.-(X_22:lng, 1:int);
+ C_24:bat[:oid] := algebra.subslice(X_17:bat[:int], X_20:lng, X_23:lng);
+ X_25:bat[:int] := algebra.projection(C_24:bat[:oid], X_17:bat[:int]);
+ X_27:bat[:str] := bat.pack("sys.oblo":str);
+ X_28:bat[:str] := bat.pack("a":str);
+ X_29:bat[:str] := bat.pack("int":str);
+ X_30:bat[:int] := bat.pack(32:int);
+ X_31:bat[:int] := bat.pack(0:int);
+ sql.resultSet(X_27:bat[:str], X_28:bat[:str], X_29:bat[:str],
X_30:bat[:int], X_31:bat[:int], X_25:bat[:int]);
end user.main;
#inline actions= 0 time=0 usec
#remap actions= 0 time=1 usec
@@ -197,28 +193,26 @@ end user.main;
% clob # type
% 114 # length
function user.main():void;
- X_1:void := querylog.define("explain select * from oblo limit 2;":str,
"minimal_pipe":str, 25:int);
+ X_1:void := querylog.define("explain select * from oblo limit 2;":str,
"minimal_pipe":str, 21:int);
X_4:int := sql.mvc();
C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "oblo":str);
+ X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
X_11:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
(X_13:bat[:oid], X_14:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_17:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
- X_18:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
- (X_19:bat[:oid], X_20:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_21:bat[:int] := sql.delta(X_17:bat[:int], X_19:bat[:oid],
X_20:bat[:int], X_18:bat[:int]);
- X_22:bat[:int] := algebra.projection(C_5:bat[:oid], X_21:bat[:int]);
- X_23:lng := 2:lng;
- X_25:lng := 0:lng;
- X_27:lng := calc.+(X_25:lng, X_23:lng);
- X_28:lng := calc.-(X_27:lng, 1:int);
- C_29:bat[:oid] := algebra.subslice(X_22:bat[:int], X_25:lng, X_28:lng);
- X_30:bat[:int] := algebra.projection(C_29:bat[:oid], X_22:bat[:int]);
- X_32:bat[:str] := bat.pack("sys.oblo":str);
- X_33:bat[:str] := bat.pack("a":str);
- X_34:bat[:str] := bat.pack("int":str);
- X_35:bat[:int] := bat.pack(32:int);
- X_36:bat[:int] := bat.pack(0:int);
- sql.resultSet(X_32:bat[:str], X_33:bat[:str], X_34:bat[:str],
X_35:bat[:int], X_36:bat[:int], X_30:bat[:int]);
+ X_16:bat[:int] := sql.delta(X_8:bat[:int], X_13:bat[:oid], X_14:bat[:int],
X_11:bat[:int]);
+ X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_16:bat[:int]);
+ X_18:lng := 2:lng;
+ X_20:lng := 0:lng;
+ X_22:lng := calc.+(X_20:lng, X_18:lng);
+ X_23:lng := calc.-(X_22:lng, 1:int);
+ C_24:bat[:oid] := algebra.subslice(X_17:bat[:int], X_20:lng, X_23:lng);
+ X_25:bat[:int] := algebra.projection(C_24:bat[:oid], X_17:bat[:int]);
+ X_27:bat[:str] := bat.pack("sys.oblo":str);
+ X_28:bat[:str] := bat.pack("a":str);
+ X_29:bat[:str] := bat.pack("int":str);
+ X_30:bat[:int] := bat.pack(32:int);
+ X_31:bat[:int] := bat.pack(0:int);
+ sql.resultSet(X_27:bat[:str], X_28:bat[:str], X_29:bat[:str],
X_30:bat[:int], X_31:bat[:int], X_25:bat[:int]);
end user.main;
#inline actions= 0 time=0 usec
#remap actions= 0 time=0 usec
@@ -234,28 +228,26 @@ end user.main;
% clob # type
% 114 # length
function user.main():void;
- X_1:void := querylog.define("explain select * from oblo limit 1 offset
2;":str, "minimal_pipe":str, 25:int);
+ X_1:void := querylog.define("explain select * from oblo limit 1 offset
2;":str, "minimal_pipe":str, 21:int);
X_4:int := sql.mvc();
C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "oblo":str);
+ X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
X_11:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
(X_13:bat[:oid], X_14:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_17:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
- X_18:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
- (X_19:bat[:oid], X_20:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_21:bat[:int] := sql.delta(X_17:bat[:int], X_19:bat[:oid],
X_20:bat[:int], X_18:bat[:int]);
- X_22:bat[:int] := algebra.projection(C_5:bat[:oid], X_21:bat[:int]);
- X_23:lng := 1:lng;
- X_25:lng := 2:lng;
- X_27:lng := calc.+(X_25:lng, X_23:lng);
- X_28:lng := calc.-(X_27:lng, 1:int);
- C_29:bat[:oid] := algebra.subslice(X_22:bat[:int], X_25:lng, X_28:lng);
- X_30:bat[:int] := algebra.projection(C_29:bat[:oid], X_22:bat[:int]);
- X_32:bat[:str] := bat.pack("sys.oblo":str);
- X_33:bat[:str] := bat.pack("a":str);
- X_34:bat[:str] := bat.pack("int":str);
- X_35:bat[:int] := bat.pack(32:int);
- X_36:bat[:int] := bat.pack(0:int);
- sql.resultSet(X_32:bat[:str], X_33:bat[:str], X_34:bat[:str],
X_35:bat[:int], X_36:bat[:int], X_30:bat[:int]);
+ X_16:bat[:int] := sql.delta(X_8:bat[:int], X_13:bat[:oid], X_14:bat[:int],
X_11:bat[:int]);
+ X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_16:bat[:int]);
+ X_18:lng := 1:lng;
+ X_20:lng := 2:lng;
+ X_22:lng := calc.+(X_20:lng, X_18:lng);
+ X_23:lng := calc.-(X_22:lng, 1:int);
+ C_24:bat[:oid] := algebra.subslice(X_17:bat[:int], X_20:lng, X_23:lng);
+ X_25:bat[:int] := algebra.projection(C_24:bat[:oid], X_17:bat[:int]);
+ X_27:bat[:str] := bat.pack("sys.oblo":str);
+ X_28:bat[:str] := bat.pack("a":str);
+ X_29:bat[:str] := bat.pack("int":str);
+ X_30:bat[:int] := bat.pack(32:int);
+ X_31:bat[:int] := bat.pack(0:int);
+ sql.resultSet(X_27:bat[:str], X_28:bat[:str], X_29:bat[:str],
X_30:bat[:int], X_31:bat[:int], X_25:bat[:int]);
end user.main;
#inline actions= 0 time=0 usec
#remap actions= 0 time=1 usec
@@ -271,28 +263,26 @@ end user.main;
% clob # type
% 114 # length
function user.main():void;
- X_1:void := querylog.define("explain select * from oblo limit 2 offset
1;":str, "minimal_pipe":str, 25:int);
+ X_1:void := querylog.define("explain select * from oblo limit 2 offset
1;":str, "minimal_pipe":str, 21:int);
X_4:int := sql.mvc();
C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "oblo":str);
+ X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
X_11:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
(X_13:bat[:oid], X_14:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_17:bat[:int] := sql.bind(X_4:int, "sys":str, "oblo":str, "a":str, 0:int);
- X_18:bat[:int] := sql.emptybind(X_4:int, "sys":str, "oblo":str, "a":str,
1:int);
- (X_19:bat[:oid], X_20:bat[:int]) := sql.emptybind(X_4:int, "sys":str,
"oblo":str, "a":str, 2:int);
- X_21:bat[:int] := sql.delta(X_17:bat[:int], X_19:bat[:oid],
X_20:bat[:int], X_18:bat[:int]);
- X_22:bat[:int] := algebra.projection(C_5:bat[:oid], X_21:bat[:int]);
- X_23:lng := 2:lng;
- X_25:lng := 1:lng;
- X_27:lng := calc.+(X_25:lng, X_23:lng);
- X_28:lng := calc.-(X_27:lng, 1:int);
- C_29:bat[:oid] := algebra.subslice(X_22:bat[:int], X_25:lng, X_28:lng);
- X_30:bat[:int] := algebra.projection(C_29:bat[:oid], X_22:bat[:int]);
- X_32:bat[:str] := bat.pack("sys.oblo":str);
- X_33:bat[:str] := bat.pack("a":str);
- X_34:bat[:str] := bat.pack("int":str);
- X_35:bat[:int] := bat.pack(32:int);
- X_36:bat[:int] := bat.pack(0:int);
- sql.resultSet(X_32:bat[:str], X_33:bat[:str], X_34:bat[:str],
X_35:bat[:int], X_36:bat[:int], X_30:bat[:int]);
+ X_16:bat[:int] := sql.delta(X_8:bat[:int], X_13:bat[:oid], X_14:bat[:int],
X_11:bat[:int]);
+ X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_16:bat[:int]);
+ X_18:lng := 2:lng;
+ X_20:lng := 1:lng;
+ X_22:lng := calc.+(X_20:lng, X_18:lng);
+ X_23:lng := calc.-(X_22:lng, 1:int);
+ C_24:bat[:oid] := algebra.subslice(X_17:bat[:int], X_20:lng, X_23:lng);
+ X_25:bat[:int] := algebra.projection(C_24:bat[:oid], X_17:bat[:int]);
+ X_27:bat[:str] := bat.pack("sys.oblo":str);
+ X_28:bat[:str] := bat.pack("a":str);
+ X_29:bat[:str] := bat.pack("int":str);
+ X_30:bat[:int] := bat.pack(32:int);
+ X_31:bat[:int] := bat.pack(0:int);
+ sql.resultSet(X_27:bat[:str], X_28:bat[:str], X_29:bat[:str],
X_30:bat[:int], X_31:bat[:int], X_25:bat[:int]);
end user.main;
#inline actions= 0 time=0 usec
#remap actions= 0 time=1 usec
@@ -308,24 +298,22 @@ end user.main;
% clob # type
% 142 # length
function user.main():void;
- X_1:void := querylog.define("explain select * from oblo order by a;":str,
"minimal_pipe":str, 21:int);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list