Changeset: 43ecd1bf4fce for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=43ecd1bf4fce
Modified Files:
        sql/backends/monet5/rel_bin.c
Branch: Jul2017
Log Message:

handle semi/anti join better with constants (fixes bug 6417)


diffs (29 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
@@ -1962,8 +1962,12 @@ rel2bin_semijoin(backend *be, sql_rel *r
                                idx = 1;
                        /* stop on first non equality join */
                        if (!join) {
-                               if (en->next && s->type != st_join && s->type 
!= st_join2 && s->type != st_joinN) 
-                                       break;
+                               if (s->type != st_join && s->type != st_join2 
&& s->type != st_joinN) {
+                                       if (!en->next && (s->type == st_uselect 
|| s->type == st_uselect2))
+                                               join = s;
+                                       else
+                                               break;
+                               }
                                join = s;
                        } else if (s->type != st_join && s->type != st_join2 && 
s->type != st_joinN) {
                                /* handle select expressions */
@@ -2026,6 +2030,10 @@ rel2bin_semijoin(backend *be, sql_rel *r
                                assert(0);
                                return NULL;
                        }
+                       if (s->nrcols == 0) {
+                               stmt *l = bin_first_column(be, sub);
+                               s = stmt_uselect(be, stmt_const(be, l, 
stmt_bool(be, 1)), s, cmp_equal, sel, 0);
+                       }
                        sel = s;
                }
                /* recreate join output */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to