Rename all prepared statements COM_ commands to prefix with COM_STMT_
This commit is contained in:
parent
c78b19768d
commit
b3d977df10
@ -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)
|
|||||||
|
|
||||||
/******************* 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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
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)
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
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)
|
|||||||
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)
|
|||||||
/* 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)
|
|||||||
- 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,
|
|||||||
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)
|
|||||||
*/
|
*/
|
||||||
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)
|
|||||||
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)
|
|||||||
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,
|
|||||||
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
|
|||||||
#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,
|
|||||||
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 @@ public:
|
|||||||
#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 @@ public:
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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,
|
|||||||
}
|
}
|
||||||
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,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
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)
|
|||||||
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.
|
|||||||
|
|
||||||
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 @@ Prepare:
|
|||||||
|
|
||||||
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:
|
|||||||
|
|
||||||
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)
|
|||||||
{
|
{
|
||||||
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,
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
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)
|
|||||||
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:
|
|||||||
{
|
{
|
||||||
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:
|
|||||||
{
|
{
|
||||||
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:
|
|||||||
{
|
{
|
||||||
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:
|
|||||||
{
|
{
|
||||||
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()
|
|||||||
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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user