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

When setting a single variable and the cardinality is higher than AGGR, call 
'zero_or_one' to attempt to set a possible single result


diffs (18 lines):

diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c
--- a/sql/server/rel_psm.c
+++ b/sql/server/rel_psm.c
@@ -115,8 +115,13 @@ psm_set_exp(sql_query *query, dnode *n)
                }
 
                e = rel_value_exp2(query, &rel, val, sql_sel, ek);
-               if (!e || (rel && e->card > CARD_AGGR))
+               if (!e)
                        return NULL;
+               if (e->card > CARD_AGGR) {
+                       sql_subfunc *zero_or_one = sql_bind_func(sql->sa, 
sql->session->schema, "zero_or_one", exp_subtype(e), NULL, F_AGGR);
+                       assert(zero_or_one);
+                       e = exp_aggr1(sql->sa, e, zero_or_one, 0, 0, CARD_ATOM, 
has_nil(e));
+               }
 
                level = stack_find_frame(sql, name);
                e = rel_check_type(sql, tpe, rel, e, type_cast);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to