diff options
author | Varun Gupta <varunraiko1803@gmail.com> | 2017-07-17 15:10:19 +0530 |
---|---|---|
committer | Varun Gupta <varunraiko1803@gmail.com> | 2017-11-01 23:13:01 +0530 |
commit | 03ed22326a85c50a67d4c43e9392de8c135cf649 (patch) | |
tree | 317d76a00a53cd8b5c58e22ab822a5f6c3025135 /sql/sql_window.cc | |
parent | 6511069e7fcf3c9035469f9d2996706fbde5d6a0 (diff) | |
download | mariadb-git-03ed22326a85c50a67d4c43e9392de8c135cf649.tar.gz |
Added the error
1)ER_ARGUMENT_OUT_OF_RANGE: This error is thrown if the argument of the percentile function is not in the range [0,1]
2)ER_ARGUMENT_NOT_CONSTANT: This error is thrown if the argument of the percnetile function is not constant in the
entire partition of the window function
Diffstat (limited to 'sql/sql_window.cc')
-rw-r--r-- | sql/sql_window.cc | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sql/sql_window.cc b/sql/sql_window.cc index 08e93dfcce2..d51ffdc2f83 100644 --- a/sql/sql_window.cc +++ b/sql/sql_window.cc @@ -324,7 +324,7 @@ setup_windows(THD *thd, Ref_ptr_array ref_pointer_array, TABLE_LIST *tables, li.rewind(); while((win_func_item= li++)) { - if (win_func_item->check_order_list()) + if (win_func_item->check_result_type_of_order_item()) DBUG_RETURN(1); } DBUG_RETURN(0); @@ -1078,12 +1078,13 @@ protected: { if (perform_no_action) return; - List_iterator_fast<Item_sum> it(sum_functions); Item_sum *item_sum; while ((item_sum= it++)) { item_sum->add(); + if (item_sum->has_error) + return; } } @@ -2809,6 +2810,12 @@ bool compute_window_func(THD *thd, { cursor_manager->notify_cursors_next_row(); } + + /* check if we found any error in the window function while calling the add function */ + + if (win_func->window_func()->has_error) + goto label; + /* Return to current row after notifying cursors for each window function. */ tbl->file->ha_rnd_pos(tbl->record[0], rowid_buf); @@ -2821,6 +2828,7 @@ bool compute_window_func(THD *thd, rownum++; } +label: my_free(rowid_buf); partition_trackers.delete_elements(); end_read_record(&info); |