Changeset: 32c1c18252fb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/32c1c18252fb
Modified Files:
        sql/backends/monet5/sql_statement.c
Branch: pushcands
Log Message:

fixes stmt_genselect for push of candidates.


diffs (44 lines):

diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -1364,6 +1364,27 @@ stmt_genselect(backend *be, stmt *lops, 
                                all_cands_pushed &= op->cand != NULL;
                        q = pushArgument(mb, q, op->nr);
                }
+               if (!all_cands_pushed && push_cands && sel) {
+                       for (node *n = lops->op4.lval->h; n; n = n->next) {
+                               stmt *op = n->data;
+                               if (op->nrcols) {
+                                       if (op->cand)
+                                               q = pushNil(mb, q, TYPE_bat);
+                                       else
+                                               q = pushArgument(mb, q, 
sel->nr);
+                               }
+                       }
+                       for (node *n = rops->op4.lval->h; n; n = n->next) {
+                               stmt *op = n->data;
+                               if (op->nrcols) {
+                                       if (op->cand)
+                                               q = pushNil(mb, q, TYPE_bat);
+                                       else
+                                               q = pushArgument(mb, q, 
sel->nr);
+                               }
+                       }
+                       all_cands_pushed = 1;
+               }
                k = getDestVar(q);
 
                q = newStmtArgs(mb, algebraRef, selectRef, 9);
@@ -1379,6 +1400,12 @@ stmt_genselect(backend *be, stmt *lops, 
                q = pushBit(mb, q, TRUE);
                q = pushBit(mb, q, TRUE);
                q = pushBit(mb, q, anti);
+               if (all_cands_pushed && sel) {
+                       int nr = getDestVar(q);
+                       q = newStmt(mb, algebraRef, projectionRef);
+                       q = pushArgument(mb, q, nr);
+                       q = pushArgument(mb, q, sel->nr);
+               }
        } else {
                op = sa_strconcat(be->mvc->sa, op, selectRef);
                q = newStmtArgs(mb, mod, convertOperator(op), 9);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to