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

Simplify tests


diffs (39 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
@@ -1119,7 +1119,7 @@ rel_column_ref(mvc *sql, sql_rel **rel, 
                        return rel_var_ref(sql, name, 0);
                }
                if (!exp && !var) {
-                       if (rel && *rel && (*rel)->card <= CARD_AGGR && 
is_sql_sel(f)) {
+                       if (rel && *rel && (*rel)->card <= CARD_AGGR && 
(is_sql_sel(f) || is_sql_having(f))) {
                                sql_rel *gb = *rel;
 
                                while(gb->l && !is_groupby(gb->op))
@@ -1127,8 +1127,6 @@ rel_column_ref(mvc *sql, sql_rel **rel, 
                                if (gb && gb->l && rel_bind_column(sql, gb->l, 
name, f)) 
                                        return sql_error(sql, 02, 
SQLSTATE(42000) "SELECT: cannot use non GROUP BY column '%s' in query results 
without an aggregate function", name);
                        }
-                       if (is_sql_having(f))
-                               return sql_error(sql, 02, SQLSTATE(42000) 
"SELECT: cannot use non GROUP BY column '%s' in query results without an 
aggregate function", name);
                        return sql_error(sql, 02, SQLSTATE(42000) "SELECT: 
identifier '%s' unknown", name);
                }
                
@@ -1153,7 +1151,7 @@ rel_column_ref(mvc *sql, sql_rel **rel, 
                        }
                }
                if (!exp) {
-                       if (rel && *rel && (*rel)->card == CARD_AGGR && 
is_sql_sel(f)) {
+                       if (rel && *rel && (*rel)->card == CARD_AGGR && 
(is_sql_sel(f) || is_sql_having(f))) {
                                sql_rel *gb = *rel;
 
                                while(gb->l && !is_groupby(gb->op) && 
is_project(gb->op))
@@ -1161,8 +1159,6 @@ rel_column_ref(mvc *sql, sql_rel **rel, 
                                if (gb && is_groupby(gb->op) && gb->l && 
rel_bind_column2(sql, gb->l, tname, cname, f))
                                        return sql_error(sql, 02, 
SQLSTATE(42000) "SELECT: cannot use non GROUP BY column '%s.%s' in query 
results without an aggregate function", tname, cname);
                        }
-                       if (is_sql_having(f))
-                               return sql_error(sql, 02, SQLSTATE(42S22) 
"SELECT: cannot use non GROUP BY column '%s.%s' in query results without an 
aggregate function", tname, cname);
                        return sql_error(sql, 02, SQLSTATE(42S22) "SELECT: no 
such column '%s.%s'", tname, cname);
                }
        } else if (dlist_length(l) >= 3) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to