Changeset: 09b2b8479033 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/09b2b8479033
Modified Files:
sql/server/rel_select.c
Branch: default
Log Message:
Look for labeled expressions
diffs (28 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
@@ -1319,8 +1319,11 @@ rel_column_ref(sql_query *query, sql_rel
}
if (exp && !exp_is_atom(exp) && rel && !outer) {
if (query->last_exp && query->last_rel == *rel &&
!is_sql_aggr(query->last_state) && is_sql_aggr(f)) {
- if (!is_groupby(query->last_rel->op) ||
list_empty(query->last_rel->r) || !exps_find_exp(query->last_rel->r,
query->last_exp))
- return sql_error(sql, ERR_NOTFOUND,
SQLSTATE(42000) "SELECT: cannot use non GROUP BY column '%s.%s' in query
results without an aggregate function", exp_relname(query->last_exp),
exp_name(query->last_exp));
+ if (!is_groupby(query->last_rel->op) ||
list_empty(query->last_rel->r) || !exps_find_exp(query->last_rel->r,
query->last_exp)) {
+ if (exp_relname(query->last_exp) &&
exp_name(query->last_exp) && !has_label(query->last_exp))
+ return sql_error(sql, ERR_GROUPBY,
SQLSTATE(42000) "SELECT: cannot use non GROUP BY column '%s.%s' in query
results without an aggregate function", exp_relname(query->last_exp),
exp_name(query->last_exp));
+ return sql_error(sql, ERR_GROUPBY,
SQLSTATE(42000) "SELECT: cannot use non GROUP BY column in query results
without an aggregate function");
+ }
}
query->prev = query->last_exp;
query->last_exp = exp;
@@ -3637,7 +3640,9 @@ static sql_exp *
if (!subquery && groupby && groupby->op != op_groupby) {
/* implicit groupby */
if (!all_freevar && query->last_exp &&
!is_sql_aggr(query->last_state)) {
- return sql_error(sql, ERR_GROUPBY, SQLSTATE(42000)
"SELECT: cannot use non GROUP BY column '%s.%s' in query results without an
aggregate function", exp_relname(query->last_exp), exp_name(query->last_exp));
+ if (exp_relname(query->last_exp) &&
exp_name(query->last_exp) && !has_label(query->last_exp))
+ return sql_error(sql, ERR_GROUPBY,
SQLSTATE(42000) "SELECT: cannot use non GROUP BY column '%s.%s' in query
results without an aggregate function", exp_relname(query->last_exp),
exp_name(query->last_exp));
+ return sql_error(sql, ERR_GROUPBY, SQLSTATE(42000)
"SELECT: cannot use non GROUP BY column in query results without an aggregate
function");
}
res = groupby = rel_groupby(sql, groupby, NULL);
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]