diff options
author | Tor Didriksen <tor.didriksen@sun.com> | 2009-10-28 11:07:30 +0100 |
---|---|---|
committer | Tor Didriksen <tor.didriksen@sun.com> | 2009-10-28 11:07:30 +0100 |
commit | b2baeed4a7a19ee498e963fe374cf254d230d2bc (patch) | |
tree | 569cf4691c918df46c9d933b2e5ef9f56a1217b4 /sql/sql_yacc.yy | |
parent | 55b8f07a9922f26cc64dbeac2f1cb78519621f16 (diff) | |
download | mariadb-git-b2baeed4a7a19ee498e963fe374cf254d230d2bc.tar.gz |
Bug#48060 Memory leak - Item::val_bool() (item.cc:184) from optimizer_subquery grammar
Item_sum::set_aggregator() may be called multiple times during query preparation.
On subsequent calls: verify that the aggregator type is the same,
and re-use the existing Aggregator.
sql/item_sum.cc:
In Item_sum::set_aggregator(): re-use existing Aggregator if already set.
Remove some friend declarations, add some accessor functions.
Cleanup some DBUG_ENTER and DBUG_RETURN code.
sql/item_sum.h:
Make some member fields private, add accessors instead.
Remove some un-necessary friend declarations.
Remove some default arguments from constructors.
sql/opt_sum.cc:
Use accessor functions in Item_sum.
sql/sql_select.cc:
Fix mis-spelled DBUG_ENTER text.
Use accessor functions in Item_sum.
sql/sql_yacc.yy:
Use explicit true/false rather than default arguments when constructing
Item_sum_xxx objects.
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r-- | sql/sql_yacc.yy | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index e81ebf15af6..60c40ec05d6 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -8249,7 +8249,7 @@ udf_expr: sum_expr: AVG_SYM '(' in_sum_expr ')' { - $$= new (YYTHD->mem_root) Item_sum_avg($3); + $$= new (YYTHD->mem_root) Item_sum_avg($3, FALSE); if ($$ == NULL) MYSQL_YYABORT; } @@ -8357,7 +8357,7 @@ sum_expr: } | SUM_SYM '(' in_sum_expr ')' { - $$= new (YYTHD->mem_root) Item_sum_sum($3); + $$= new (YYTHD->mem_root) Item_sum_sum($3, FALSE); if ($$ == NULL) MYSQL_YYABORT; } |