summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index cf5b73fecfc..c044656e916 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -25063,20 +25063,22 @@ int setup_order(THD *thd, Ref_ptr_array ref_pointer_array, TABLE_LIST *tables,
return 1;
}
- if (!(*order->item)->with_sum_func())
- continue;
-
/*
UNION queries cannot be used with an aggregate function in
an ORDER BY clause
*/
- if (for_union)
+ if (for_union &&
+ ((*order->item)->with_sum_func() ||
+ (*order->item)->with_window_func()))
{
my_error(ER_AGGREGATE_ORDER_FOR_UNION, MYF(0), number);
return 1;
}
+ if (!(*order->item)->with_sum_func())
+ continue;
+
if (from_window_spec && (*order->item)->type() != Item::SUM_FUNC_ITEM)
(*order->item)->split_sum_func(thd, ref_pointer_array,
all_fields, SPLIT_SUM_SELECT);