Commit f16b102f authored by unknown's avatar unknown

Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0

into sanja.is.com.ua:/home/bell/mysql/bk/work-bug4-5.0

parents 46fa81f9 c0918af2
...@@ -48,8 +48,8 @@ enum enum_server_command ...@@ -48,8 +48,8 @@ enum enum_server_command
COM_PROCESS_INFO, COM_CONNECT, COM_PROCESS_KILL, COM_DEBUG, COM_PING, COM_PROCESS_INFO, COM_CONNECT, COM_PROCESS_KILL, COM_DEBUG, COM_PING,
COM_TIME, COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP, COM_TIME, COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP,
COM_TABLE_DUMP, COM_CONNECT_OUT, COM_REGISTER_SLAVE, COM_TABLE_DUMP, COM_CONNECT_OUT, COM_REGISTER_SLAVE,
COM_PREPARE, COM_EXECUTE, COM_LONG_DATA, COM_CLOSE_STMT, COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE,
COM_RESET_STMT, COM_SET_OPTION, COM_FETCH, COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH,
/* don't forget to update const char *command_name[] in sql_parse.cc */ /* don't forget to update const char *command_name[] in sql_parse.cc */
/* Must be last */ /* Must be last */
......
...@@ -1736,7 +1736,7 @@ myodbc_remove_escape(MYSQL *mysql,char *name) ...@@ -1736,7 +1736,7 @@ myodbc_remove_escape(MYSQL *mysql,char *name)
/******************* Declarations ***********************************/ /******************* Declarations ***********************************/
/* Default number of rows fetched per one COM_FETCH command. */ /* Default number of rows fetched per one COM_STMT_FETCH command. */
#define DEFAULT_PREFETCH_ROWS (ulong) 1 #define DEFAULT_PREFETCH_ROWS (ulong) 1
...@@ -1887,7 +1887,7 @@ void set_stmt_errmsg(MYSQL_STMT * stmt, const char *err, int errcode, ...@@ -1887,7 +1887,7 @@ void set_stmt_errmsg(MYSQL_STMT * stmt, const char *err, int errcode,
} }
/* /*
Read and unpack server reply to COM_PREPARE command (sent from Read and unpack server reply to COM_STMT_PREPARE command (sent from
mysql_stmt_prepare). mysql_stmt_prepare).
SYNOPSIS SYNOPSIS
...@@ -2082,7 +2082,7 @@ mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, ulong length) ...@@ -2082,7 +2082,7 @@ mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, ulong length)
mysql_use_result it won't be freed in mysql_stmt_free_result and mysql_use_result it won't be freed in mysql_stmt_free_result and
we should get 'Commands out of sync' here. we should get 'Commands out of sync' here.
*/ */
if (simple_command(mysql, COM_CLOSE_STMT, buff, 4, 1)) if (simple_command(mysql, COM_STMT_CLOSE, buff, 4, 1))
{ {
set_stmt_errmsg(stmt, mysql->net.last_error, mysql->net.last_errno, set_stmt_errmsg(stmt, mysql->net.last_error, mysql->net.last_errno,
mysql->net.sqlstate); mysql->net.sqlstate);
...@@ -2091,7 +2091,7 @@ mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, ulong length) ...@@ -2091,7 +2091,7 @@ mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, ulong length)
stmt->state= MYSQL_STMT_INIT_DONE; stmt->state= MYSQL_STMT_INIT_DONE;
} }
if (simple_command(mysql, COM_PREPARE, query, length, 1)) if (simple_command(mysql, COM_STMT_PREPARE, query, length, 1))
{ {
set_stmt_errmsg(stmt, mysql->net.last_error, mysql->net.last_errno, set_stmt_errmsg(stmt, mysql->net.last_error, mysql->net.last_errno,
mysql->net.sqlstate); mysql->net.sqlstate);
...@@ -2175,7 +2175,7 @@ static unsigned int alloc_stmt_fields(MYSQL_STMT *stmt) ...@@ -2175,7 +2175,7 @@ static unsigned int alloc_stmt_fields(MYSQL_STMT *stmt)
/* /*
Update result set columns metadata if it was sent again in Update result set columns metadata if it was sent again in
reply to COM_EXECUTE. reply to COM_STMT_EXECUTE.
*/ */
static void update_stmt_fields(MYSQL_STMT *stmt) static void update_stmt_fields(MYSQL_STMT *stmt)
...@@ -2490,7 +2490,7 @@ static my_bool store_param(MYSQL_STMT *stmt, MYSQL_BIND *param) ...@@ -2490,7 +2490,7 @@ static my_bool store_param(MYSQL_STMT *stmt, MYSQL_BIND *param)
/* /*
Auxilary function to send COM_EXECUTE packet to server and read reply. Auxilary function to send COM_STMT_EXECUTE packet to server and read reply.
Used from cli_stmt_execute, which is in turn used by mysql_stmt_execute. Used from cli_stmt_execute, which is in turn used by mysql_stmt_execute.
*/ */
...@@ -2507,7 +2507,7 @@ static my_bool execute(MYSQL_STMT *stmt, char *packet, ulong length) ...@@ -2507,7 +2507,7 @@ static my_bool execute(MYSQL_STMT *stmt, char *packet, ulong length)
int4store(buff, stmt->stmt_id); /* Send stmt id to server */ int4store(buff, stmt->stmt_id); /* Send stmt id to server */
buff[4]= (char) stmt->flags; buff[4]= (char) stmt->flags;
int4store(buff+5, 1); /* iteration count */ int4store(buff+5, 1); /* iteration count */
if (cli_advanced_command(mysql, COM_EXECUTE, buff, sizeof(buff), if (cli_advanced_command(mysql, COM_STMT_EXECUTE, buff, sizeof(buff),
packet, length, 1) || packet, length, 1) ||
(*mysql->methods->read_query_result)(mysql)) (*mysql->methods->read_query_result)(mysql))
{ {
...@@ -2720,7 +2720,7 @@ stmt_read_row_from_cursor(MYSQL_STMT *stmt, unsigned char **row) ...@@ -2720,7 +2720,7 @@ stmt_read_row_from_cursor(MYSQL_STMT *stmt, unsigned char **row)
/* Send row request to the server */ /* Send row request to the server */
int4store(buff, stmt->stmt_id); int4store(buff, stmt->stmt_id);
int4store(buff + 4, stmt->prefetch_rows); /* number of rows to fetch */ int4store(buff + 4, stmt->prefetch_rows); /* number of rows to fetch */
if (cli_advanced_command(mysql, COM_FETCH, buff, sizeof(buff), if (cli_advanced_command(mysql, COM_STMT_FETCH, buff, sizeof(buff),
NullS, 0, 1)) NullS, 0, 1))
{ {
set_stmt_errmsg(stmt, net->last_error, net->last_errno, net->sqlstate); set_stmt_errmsg(stmt, net->last_error, net->last_errno, net->sqlstate);
...@@ -2910,7 +2910,7 @@ int STDCALL mysql_stmt_execute(MYSQL_STMT *stmt) ...@@ -2910,7 +2910,7 @@ int STDCALL mysql_stmt_execute(MYSQL_STMT *stmt)
- if data dictionary changed between prepare and execute, for - if data dictionary changed between prepare and execute, for
example a table used in the query was altered. example a table used in the query was altered.
Note, that now (4.1.3) we always send metadata in reply to Note, that now (4.1.3) we always send metadata in reply to
COM_EXECUTE (even if it is not necessary), so either this or COM_STMT_EXECUTE (even if it is not necessary), so either this or
previous branch always works. previous branch always works.
TODO: send metadata only when it's really necessary and add a warning TODO: send metadata only when it's really necessary and add a warning
'Metadata changed' when it's sent twice. 'Metadata changed' when it's sent twice.
...@@ -3380,8 +3380,9 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number, ...@@ -3380,8 +3380,9 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number,
Note that we don't get any ok packet from the server in this case Note that we don't get any ok packet from the server in this case
This is intentional to save bandwidth. This is intentional to save bandwidth.
*/ */
if ((*mysql->methods->advanced_command)(mysql, COM_LONG_DATA, buff, if ((*mysql->methods->advanced_command)(mysql, COM_STMT_SEND_LONG_DATA,
sizeof(buff), data, length, 1)) buff, sizeof(buff), data,
length, 1))
{ {
set_stmt_errmsg(stmt, mysql->net.last_error, set_stmt_errmsg(stmt, mysql->net.last_error,
mysql->net.last_errno, mysql->net.sqlstate); mysql->net.last_errno, mysql->net.sqlstate);
...@@ -4930,7 +4931,7 @@ static my_bool reset_stmt_handle(MYSQL_STMT *stmt, uint flags) ...@@ -4930,7 +4931,7 @@ static my_bool reset_stmt_handle(MYSQL_STMT *stmt, uint flags)
*/ */
char buff[MYSQL_STMT_HEADER]; /* packet header: 4 bytes for stmt id */ char buff[MYSQL_STMT_HEADER]; /* packet header: 4 bytes for stmt id */
int4store(buff, stmt->stmt_id); int4store(buff, stmt->stmt_id);
if ((*mysql->methods->advanced_command)(mysql, COM_RESET_STMT, buff, if ((*mysql->methods->advanced_command)(mysql, COM_STMT_RESET, buff,
sizeof(buff), 0, 0, 0)) sizeof(buff), 0, 0, 0))
{ {
set_stmt_errmsg(stmt, mysql->net.last_error, mysql->net.last_errno, set_stmt_errmsg(stmt, mysql->net.last_error, mysql->net.last_errno,
...@@ -5004,7 +5005,7 @@ my_bool STDCALL mysql_stmt_close(MYSQL_STMT *stmt) ...@@ -5004,7 +5005,7 @@ my_bool STDCALL mysql_stmt_close(MYSQL_STMT *stmt)
mysql->status= MYSQL_STATUS_READY; mysql->status= MYSQL_STATUS_READY;
} }
int4store(buff, stmt->stmt_id); int4store(buff, stmt->stmt_id);
if ((rc= simple_command(mysql, COM_CLOSE_STMT, buff, 4, 1))) if ((rc= simple_command(mysql, COM_STMT_CLOSE, buff, 4, 1)))
{ {
set_stmt_errmsg(stmt, mysql->net.last_error, mysql->net.last_errno, set_stmt_errmsg(stmt, mysql->net.last_error, mysql->net.last_errno,
mysql->net.sqlstate); mysql->net.sqlstate);
......
...@@ -220,7 +220,7 @@ static int emb_stmt_execute(MYSQL_STMT *stmt) ...@@ -220,7 +220,7 @@ static int emb_stmt_execute(MYSQL_STMT *stmt)
THD *thd= (THD*)stmt->mysql->thd; THD *thd= (THD*)stmt->mysql->thd;
thd->client_param_count= stmt->param_count; thd->client_param_count= stmt->param_count;
thd->client_params= stmt->params; thd->client_params= stmt->params;
if (emb_advanced_command(stmt->mysql, COM_EXECUTE,0,0, if (emb_advanced_command(stmt->mysql, COM_STMT_EXECUTE,0,0,
header, sizeof(header), 1) || header, sizeof(header), 1) ||
emb_mysql_read_query_result(stmt->mysql)) emb_mysql_read_query_result(stmt->mysql))
{ {
......
...@@ -649,7 +649,7 @@ bool Item_in_optimizer::fix_left(THD *thd, ...@@ -649,7 +649,7 @@ bool Item_in_optimizer::fix_left(THD *thd,
If it is preparation PS only then we do not know values of parameters => If it is preparation PS only then we do not know values of parameters =>
cant't get there values and do not need that values. cant't get there values and do not need that values.
*/ */
if (!thd->only_prepare()) if (!thd->current_arena->is_stmt_prepare())
cache->store(args[0]); cache->store(args[0]);
if (cache->cols() == 1) if (cache->cols() == 1)
{ {
......
...@@ -559,8 +559,6 @@ struct Query_cache_query_flags ...@@ -559,8 +559,6 @@ struct Query_cache_query_flags
#define query_cache_invalidate_by_MyISAM_filename_ref NULL #define query_cache_invalidate_by_MyISAM_filename_ref NULL
#endif /*HAVE_QUERY_CACHE*/ #endif /*HAVE_QUERY_CACHE*/
#define prepare_execute(A) ((A)->command == COM_EXECUTE)
bool mysql_create_db(THD *thd, char *db, HA_CREATE_INFO *create, bool silent); bool mysql_create_db(THD *thd, char *db, HA_CREATE_INFO *create, bool silent);
bool mysql_alter_db(THD *thd, const char *db, HA_CREATE_INFO *create); bool mysql_alter_db(THD *thd, const char *db, HA_CREATE_INFO *create);
bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent); bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent);
...@@ -842,7 +840,7 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length, ...@@ -842,7 +840,7 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length,
void mysql_stmt_execute(THD *thd, char *packet, uint packet_length); void mysql_stmt_execute(THD *thd, char *packet, uint packet_length);
void mysql_sql_stmt_execute(THD *thd, LEX_STRING *stmt_name); void mysql_sql_stmt_execute(THD *thd, LEX_STRING *stmt_name);
void mysql_stmt_fetch(THD *thd, char *packet, uint packet_length); void mysql_stmt_fetch(THD *thd, char *packet, uint packet_length);
void mysql_stmt_free(THD *thd, char *packet); void mysql_stmt_close(THD *thd, char *packet);
void mysql_stmt_reset(THD *thd, char *packet); void mysql_stmt_reset(THD *thd, char *packet);
void mysql_stmt_get_longdata(THD *thd, char *pos, ulong packet_length); void mysql_stmt_get_longdata(THD *thd, char *pos, ulong packet_length);
void reinit_stmt_before_use(THD *thd, LEX *lex); void reinit_stmt_before_use(THD *thd, LEX *lex);
......
...@@ -1046,7 +1046,7 @@ class THD :public ilink, ...@@ -1046,7 +1046,7 @@ class THD :public ilink,
#endif #endif
struct st_my_thread_var *mysys_var; struct st_my_thread_var *mysys_var;
/* /*
Type of current query: COM_PREPARE, COM_QUERY, etc. Set from Type of current query: COM_STMT_PREPARE, COM_QUERY, etc. Set from
first byte of the packet in do_command() first byte of the packet in do_command()
*/ */
enum enum_server_command command; enum enum_server_command command;
...@@ -1338,13 +1338,9 @@ class THD :public ilink, ...@@ -1338,13 +1338,9 @@ class THD :public ilink,
return 0; return 0;
#endif #endif
} }
inline bool only_prepare()
{
return command == COM_PREPARE;
}
inline bool fill_derived_tables() inline bool fill_derived_tables()
{ {
return !only_prepare() && !lex->only_view_structure(); return !current_arena->is_stmt_prepare() && !lex->only_view_structure();
} }
inline gptr trans_alloc(unsigned int size) inline gptr trans_alloc(unsigned int size)
{ {
......
...@@ -967,7 +967,7 @@ int yylex(void *arg, void *yythd) ...@@ -967,7 +967,7 @@ int yylex(void *arg, void *yythd)
{ {
THD* thd= (THD*)yythd; THD* thd= (THD*)yythd;
if ((thd->client_capabilities & CLIENT_MULTI_STATEMENTS) && if ((thd->client_capabilities & CLIENT_MULTI_STATEMENTS) &&
(thd->command != COM_PREPARE)) (thd->command != COM_STMT_PREPARE))
{ {
lex->safe_to_cache_query= 0; lex->safe_to_cache_query= 0;
lex->found_semicolon=(char*) lex->ptr; lex->found_semicolon=(char*) lex->ptr;
......
...@@ -1634,32 +1634,32 @@ bool dispatch_command(enum enum_server_command command, THD *thd, ...@@ -1634,32 +1634,32 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
} }
break; break;
} }
case COM_EXECUTE: case COM_STMT_EXECUTE:
{ {
mysql_stmt_execute(thd, packet, packet_length); mysql_stmt_execute(thd, packet, packet_length);
break; break;
} }
case COM_FETCH: case COM_STMT_FETCH:
{ {
mysql_stmt_fetch(thd, packet, packet_length); mysql_stmt_fetch(thd, packet, packet_length);
break; break;
} }
case COM_LONG_DATA: case COM_STMT_SEND_LONG_DATA:
{ {
mysql_stmt_get_longdata(thd, packet, packet_length); mysql_stmt_get_longdata(thd, packet, packet_length);
break; break;
} }
case COM_PREPARE: case COM_STMT_PREPARE:
{ {
mysql_stmt_prepare(thd, packet, packet_length, 0); mysql_stmt_prepare(thd, packet, packet_length, 0);
break; break;
} }
case COM_CLOSE_STMT: case COM_STMT_CLOSE:
{ {
mysql_stmt_free(thd, packet); mysql_stmt_close(thd, packet);
break; break;
} }
case COM_RESET_STMT: case COM_STMT_RESET:
{ {
mysql_stmt_reset(thd, packet); mysql_stmt_reset(thd, packet);
break; break;
...@@ -2199,7 +2199,7 @@ int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident, ...@@ -2199,7 +2199,7 @@ int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident,
/* /*
Read query from packet and store in thd->query Read query from packet and store in thd->query
Used in COM_QUERY and COM_PREPARE Used in COM_QUERY and COM_STMT_PREPARE
DESCRIPTION DESCRIPTION
Sets the following THD variables: Sets the following THD variables:
...@@ -2501,7 +2501,7 @@ mysql_execute_command(THD *thd) ...@@ -2501,7 +2501,7 @@ mysql_execute_command(THD *thd)
lex->prepared_stmt_name.str, lex->prepared_stmt_name.str,
query_len, query_str)); query_len, query_str));
} }
thd->command= COM_PREPARE; thd->command= COM_STMT_PREPARE;
if (!(res= mysql_stmt_prepare(thd, query_str, query_len + 1, if (!(res= mysql_stmt_prepare(thd, query_str, query_len + 1,
&lex->prepared_stmt_name))) &lex->prepared_stmt_name)))
send_ok(thd, 0L, 0L, "Statement prepared"); send_ok(thd, 0L, 0L, "Statement prepared");
......
...@@ -19,9 +19,9 @@ This file contains the implementation of prepare and executes. ...@@ -19,9 +19,9 @@ This file contains the implementation of prepare and executes.
Prepare: Prepare:
- Server gets the query from client with command 'COM_PREPARE'; - Server gets the query from client with command 'COM_STMT_PREPARE';
in the following format: in the following format:
[COM_PREPARE:1] [query] [COM_STMT_PREPARE:1] [query]
- Parse the query and recognize any parameter markers '?' and - Parse the query and recognize any parameter markers '?' and
store its information list in lex->param_list store its information list in lex->param_list
- Allocate a new statement for this prepare; and keep this in - Allocate a new statement for this prepare; and keep this in
...@@ -37,10 +37,10 @@ This file contains the implementation of prepare and executes. ...@@ -37,10 +37,10 @@ This file contains the implementation of prepare and executes.
Prepare-execute: Prepare-execute:
- Server gets the command 'COM_EXECUTE' to execute the - Server gets the command 'COM_STMT_EXECUTE' to execute the
previously prepared query. If there is any param markers; then client previously prepared query. If there is any param markers; then client
will send the data in the following format: will send the data in the following format:
[COM_EXECUTE:1] [COM_STMT_EXECUTE:1]
[STMT_ID:4] [STMT_ID:4]
[NULL_BITS:(param_count+7)/8)] [NULL_BITS:(param_count+7)/8)]
[TYPES_SUPPLIED_BY_CLIENT(0/1):1] [TYPES_SUPPLIED_BY_CLIENT(0/1):1]
...@@ -55,9 +55,10 @@ Prepare-execute: ...@@ -55,9 +55,10 @@ Prepare-execute:
Long data handling: Long data handling:
- Server gets the long data in pieces with command type 'COM_LONG_DATA'. - Server gets the long data in pieces with command type
'COM_STMT_SEND_LONG_DATA'.
- The packet recieved will have the format as: - The packet recieved will have the format as:
[COM_LONG_DATA:1][STMT_ID:4][parameter_number:2][data] [COM_STMT_SEND_LONG_DATA:1][STMT_ID:4][parameter_number:2][data]
- data from the packet is appended to long data value buffer for this - data from the packet is appended to long data value buffer for this
placeholder. placeholder.
- It's up to the client to check for read data ended. The server doesn't - It's up to the client to check for read data ended. The server doesn't
...@@ -2117,7 +2118,7 @@ void mysql_sql_stmt_execute(THD *thd, LEX_STRING *stmt_name) ...@@ -2117,7 +2118,7 @@ void mysql_sql_stmt_execute(THD *thd, LEX_STRING *stmt_name)
{ {
my_error(ER_WRONG_ARGUMENTS, MYF(0), "EXECUTE"); my_error(ER_WRONG_ARGUMENTS, MYF(0), "EXECUTE");
} }
thd->command= COM_EXECUTE; /* For nice messages in general log */ thd->command= COM_STMT_EXECUTE; /* For nice messages in general log */
execute_stmt(thd, stmt, &expanded_query); execute_stmt(thd, stmt, &expanded_query);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -2185,7 +2186,7 @@ static void execute_stmt(THD *thd, Prepared_statement *stmt, ...@@ -2185,7 +2186,7 @@ static void execute_stmt(THD *thd, Prepared_statement *stmt,
/* /*
COM_FETCH handler: fetches requested amount of rows from cursor COM_STMT_FETCH handler: fetches requested amount of rows from cursor
SYNOPSIS SYNOPSIS
mysql_stmt_fetch() mysql_stmt_fetch()
...@@ -2290,13 +2291,13 @@ void mysql_stmt_reset(THD *thd, char *packet) ...@@ -2290,13 +2291,13 @@ void mysql_stmt_reset(THD *thd, char *packet)
Note: we don't send any reply to that command. Note: we don't send any reply to that command.
*/ */
void mysql_stmt_free(THD *thd, char *packet) void mysql_stmt_close(THD *thd, char *packet)
{ {
/* There is always space for 4 bytes in packet buffer */ /* There is always space for 4 bytes in packet buffer */
ulong stmt_id= uint4korr(packet); ulong stmt_id= uint4korr(packet);
Prepared_statement *stmt; Prepared_statement *stmt;
DBUG_ENTER("mysql_stmt_free"); DBUG_ENTER("mysql_stmt_close");
statistic_increment(thd->status_var.com_stmt_close, &LOCK_status); statistic_increment(thd->status_var.com_stmt_close, &LOCK_status);
if (!(stmt= find_prepared_statement(thd, stmt_id, "mysql_stmt_close"))) if (!(stmt= find_prepared_statement(thd, stmt_id, "mysql_stmt_close")))
......
...@@ -914,7 +914,7 @@ deallocate: ...@@ -914,7 +914,7 @@ deallocate:
{ {
THD *thd=YYTHD; THD *thd=YYTHD;
LEX *lex= thd->lex; LEX *lex= thd->lex;
if (thd->command == COM_PREPARE) if (thd->command == COM_STMT_PREPARE)
{ {
yyerror(ER(ER_SYNTAX_ERROR)); yyerror(ER(ER_SYNTAX_ERROR));
YYABORT; YYABORT;
...@@ -939,7 +939,7 @@ prepare: ...@@ -939,7 +939,7 @@ prepare:
{ {
THD *thd=YYTHD; THD *thd=YYTHD;
LEX *lex= thd->lex; LEX *lex= thd->lex;
if (thd->command == COM_PREPARE) if (thd->command == COM_STMT_PREPARE)
{ {
yyerror(ER(ER_SYNTAX_ERROR)); yyerror(ER(ER_SYNTAX_ERROR));
YYABORT; YYABORT;
...@@ -974,7 +974,7 @@ execute: ...@@ -974,7 +974,7 @@ execute:
{ {
THD *thd=YYTHD; THD *thd=YYTHD;
LEX *lex= thd->lex; LEX *lex= thd->lex;
if (thd->command == COM_PREPARE) if (thd->command == COM_STMT_PREPARE)
{ {
yyerror(ER(ER_SYNTAX_ERROR)); yyerror(ER(ER_SYNTAX_ERROR));
YYABORT; YYABORT;
...@@ -6902,7 +6902,7 @@ param_marker: ...@@ -6902,7 +6902,7 @@ param_marker:
{ {
THD *thd=YYTHD; THD *thd=YYTHD;
LEX *lex= thd->lex; LEX *lex= thd->lex;
if (thd->command == COM_PREPARE) if (thd->command == COM_STMT_PREPARE)
{ {
Item_param *item= new Item_param((uint) (lex->tok_start - Item_param *item= new Item_param((uint) (lex->tok_start -
(uchar *) thd->query)); (uchar *) thd->query));
......
...@@ -13040,7 +13040,7 @@ static void test_bug9478() ...@@ -13040,7 +13040,7 @@ static void test_bug9478()
int4store(buff, stmt->stmt_id); int4store(buff, stmt->stmt_id);
buff[4]= 0; /* Flag */ buff[4]= 0; /* Flag */
int4store(buff+5, 1); /* Return 1 row */ int4store(buff+5, 1); /* Return 1 row */
rc= ((*mysql->methods->advanced_command)(mysql, COM_EXECUTE, buff, rc= ((*mysql->methods->advanced_command)(mysql, COM_STMT_EXECUTE, buff,
sizeof(buff), 0,0,1) || sizeof(buff), 0,0,1) ||
(*mysql->methods->read_query_result)(mysql)); (*mysql->methods->read_query_result)(mysql));
DIE_UNLESS(rc); DIE_UNLESS(rc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment