diff options
author | unknown <hf@deer.mysql.r18.ru> | 2003-01-21 09:46:07 +0400 |
---|---|---|
committer | unknown <hf@deer.mysql.r18.ru> | 2003-01-21 09:46:07 +0400 |
commit | a109d180c15d8e2b7908cf7833ee2ea245ae18f0 (patch) | |
tree | 8b24c166544177198dcdcd0ca14516e5e3cd544f | |
parent | 65aa88236cc1e310baa69cfed7281ce029859aed (diff) | |
parent | 3ffd7865b02a37569f955e40505f2f6b46cbe7a0 (diff) | |
download | mariadb-git-a109d180c15d8e2b7908cf7833ee2ea245ae18f0.tar.gz |
Merge abotchkov@work.mysql.com:/home/bk/mysql-4.1
into deer.mysql.r18.ru:/home/hf/work/mysql-4.1.w1
sql/ha_innodb.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
-rw-r--r-- | sql/ha_innodb.cc | 5 | ||||
-rw-r--r-- | sql/sql_parse.cc | 33 | ||||
-rw-r--r-- | sql/sql_prepare.cc | 6 |
3 files changed, 29 insertions, 15 deletions
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index a6cf68b33b0..6e2b08005df 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -2513,11 +2513,6 @@ ha_innobase::change_active_index( the flag ROW_MYSQL_WHOLE_ROW below, but that caused unnecessary copying. Starting from MySQL-4.1 we use a more efficient flag here. */ - /* - TODO: In 4.0 the below user_thd was changed to NULL. - Heikki, please delete this comment after you have read this and may - acted upon it. - */ build_template(prebuilt, user_thd, table, ROW_MYSQL_REC_FIELDS); DBUG_RETURN(0); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 509e1ac972c..0c9ad2d6935 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1206,6 +1206,29 @@ bool dispatch_command(enum enum_server_command command, THD *thd, mysql_log.write(thd,command,"%s",thd->query); DBUG_PRINT("query",("%-.4096s",thd->query)); mysql_parse(thd,thd->query, thd->query_length); + + while (!thd->fatal_error && thd->lex.found_colon) + { + /* + Multiple queries exits, execute them individually + */ + if (thd->lock || thd->open_tables || thd->derived_tables) + close_thread_tables(thd); + + uint length= thd->query_length-(uint)(thd->lex.found_colon-thd->query); + + /* Remove garbage at start of query */ + char *packet= thd->lex.found_colon; + while (my_isspace(system_charset_info,packet[0]) && length > 0) + { + packet++; + length--; + } + thd->query= packet; + thd->query_length= length; + mysql_parse(thd, packet, length); + } + if (!(specialflag & SPECIAL_NO_PRIOR)) my_pthread_setprio(pthread_self(),WAIT_PRIOR); DBUG_PRINT("info",("query ready")); @@ -1438,14 +1461,6 @@ bool dispatch_command(enum enum_server_command command, THD *thd, mysql_slow_log.write(thd, thd->query, thd->query_length, start_of_query); } } - if (command == COM_QUERY && thd->lex.found_colon) - { - /* - Multiple queries exits, execute them individually - */ - uint length= thd->query_length-(uint)(thd->lex.found_colon-thd->query)+1; - dispatch_command(command, thd, thd->lex.found_colon, length); - } thd->proc_info="cleaning up"; VOID(pthread_mutex_lock(&LOCK_thread_count)); // For process list thd->proc_info=0; @@ -1476,7 +1491,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, bool alloc_query(THD *thd, char *packet, ulong packet_length) { packet_length--; // Remove end null - /* Remove garage at start and end of query */ + /* Remove garbage at start and end of query */ while (my_isspace(system_charset_info,packet[0]) && packet_length > 0) { packet++; diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 2c5b049e51b..0e1cdbe824f 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -30,7 +30,11 @@ Prepare: - Without executing the query, return back to client the total number of parameters along with result-set metadata information (if any) in the following format: - [STMT_ID:4][Columns:2][Param_count:2][Columns meta info][Params meta info] + [STMT_ID:4] + [Column_count:2] + [Param_count:2] + [Columns meta info] (if Column_count > 0) + [Params meta info] (if Param_count > 0 ) (TODO : 4.1.1) Prepare-execute: |