From 57129a3a4b6c86a570d3e9d35ca643aa00db70b9 Mon Sep 17 00:00:00 2001 From: Tor Didriksen Date: Tue, 19 Mar 2013 15:08:19 +0100 Subject: [PATCH] Bug#16359402 CRASH WITH AGGREGATES: ASSERTION FAILED: N < M_SIZE Post push fix: setup_ref_array() now uses n_sum_items to determine size of ref_pointer_array. The problem was that n_sum_items kept growing, it wasn't reset for each query. A similar memory leak was fixed with the patch for: Bug 14683676 ENDLESS MEMORY CONSUMPTION IN SETUP_REF_ARRAY WITH MAX IN SUBQUERY --- sql/sql_lex.cc | 1 + sql/sql_yacc.yy | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index ac5ec1ba1e4..b013a4219f2 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1761,6 +1761,7 @@ void st_select_lex::init_query() ref_pointer_array_size= 0; select_n_where_fields= 0; select_n_having_items= 0; + n_sum_items= 0; n_child_sum_items= 0; subquery_in_having= explicit_limit= 0; is_item_list_lookup= 0; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 3a76dbb310c..dc4aadea33a 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -10959,7 +10959,9 @@ show: bzero((char*) &lex->create_info,sizeof(lex->create_info)); } show_param - {} + { + Select->parsing_place= NO_MATTER; + } ; show_param: @@ -11309,7 +11311,10 @@ describe: if (prepare_schema_table(YYTHD, lex, $2, SCH_COLUMNS)) MYSQL_YYABORT; } - opt_describe_column {} + opt_describe_column + { + Select->parsing_place= NO_MATTER; + } | describe_command opt_extended_describe { Lex->describe|= DESCRIBE_NORMAL; } select