Changeset: 8f76f7cb845d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8f76f7cb845d
Modified Files:
        sql/server/rel_updates.c
Branch: default
Log Message:

Generate and execute the exception relation first before the update, for faster 
execution in wrong cases.


diffs (22 lines):

diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -1377,7 +1377,7 @@ validate_merge_update_delete(mvc *sql, s
        sql_subaggr *cf = sql_bind_aggr(sql->sa, sql->session->schema, "count", 
NULL);
        sql_subfunc *bf;
        list *exps = new_exp_list(sql->sa);
-       sql_rel *groupby;
+       sql_rel *groupby, *res;
 
        groupby = rel_groupby(sql, rel_dup(join_rel), NULL); //aggregate by all 
column and count (distinct values)
        groupby->r = rel_projections(sql, bt, NULL, 1, 0);
@@ -1403,7 +1403,8 @@ validate_merge_update_delete(mvc *sql, s
        snprintf(buf, BUFSIZ, "MERGE: There are rows in '%s.%s' with multiple 
matches on source relation", t->s->base.name, t->base.name);
        ex = exp_exception(sql->sa, ex, buf);
 
-       return rel_exception(sql->sa, upd_del, groupby, 
list_append(new_exp_list(sql->sa), ex));
+       res = rel_exception(sql->sa, groupby, NULL, 
list_append(new_exp_list(sql->sa), ex));
+       return rel_list(sql->sa, res, upd_del);
 }
 
 static sql_rel *
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to