From 3fa541df60f828f66a88f2c7e37db66859f90e08 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 20 Dec 2003 15:43:24 +0100 Subject: [PATCH] Post-merge fixes. --- sql/sql_class.cc | 64 --------------------------------------------- sql/sql_prepare.cc | 7 +++++ tests/client_test.c | 4 +-- 3 files changed, 9 insertions(+), 66 deletions(-) diff --git a/sql/sql_class.cc b/sql/sql_class.cc index edf24bfcfaa..3b2b2dfd999 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1354,67 +1354,3 @@ void TMP_TABLE_PARAM::init() group_parts= group_length= group_null_parts= 0; quick_group= 1; } - -/**************************************************************************** - Statement functions -****************************************************************************/ - -Statement::Statement(THD *thd) - :id(++thd->statement_id_counter), - query_id(0), /* initialized later */ - set_query_id(1), - allow_sum_func(0), /* initialized later */ - command(COM_SLEEP), /* initialized later */ - lex(&main_lex), - query(0), /* these two are set */ - query_length(0), /* in alloc_query() */ - free_list(0) -{ - init_sql_alloc(&mem_root, - thd->variables.query_alloc_block_size, - thd->variables.query_prealloc_size); -} - - -Statement::Statement() - :id(0), - query_id(0), - set_query_id(1), - allow_sum_func(0), - command(COM_SLEEP), - lex(&main_lex), - query(0), - query_length(0), - free_list(0) -{ - bzero((char *) &mem_root, sizeof(mem_root)); -} - - -Statement::~Statement() -{ - free_root(&mem_root, MYF(0)); -} - - -C_MODE_START - -static byte * -get_statement_id_as_hash_key(const byte *record, uint *key_length, - my_bool not_used __attribute__((unused))) -{ - const Statement *statement= (const Statement *) record; - *key_length= sizeof(statement->id); - return (byte *) &((const Statement *) statement)->id; -} - -C_MODE_END - - -Statement_map::Statement_map() -{ - enum { START_HASH_SIZE = 16 }; - hash_init(&st_hash, default_charset_info, START_HASH_SIZE, 0, 0, - get_statement_id_as_hash_key, (hash_free_key) 0, MYF(0)); -} - diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 59812991b73..736eb39b37c 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -937,6 +937,13 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length) DBUG_RETURN(0); yyparse_err: + if (thd->lex->sphead) + { + if (lex != thd->lex) + thd->lex->sphead->restore_lex(thd); + delete thd->lex->sphead; + thd->lex->sphead= NULL; + } lex_end(lex); stmt->set_statement(thd); thd->set_statement(&thd->stmt_backup); diff --git a/tests/client_test.c b/tests/client_test.c index 66637dcb04b..b7ba580438f 100644 --- a/tests/client_test.c +++ b/tests/client_test.c @@ -6735,8 +6735,8 @@ static void test_explain_bug() verify_prepare_field(result,5,"key","",MYSQL_TYPE_VAR_STRING, "","","",NAME_LEN,0); - verify_prepare_field(result,6,"key_len","",MYSQL_TYPE_LONGLONG, - "","","",3,0); + verify_prepare_field(result,6,"key_len","",MYSQL_TYPE_VAR_STRING, + "","","",NAME_LEN*32,0); verify_prepare_field(result,7,"ref","",MYSQL_TYPE_VAR_STRING, "","","",NAME_LEN*16,0);