summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorTor Didriksen <tor.didriksen@oracle.com>2013-03-19 15:08:19 +0100
committerTor Didriksen <tor.didriksen@oracle.com>2013-03-19 15:08:19 +0100
commit57129a3a4b6c86a570d3e9d35ca643aa00db70b9 (patch)
treee5c90dd1296d8f3cf1981e1de364270f5a464e44 /sql
parentd978016d93a9e607cf9f75458ca94d1326223597 (diff)
downloadmariadb-git-57129a3a4b6c86a570d3e9d35ca643aa00db70b9.tar.gz
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
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_lex.cc1
-rw-r--r--sql/sql_yacc.yy9
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