Changeset: b4449d504b8f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b4449d504b8f
Modified Files:
        sql/backends/monet5/rel_weld.c
Branch: rel-weld
Log Message:

weld impl for 'in' and 'not in' + cmp_or fix


diffs (35 lines):

diff --git a/sql/backends/monet5/rel_weld.c b/sql/backends/monet5/rel_weld.c
--- a/sql/backends/monet5/rel_weld.c
+++ b/sql/backends/monet5/rel_weld.c
@@ -278,14 +278,26 @@ exp_to_weld(backend *be, weld_state *wst
                        wprintf(wstate, "(");
                }
                if (exp->flag == cmp_in || exp->flag == cmp_notin) {
-                       /* TODO implement this */
-                       wstate->error = 1;
-                       return;
+                       if (exp->flag == cmp_notin) {
+                               wprintf(wstate, "(");
+                       }
+                       node *en;
+                       for (en = ((list*)exp->r)->h; en; en = en->next) {
+                               exp_to_weld(be, wstate, exp->l);
+                               wprintf(wstate, " == ");
+                               exp_to_weld(be, wstate, en->data);
+                               if (en->next != NULL) {
+                                       wprintf(wstate, " || ");
+                               }
+                       }
+                       if (exp->flag == cmp_notin) {
+                               wprintf(wstate, ") == false");
+                       }
                } else if (get_cmp(exp) == cmp_or) {
                        wprintf(wstate, "(");
-                       exps_to_weld(be, wstate, exp->l, "");
+                       exps_to_weld(be, wstate, exp->l, " && ");
                        wprintf(wstate, ") || ( ");
-                       exps_to_weld(be, wstate, exp->r, "");
+                       exps_to_weld(be, wstate, exp->r, " && ");
                        wprintf(wstate, ")");
                } else if (get_cmp(exp) == cmp_filter) {
                        str udf = get_weld_func(exp->f);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to