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

Don't optimize too much, rewrite cmp_in to cmp_equal just for constants, 
otherwise is not equivalent


diffs (20 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -2133,13 +2133,13 @@ rel_in_value_exp(sql_query *query, sql_r
                        supertype(&super, exp_subtype(values), exp_subtype(le));
 
                        /* on selection/join cases we can generate cmp 
expressions instead of anyequal for trivial cases */
-                       if (is_sql_where(f) && !is_sql_farg(f) && 
!exp_has_rel(le)) {
-                               if (list_length(vals) == 1 && 
!exps_have_rel_exp(vals)) { /* use cmp_equal instead of cmp_in for 1 expression 
*/
+                       if (is_sql_where(f) && !is_sql_farg(f) && 
!exp_has_rel(le) && exps_are_atoms(vals)) {
+                               if (list_length(vals) == 1) { /* use cmp_equal 
instead of cmp_in for 1 expression */
                                        sql_exp *first = vals->h->data;
                                        if (rel_convert_types(sql, rel ? *rel : 
NULL, rel ? *rel : NULL, &le, &first, 1, type_equal_no_any) < 0)
                                                return NULL;
                                        e = exp_compare(sql->sa, le, first, 
(sc->token == SQL_IN) ? cmp_equal : cmp_notequal);
-                               } else if (exps_are_atoms(vals)) { /* use 
cmp_in instead of anyequal for n simple expressions */
+                               } else { /* use cmp_in instead of anyequal for 
n simple expressions */
                                        for (node *n = vals->h ; n ; n = 
n->next)
                                                if ((n->data = 
rel_check_type(sql, &super, rel ? *rel : NULL, n->data, type_equal)) == NULL)
                                                        return NULL;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to