Changeset: 3e89eb5192c6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3e89eb5192c6 Modified Files: gdk/gdk_join.c Branch: default Log Message:
Merge with Sep2022 branch. diffs (88 lines): diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -2662,6 +2662,9 @@ hashjoin(BAT **r1p, BAT **r2p, BAT *l, B bool lskipped = false; /* whether we skipped values in l */ Hash *restrict hsh = NULL; bool locked = false; + BUN maxsize; + BAT *r1 = NULL; + BAT *r2 = NULL; assert(ATOMtype(l->ttype) == ATOMtype(r->ttype)); @@ -2697,19 +2700,6 @@ hashjoin(BAT **r1p, BAT **r2p, BAT *l, B nil_on_miss, only_misses, __func__, t0); } - BUN maxsize = joininitresults(r1p, r2p, lci->ncand, rci->ncand, - li.key, ri.key, semi | max_one, - nil_on_miss, only_misses, min_one, - estimate); - if (maxsize == BUN_NONE) { - bat_iterator_end(&li); - bat_iterator_end(&ri); - return GDK_FAIL; - } - - BAT *r1 = *r1p; - BAT *r2 = r2p ? *r2p : NULL; - rl = rci->seq - r->hseqbase; rh = canditer_last(rci) + 1 - r->hseqbase; if (hash_cand) { @@ -2819,6 +2809,17 @@ hashjoin(BAT **r1p, BAT **r2p, BAT *l, B } } + maxsize = joininitresults(r1p, r2p, lci->ncand, rci->ncand, + li.key, ri.key, semi | max_one, + nil_on_miss, only_misses, min_one, + estimate); + if (maxsize == BUN_NONE) { + goto bailout; + } + + r1 = *r1p; + r2 = r2p ? *r2p : NULL; + /* basic properties will be adjusted if necessary later on, * they were initially set by joininitresults() */ 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 @@ -864,7 +864,7 @@ exps_merge_select_rse( mvc *sql, list *l sql->errstr[0] = '\0'; continue; } - fnd = exp_compare2(sql->sa, le->l, mine, maxe, le->flag, 0); + fnd = exp_compare2(sql->sa, exp_copy(sql, le->l), mine, maxe, le->flag, 0); lmerged = false; } if (fnd) { diff --git a/sql/test/bugs/Tests/All b/sql/test/bugs/Tests/All --- a/sql/test/bugs/Tests/All +++ b/sql/test/bugs/Tests/All @@ -114,3 +114,4 @@ in rtrim_bug savepoint-release procedure-recompile +rse_bug diff --git a/sql/test/bugs/Tests/rse_bug.test b/sql/test/bugs/Tests/rse_bug.test new file mode 100644 --- /dev/null +++ b/sql/test/bugs/Tests/rse_bug.test @@ -0,0 +1,12 @@ +statement ok +CREATE TABLE size_test (size_field INTEGER) + +query I rowsort +SELECT COUNT(*) from size_test +WHERE ((size_field / 1024.0) > 887.443 AND (size_field / 1024.0) < 887.445) +OR ((size_field / 1024.0) > 311.344 AND (size_field / 1024.0) < 311.346) +---- +0 + +statement ok +drop TABLE size_test; _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org