summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
authorVarun Gupta <varunraiko1803@gmail.com>2018-11-09 19:53:40 +0530
committerVarun Gupta <varunraiko1803@gmail.com>2018-11-10 13:13:26 +0530
commita12b8ac8e9636f8258bcb17a0845b9317d870fd9 (patch)
tree0a4ce4a22a73d8922fffc0437a8ddc16f102c11d /sql/sql_select.cc
parent5cfb043d2919439fccfa350edd9a3fdb4aaf229b (diff)
downloadmariadb-git-a12b8ac8e9636f8258bcb17a0845b9317d870fd9.tar.gz
MDEV-12575: Server crash in AGGR_OP::put_record or in JOIN_CACHE::free or Invalid write in JOIN::make_aggr_tables_info
During the optimize state of a query, we come know that the result set would atmost contain one row, then for such a query we don't need to compute GROUP BY, ORDER BY and DISTINCT.
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 0cdecf1bf2e..db3ed8a1aa9 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -2245,6 +2245,18 @@ setup_subq_exit:
if (!tables_list || !table_count)
{
choose_tableless_subquery_plan();
+
+ /* The output has atmost one row */
+ if (group_list)
+ {
+ group_list= NULL;
+ group_optimized_away= 1;
+ rollup.state= ROLLUP::STATE_NONE;
+ }
+ order= NULL;
+ simple_order= TRUE;
+ select_distinct= FALSE;
+
if (select_lex->have_window_funcs())
{
if (!(join_tab= (JOIN_TAB*) thd->alloc(sizeof(JOIN_TAB))))