Commit 6511069e authored by Varun Gupta's avatar Varun Gupta

Added the error ER_WRONG_TYPE_FOR_PERCENTILE_CONT, which ensures that the...

Added the error ER_WRONG_TYPE_FOR_PERCENTILE_CONT, which ensures that the result type for percentile_cont is always numerical
parent 947ce922
...@@ -178,25 +178,24 @@ void Item_window_func::split_sum_func(THD *thd, Ref_ptr_array ref_pointer_array, ...@@ -178,25 +178,24 @@ void Item_window_func::split_sum_func(THD *thd, Ref_ptr_array ref_pointer_array,
window_func()->setup_caches(thd); 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()) if (only_single_element_order_list())
{ {
Item_result rtype= window_spec->order_list->first->item[0]->result_type(); Item_result rtype= window_spec->order_list->first->item[0]->result_type();
if (rtype != REAL_RESULT && rtype != INT_RESULT && 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_PERCENTILE_CONT, MYF(0));
my_error(ER_WRONG_TYPE_FOR_RANGE_FRAME, MYF(0),"percentile functions");
return TRUE; return TRUE;
} }
setting_handler_for_percentile_functions(rtype);
} }
return FALSE; return FALSE;
} }
/* /*
This must be called before attempting to compute the window function values. This must be called before attempting to compute the window function values.
@detail @detail
If we attempt to do it in fix_fields(), partition_fields will refer If we attempt to do it in fix_fields(), partition_fields will refer
to the original window function arguments. to the original window function arguments.
...@@ -222,7 +221,6 @@ void Item_sum_dense_rank::setup_window_func(THD *thd, Window_spec *window_spec) ...@@ -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) void Item_sum_percentile_disc::setup_window_func(THD *thd, Window_spec *window_spec)
{ {
order_item= window_spec->order_list->first->item[0]; 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))) if (!(value= order_item->get_cache(thd)))
return; return;
value->setup(thd, order_item); value->setup(thd, order_item);
...@@ -235,7 +233,6 @@ void Item_sum_percentile_cont::setup_window_func(THD *thd, Window_spec *window_s ...@@ -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 /* TODO(varun): need to discuss and finalise what type should we
return for percentile cont functions return for percentile cont functions
*/ */
//set_handler_by_cmp_type(order_item->result_type());
if (!(ceil_value= order_item->get_cache(thd))) if (!(ceil_value= order_item->get_cache(thd)))
return; return;
ceil_value->setup(thd, order_item); ceil_value->setup(thd, order_item);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment