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

Reply via email to