Changeset: 5029b63aea4a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5029b63aea4a
Modified Files:
sql/backends/monet5/rel_bin.c
Branch: Oct2020
Log Message:
handle some more cases with coalesce/case where the exp_bin couldn't push the
candidates
diffs (44 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
@@ -675,8 +675,6 @@ exp2bin_case(backend *be, sql_exp *fe, s
if (val->nrcols == 0)
val = stmt_const(be, pos, val);
- else if (val->cand != isel && val->cand != rsel
&& val->cand != nsel)
- val = stmt_project(be, rsel, val);
else if (!val->cand && nsel)
val = stmt_project(be, nsel, val);
res = stmt_replace(be, res, pos, val);
@@ -694,13 +692,17 @@ exp2bin_case(backend *be, sql_exp *fe, s
if (next_cond) {
ncond = cond = es;
if (!ncond->nrcols) {
- if (osel)
+ if (osel) {
ncond = stmt_const(be, nsel,
ncond);
- else if (isel)
+ ncond->cand = nsel;
+ } else if (isel) {
ncond = stmt_const(be, isel,
ncond);
- else
+ ncond->cand = isel;
+ } else
ncond = stmt_const(be,
bin_first_column(be, left), ncond);
}
+ if (isel && !ncond->cand)
+ ncond = stmt_project(be, nsel, ncond);
stmt *s = stmt_uselect(be, ncond, stmt_bool(be,
1), cmp_equal, !ncond->cand?rsel:NULL, 0/*anti*/, 0);
if (rsel && ncond->cand)
rsel = stmt_project(be, s, rsel);
@@ -821,10 +823,6 @@ exp2bin_coalesce(backend *be, sql_exp *f
}
if (val->nrcols == 0)
val = stmt_const(be, pos, val);
- /*
- else if (val->cand != isel && val->cand != rsel
&& val->cand != nsel)
- val = stmt_project(be, rsel, val);
- */
else if (!val->cand && nsel)
val = stmt_project(be, nsel, val);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list