mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 11:27:39 +02:00
Added the error ER_WRONG_TYPE_FOR_PERCENTILE_CONT, which ensures that the result type for percentile_cont is always numerical
This commit is contained in:
parent
947ce922c9
commit
6511069e7f
1 changed files with 4 additions and 7 deletions
|
|
@ -178,25 +178,24 @@ void Item_window_func::split_sum_func(THD *thd, Ref_ptr_array ref_pointer_array,
|
|||
window_func()->setup_caches(thd);
|
||||
}
|
||||
|
||||
bool Item_window_func::check_order_list()
|
||||
bool Item_window_func::check_result_type_of_order_item()
|
||||
{
|
||||
if (only_single_element_order_list())
|
||||
{
|
||||
Item_result rtype= window_spec->order_list->first->item[0]->result_type();
|
||||
if (rtype != REAL_RESULT && rtype != INT_RESULT &&
|
||||
rtype != DECIMAL_RESULT)
|
||||
rtype != DECIMAL_RESULT && window_func()->sum_func() == Item_sum::PERCENTILE_CONT_FUNC)
|
||||
{
|
||||
// TODO(varun) please change the error name
|
||||
my_error(ER_WRONG_TYPE_FOR_RANGE_FRAME, MYF(0),"percentile functions");
|
||||
my_error(ER_WRONG_TYPE_FOR_PERCENTILE_CONT, MYF(0));
|
||||
return TRUE;
|
||||
}
|
||||
setting_handler_for_percentile_functions(rtype);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
This must be called before attempting to compute the window function values.
|
||||
|
||||
@detail
|
||||
If we attempt to do it in fix_fields(), partition_fields will refer
|
||||
to the original window function arguments.
|
||||
|
|
@ -222,7 +221,6 @@ void Item_sum_dense_rank::setup_window_func(THD *thd, Window_spec *window_spec)
|
|||
void Item_sum_percentile_disc::setup_window_func(THD *thd, Window_spec *window_spec)
|
||||
{
|
||||
order_item= window_spec->order_list->first->item[0];
|
||||
set_handler_by_cmp_type(order_item->result_type());
|
||||
if (!(value= order_item->get_cache(thd)))
|
||||
return;
|
||||
value->setup(thd, order_item);
|
||||
|
|
@ -235,7 +233,6 @@ void Item_sum_percentile_cont::setup_window_func(THD *thd, Window_spec *window_s
|
|||
/* TODO(varun): need to discuss and finalise what type should we
|
||||
return for percentile cont functions
|
||||
*/
|
||||
//set_handler_by_cmp_type(order_item->result_type());
|
||||
if (!(ceil_value= order_item->get_cache(thd)))
|
||||
return;
|
||||
ceil_value->setup(thd, order_item);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue