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

remove nils when checking for unique values in the to be inserted values.
The order/reorder stmt's have null == null semantics


diffs (31 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
@@ -3809,13 +3809,26 @@ insert_check_ukey(backend *be, list *ins
                if ((!idx_inserts && ins->nrcols) || (idx_inserts && 
idx_inserts->nrcols)) {    /* insert columns not atoms */
                        sql_subfunc *or = sql_bind_func_result(sql->sa, 
sql->session->schema, "or", F_FUNC, bt, 2, bt, bt);
                        stmt *orderby_ids = NULL, *orderby_grp = NULL;
-
+                       stmt *sel = NULL;
+
+                       /* remove any nils as in stmt_order NULL = NULL, 
instead of NULL != NULL */
+                       if ((k->type == ukey) && stmt_has_null(col)) {
+
+                               for (m = k->columns->h; m; m = m->next) {
+                                       sql_kc *c = m->data;
+                                       stmt *cs = list_fetch(inserts, 
c->c->colnr);
+
+                                       sel = stmt_selectnonil(be, cs, sel);
+                               }
+                       }
                        /* implementation uses sort key check */
                        for (m = k->columns->h; m; m = m->next) {
                                sql_kc *c = m->data;
                                stmt *orderby;
                                stmt *cs = list_fetch(inserts, c->c->colnr);
 
+                               if (sel)
+                                       cs = stmt_project(be, sel, cs);
                                if (orderby_grp)
                                        orderby = stmt_reorder(be, cs, 1, 0, 
orderby_ids, orderby_grp);
                                else
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to