1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-28094 Window function in expression in ORDER BY

call item->split_sum_func() in setup_order() just as
it's done in setup_fields()
This commit is contained in:
Sergei Golubchik
2022-04-28 17:40:49 +02:00
parent bc9102eb81
commit 8c34eab968
3 changed files with 27 additions and 2 deletions

View File

@ -93,3 +93,15 @@ pk a c sum(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FO
126 6 NULL NULL
127 6 NULL NULL
drop table t1;
#
# End of 10.2 tests
#
#
# MDEV-28094 Window function in expression in ORDER BY
#
SELECT EXISTS (SELECT 1 ORDER BY 1+sum(2) OVER ());
EXISTS (SELECT 1 ORDER BY 1+sum(2) OVER ())
1
#
# End of 10.4 tests
#

View File

@ -45,3 +45,16 @@ select pk, a, c, sum(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDIN
from t1;
drop table t1;
--echo #
--echo # End of 10.2 tests
--echo #
--echo #
--echo # MDEV-28094 Window function in expression in ORDER BY
--echo #
SELECT EXISTS (SELECT 1 ORDER BY 1+sum(2) OVER ());
--echo #
--echo # End of 10.4 tests
--echo #

View File

@ -24546,8 +24546,8 @@ int setup_order(THD *thd, Ref_ptr_array ref_pointer_array, TABLE_LIST *tables,
return 1;
}
if (from_window_spec && item->with_sum_func() &&
item->type() != Item::SUM_FUNC_ITEM)
if ((from_window_spec && item->with_sum_func() &&
item->type() != Item::SUM_FUNC_ITEM) || item->with_window_func)
{
item->split_sum_func(thd, ref_pointer_array,
all_fields, SPLIT_SUM_SELECT);