From 6facd4cb13170e8695d9ae4f1e30611af0b0a472 Mon Sep 17 00:00:00 2001 From: Alexander Nozdrin Date: Fri, 14 May 2010 22:11:25 +0400 Subject: Patch for Bug#27863 (excessive memory usage for many small queries in a multiquery packet). Background: - a query can contain multiple SQL statements; - the server frees resources allocated to process a query when the whole query is handled. In other words, resources allocated to process one SQL statement from a multi-statement query are freed when all SQL statements are handled. The problem was that the parser allocated a buffer of size of the whole query for each SQL statement in a multi-statement query. Thus, if a query had many SQL-statements (so, the query was long), but each SQL statement was short, ther parser tried to allocate huge amount of memory (number of small SQL statements * length of the whole query). The memory was allocated for a so-called "cpp buffer", which is intended to store pre-processed SQL statement -- SQL text without version specific comments. The fix is to allocate memory for the "cpp buffer" once for all SQL statements (once for a query). --- sql/sql_signal.cc | 4 ---- 1 file changed, 4 deletions(-) (limited to 'sql/sql_signal.cc') diff --git a/sql/sql_signal.cc b/sql/sql_signal.cc index 8ba9cb369aa..f340da373e8 100644 --- a/sql/sql_signal.cc +++ b/sql/sql_signal.cc @@ -75,10 +75,6 @@ const LEX_STRING Diag_statement_item_names[]= { C_STRING_WITH_LEN("TRANSACTION_ACTIVE") } }; -Set_signal_information::Set_signal_information() -{ - clear(); -} Set_signal_information::Set_signal_information( const Set_signal_information& set) -- cgit v1.2.1