Remove usage of !$ from mysql-tests
Added protocol::flush() for easier embedded-server code Increase block allocation variables a bit as they where a bit too small for MySQL 4.1 Added option --silent to client_test
This commit is contained in:
parent
f5c77f6a06
commit
2185f1a56c
@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
#define MTEST_VERSION "2.3"
|
#define MTEST_VERSION "2.4"
|
||||||
|
|
||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include <mysql_embed.h>
|
#include <mysql_embed.h>
|
||||||
@ -243,8 +243,7 @@ VAR var_reg[10];
|
|||||||
HASH var_hash;
|
HASH var_hash;
|
||||||
my_bool disable_query_log=0, disable_result_log=0, disable_warnings=0;
|
my_bool disable_query_log=0, disable_result_log=0, disable_warnings=0;
|
||||||
my_bool disable_info= 1; /* By default off */
|
my_bool disable_info= 1; /* By default off */
|
||||||
/* default for disable_abort_on_error: false = abort on unmasked error */
|
my_bool abort_on_error= 1;
|
||||||
my_bool disable_abort_on_error= 0;
|
|
||||||
|
|
||||||
struct connection cons[MAX_CONS];
|
struct connection cons[MAX_CONS];
|
||||||
struct connection* cur_con, *next_con, *cons_end;
|
struct connection* cur_con, *next_con, *cons_end;
|
||||||
@ -370,7 +369,7 @@ const char *command_names[]=
|
|||||||
};
|
};
|
||||||
|
|
||||||
TYPELIB command_typelib= {array_elements(command_names),"",
|
TYPELIB command_typelib= {array_elements(command_names),"",
|
||||||
command_names};
|
command_names, 0};
|
||||||
|
|
||||||
DYNAMIC_STRING ds_res;
|
DYNAMIC_STRING ds_res;
|
||||||
static void die(const char *fmt, ...);
|
static void die(const char *fmt, ...);
|
||||||
@ -744,7 +743,7 @@ err:
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VAR* var_obtain(char* name, int len)
|
static VAR *var_obtain(const char* name, int len)
|
||||||
{
|
{
|
||||||
VAR* v;
|
VAR* v;
|
||||||
if ((v = (VAR*)hash_search(&var_hash, name, len)))
|
if ((v = (VAR*)hash_search(&var_hash, name, len)))
|
||||||
@ -754,28 +753,33 @@ static VAR* var_obtain(char* name, int len)
|
|||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
int var_set(char* var_name, char* var_name_end, char* var_val,
|
int var_set(const char *var_name, const char *var_name_end,
|
||||||
char* var_val_end)
|
const char *var_val, const char *var_val_end)
|
||||||
{
|
{
|
||||||
int digit;
|
int digit;
|
||||||
VAR* v;
|
VAR* v;
|
||||||
|
DBUG_ENTER("var_set");
|
||||||
|
DBUG_PRINT("enter", ("var_name: '%.*s' = '%.*s' (length: %d)",
|
||||||
|
(int) (var_name_end - var_name), var_name,
|
||||||
|
(int) (var_val_end - var_val), var_val,
|
||||||
|
(int) (var_val_end - var_val)));
|
||||||
|
|
||||||
if (*var_name++ != '$')
|
if (*var_name++ != '$')
|
||||||
{
|
{
|
||||||
--var_name;
|
var_name--;
|
||||||
*var_name_end = 0;
|
die("Variable name in %s does not start with '$'", var_name);
|
||||||
die("Variable name in %s does not start with '$'", var_name);
|
}
|
||||||
}
|
|
||||||
digit = *var_name - '0';
|
digit = *var_name - '0';
|
||||||
if (!(digit < 10 && digit >= 0))
|
if (!(digit < 10 && digit >= 0))
|
||||||
{
|
{
|
||||||
v = var_obtain(var_name, var_name_end - var_name);
|
v = var_obtain(var_name, (uint) (var_name_end - var_name));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
v = var_reg + digit;
|
v = var_reg + digit;
|
||||||
|
|
||||||
return eval_expr(v, var_val, (const char**)&var_val_end);
|
return eval_expr(v, var_val, (const char**)&var_val_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int open_file(const char* name)
|
int open_file(const char* name)
|
||||||
{
|
{
|
||||||
char buff[FN_REFLEN];
|
char buff[FN_REFLEN];
|
||||||
@ -1244,18 +1248,22 @@ int do_let(struct st_query* q)
|
|||||||
return var_set(var_name, var_name_end, var_val_start, q->end);
|
return var_set(var_name, var_name_end, var_val_start, q->end);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Store an integer (typically the returncode of the last SQL) */
|
|
||||||
/* statement in the mysqltest builtin variable $mysql_errno, by */
|
/*
|
||||||
/* simulating of a user statement "let $mysql_errno= <integer>" */
|
Store an integer (typically the returncode of the last SQL)
|
||||||
int var_set_errno(int sql_errno )
|
statement in the mysqltest builtin variable $mysql_errno, by
|
||||||
|
simulating of a user statement "let $mysql_errno= <integer>"
|
||||||
|
*/
|
||||||
|
|
||||||
|
int var_set_errno(int sql_errno)
|
||||||
{
|
{
|
||||||
char var_name[] = "$mysql_errno", var_val[30];
|
const char *var_name= "$mysql_errno";
|
||||||
sprintf(var_val, "%d", sql_errno);
|
char var_val[21];
|
||||||
/* On some odd systems, the return value from sprintf() isn't */
|
uint length= my_sprintf(var_val, (var_val, "%d", sql_errno));
|
||||||
/* always the length of the string, so we use strlen() */
|
return var_set(var_name, var_name + 12, var_val, var_val + length);
|
||||||
return var_set(var_name, var_name + 12, var_val, var_val + strlen(var_val));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int do_rpl_probe(struct st_query* q __attribute__((unused)))
|
int do_rpl_probe(struct st_query* q __attribute__((unused)))
|
||||||
{
|
{
|
||||||
DBUG_ENTER("do_rpl_probe");
|
DBUG_ENTER("do_rpl_probe");
|
||||||
@ -1264,12 +1272,14 @@ int do_rpl_probe(struct st_query* q __attribute__((unused)))
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int do_enable_rpl_parse(struct st_query* q __attribute__((unused)))
|
int do_enable_rpl_parse(struct st_query* q __attribute__((unused)))
|
||||||
{
|
{
|
||||||
mysql_enable_rpl_parse(&cur_con->mysql);
|
mysql_enable_rpl_parse(&cur_con->mysql);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int do_disable_rpl_parse(struct st_query* q __attribute__((unused)))
|
int do_disable_rpl_parse(struct st_query* q __attribute__((unused)))
|
||||||
{
|
{
|
||||||
mysql_disable_rpl_parse(&cur_con->mysql);
|
mysql_disable_rpl_parse(&cur_con->mysql);
|
||||||
@ -2013,7 +2023,7 @@ int read_query(struct st_query** q_ptr)
|
|||||||
memcpy((gptr) q->expected_errno, (gptr) global_expected_errno,
|
memcpy((gptr) q->expected_errno, (gptr) global_expected_errno,
|
||||||
sizeof(global_expected_errno));
|
sizeof(global_expected_errno));
|
||||||
q->expected_errors= global_expected_errors;
|
q->expected_errors= global_expected_errors;
|
||||||
q->abort_on_error= (global_expected_errors == 0 && !disable_abort_on_error);
|
q->abort_on_error= (global_expected_errors == 0 && abort_on_error);
|
||||||
bzero((gptr) global_expected_errno, sizeof(global_expected_errno));
|
bzero((gptr) global_expected_errno, sizeof(global_expected_errno));
|
||||||
global_expected_errors=0;
|
global_expected_errors=0;
|
||||||
if (p[0] == '-' && p[1] == '-')
|
if (p[0] == '-' && p[1] == '-')
|
||||||
@ -2422,7 +2432,7 @@ static int run_query(MYSQL *mysql, struct st_query *q, int flags)
|
|||||||
|
|
||||||
if (ps_protocol_enabled && disable_info &&
|
if (ps_protocol_enabled && disable_info &&
|
||||||
(flags & QUERY_SEND) && (flags & QUERY_REAP) && ps_match_re(q->query))
|
(flags & QUERY_SEND) && (flags & QUERY_REAP) && ps_match_re(q->query))
|
||||||
return run_query_stmt (mysql, q, flags);
|
return run_query_stmt(mysql, q, flags);
|
||||||
return run_query_normal(mysql, q, flags);
|
return run_query_normal(mysql, q, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2659,9 +2669,12 @@ end:
|
|||||||
dynstr_free(&ds_tmp);
|
dynstr_free(&ds_tmp);
|
||||||
if (q->type == Q_EVAL)
|
if (q->type == Q_EVAL)
|
||||||
dynstr_free(&eval_query);
|
dynstr_free(&eval_query);
|
||||||
/* We save the return code (mysql_errno(mysql)) from the last call sent */
|
|
||||||
/* to the server into the mysqltest builtin variable $mysql_errno. This */
|
/*
|
||||||
/* variable then can be used from the test case itself. */
|
We save the return code (mysql_errno(mysql)) from the last call sent
|
||||||
|
to the server into the mysqltest builtin variable $mysql_errno. This
|
||||||
|
variable then can be used from the test case itself.
|
||||||
|
*/
|
||||||
var_set_errno(mysql_errno(mysql));
|
var_set_errno(mysql_errno(mysql));
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
}
|
}
|
||||||
@ -3012,6 +3025,7 @@ end:
|
|||||||
dynstr_free(&ds_tmp);
|
dynstr_free(&ds_tmp);
|
||||||
if (q->type == Q_EVAL)
|
if (q->type == Q_EVAL)
|
||||||
dynstr_free(&eval_query);
|
dynstr_free(&eval_query);
|
||||||
|
var_set_errno(mysql_stmt_errno(stmt));
|
||||||
mysql_stmt_close(stmt);
|
mysql_stmt_close(stmt);
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
}
|
}
|
||||||
@ -3319,7 +3333,7 @@ static VAR* var_from_env(const char *name, const char *def_val)
|
|||||||
if (!(tmp = getenv(name)))
|
if (!(tmp = getenv(name)))
|
||||||
tmp = def_val;
|
tmp = def_val;
|
||||||
|
|
||||||
v = var_init(0, name, 0, tmp, 0);
|
v = var_init(0, name, strlen(name), tmp, strlen(tmp));
|
||||||
my_hash_insert(&var_hash, (byte*)v);
|
my_hash_insert(&var_hash, (byte*)v);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
@ -3416,9 +3430,11 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
init_var_hash(&cur_con->mysql);
|
init_var_hash(&cur_con->mysql);
|
||||||
|
|
||||||
/* Initialize $mysql_errno with -1, so we can */
|
/*
|
||||||
/* - distinguish it from valid values ( >= 0 ) and */
|
Initialize $mysql_errno with -1, so we can
|
||||||
/* - detect if there was never a command sent to the server */
|
- distinguish it from valid values ( >= 0 ) and
|
||||||
|
- detect if there was never a command sent to the server
|
||||||
|
*/
|
||||||
var_set_errno(-1);
|
var_set_errno(-1);
|
||||||
|
|
||||||
while (!read_query(&q))
|
while (!read_query(&q))
|
||||||
@ -3440,8 +3456,8 @@ int main(int argc, char **argv)
|
|||||||
case Q_DISABLE_RPL_PARSE: do_disable_rpl_parse(q); break;
|
case Q_DISABLE_RPL_PARSE: do_disable_rpl_parse(q); break;
|
||||||
case Q_ENABLE_QUERY_LOG: disable_query_log=0; break;
|
case Q_ENABLE_QUERY_LOG: disable_query_log=0; break;
|
||||||
case Q_DISABLE_QUERY_LOG: disable_query_log=1; break;
|
case Q_DISABLE_QUERY_LOG: disable_query_log=1; break;
|
||||||
case Q_ENABLE_ABORT_ON_ERROR: disable_abort_on_error=0; break;
|
case Q_ENABLE_ABORT_ON_ERROR: abort_on_error=1; break;
|
||||||
case Q_DISABLE_ABORT_ON_ERROR: disable_abort_on_error=1; break;
|
case Q_DISABLE_ABORT_ON_ERROR: abort_on_error=0; break;
|
||||||
case Q_ENABLE_RESULT_LOG: disable_result_log=0; break;
|
case Q_ENABLE_RESULT_LOG: disable_result_log=0; break;
|
||||||
case Q_DISABLE_RESULT_LOG: disable_result_log=1; break;
|
case Q_DISABLE_RESULT_LOG: disable_result_log=1; break;
|
||||||
case Q_ENABLE_WARNINGS: disable_warnings=0; break;
|
case Q_ENABLE_WARNINGS: disable_warnings=0; break;
|
||||||
|
@ -282,13 +282,7 @@ void my_net_local_init(NET *net);
|
|||||||
void net_end(NET *net);
|
void net_end(NET *net);
|
||||||
void net_clear(NET *net);
|
void net_clear(NET *net);
|
||||||
my_bool net_realloc(NET *net, unsigned long length);
|
my_bool net_realloc(NET *net, unsigned long length);
|
||||||
|
|
||||||
#ifndef EMBEDDED_LIBRARY /* To be removed by HF */
|
|
||||||
my_bool net_flush(NET *net);
|
my_bool net_flush(NET *net);
|
||||||
#else
|
|
||||||
#define net_flush(A)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
my_bool my_net_write(NET *net,const char *packet,unsigned long len);
|
my_bool my_net_write(NET *net,const char *packet,unsigned long len);
|
||||||
my_bool net_write_command(NET *net,unsigned char command,
|
my_bool net_write_command(NET *net,unsigned char command,
|
||||||
const char *header, unsigned long head_len,
|
const char *header, unsigned long head_len,
|
||||||
|
@ -7,11 +7,6 @@ otto
|
|||||||
select otto from (select 1 as otto) as t1;
|
select otto from (select 1 as otto) as t1;
|
||||||
otto
|
otto
|
||||||
1
|
1
|
||||||
select otto from (select 1 as otto) as t1;
|
|
||||||
otto
|
|
||||||
1
|
|
||||||
select friedrich from (select 1 as otto) as t1;
|
|
||||||
ERROR 42S22: Unknown column 'friedrich' in 'field list'
|
|
||||||
select friedrich from (select 1 as otto) as t1;
|
select friedrich from (select 1 as otto) as t1;
|
||||||
ERROR 42S22: Unknown column 'friedrich' in 'field list'
|
ERROR 42S22: Unknown column 'friedrich' in 'field list'
|
||||||
select otto from (select 1 as otto) as t1;
|
select otto from (select 1 as otto) as t1;
|
||||||
@ -147,5 +142,3 @@ after_--enable_abort_on_error
|
|||||||
1064
|
1064
|
||||||
select 3 from t1 ;
|
select 3 from t1 ;
|
||||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||||
select 3 from t1 ;
|
|
||||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
--disable_result_log
|
--disable_result_log
|
||||||
--exec $TESTS_BINDIR/client_test --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT
|
--exec $TESTS_BINDIR/client_test --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT --silent
|
||||||
|
@ -5,7 +5,8 @@
|
|||||||
select 1+2/*hello*/+3;
|
select 1+2/*hello*/+3;
|
||||||
select 1 /* long
|
select 1 /* long
|
||||||
multi line comment */;
|
multi line comment */;
|
||||||
!$1065 ;
|
--error 1065
|
||||||
|
;
|
||||||
select 1 /*!32301 +1 */;
|
select 1 /*!32301 +1 */;
|
||||||
select 1 /*!52301 +1 */;
|
select 1 /*!52301 +1 */;
|
||||||
select 1--1;
|
select 1--1;
|
||||||
|
@ -34,11 +34,14 @@ explain select t1.*,t2.* from t1 left join t2 on t1.a=t2.a where isnull(t2.a)=1;
|
|||||||
select t1.*,t2.*,t3.a from t1 left join t2 on (t1.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
|
select t1.*,t2.*,t3.a from t1 left join t2 on (t1.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
|
||||||
|
|
||||||
# The next query should rearange the left joins to get this to work
|
# The next query should rearange the left joins to get this to work
|
||||||
!$1120 explain select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
--error 1120
|
||||||
!$1120 select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
explain select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
||||||
|
--error 1120
|
||||||
|
select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
||||||
|
|
||||||
# The next query should give an error in MySQL
|
# The next query should give an error in MySQL
|
||||||
!$1120 select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
|
--error 1120
|
||||||
|
select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
|
||||||
|
|
||||||
# Test of inner join
|
# Test of inner join
|
||||||
select t1.*,t2.* from t1 inner join t2 using (a);
|
select t1.*,t2.* from t1 inner join t2 using (a);
|
||||||
@ -94,7 +97,8 @@ WHERE t1.uniq_id = 4
|
|||||||
ORDER BY t2.c_amount;
|
ORDER BY t2.c_amount;
|
||||||
|
|
||||||
INSERT INTO t2 VALUES (2,3,3000,6000,0,0,746584,837484,'yes');
|
INSERT INTO t2 VALUES (2,3,3000,6000,0,0,746584,837484,'yes');
|
||||||
!$1062 INSERT INTO t2 VALUES (2,3,3000,6000,0,0,746584,837484,'yes');
|
--error 1062
|
||||||
|
INSERT INTO t2 VALUES (2,3,3000,6000,0,0,746584,837484,'yes');
|
||||||
INSERT INTO t2 VALUES (7,3,1000,2000,0,0,746294,937484,'yes');
|
INSERT INTO t2 VALUES (7,3,1000,2000,0,0,746294,937484,'yes');
|
||||||
|
|
||||||
#3rd select should show that one record is returned with null entries for the
|
#3rd select should show that one record is returned with null entries for the
|
||||||
@ -288,7 +292,8 @@ insert into t3 values (1);
|
|||||||
insert into t4 values (1,1);
|
insert into t4 values (1,1);
|
||||||
insert into t5 values (1,1);
|
insert into t5 values (1,1);
|
||||||
|
|
||||||
!$1120 explain select * from t3 left join t4 on t4.seq_1_id = t2.t2_id left join t1 on t1.t1_id = t4.seq_0_id left join t5 on t5.seq_0_id = t1.t1_id left join t2 on t2.t2_id = t5.seq_1_id where t3.t3_id = 23;
|
--error 1120
|
||||||
|
explain select * from t3 left join t4 on t4.seq_1_id = t2.t2_id left join t1 on t1.t1_id = t4.seq_0_id left join t5 on t5.seq_0_id = t1.t1_id left join t2 on t2.t2_id = t5.seq_1_id where t3.t3_id = 23;
|
||||||
|
|
||||||
drop table t1,t2,t3,t4,t5;
|
drop table t1,t2,t3,t4,t5;
|
||||||
|
|
||||||
|
@ -146,7 +146,8 @@ create table t1
|
|||||||
);
|
);
|
||||||
INSERT INTO t1 VALUES (1, 1, 1, 1, 'a');
|
INSERT INTO t1 VALUES (1, 1, 1, 1, 'a');
|
||||||
INSERT INTO t1 VALUES (1, 1, 1, 1, 'b');
|
INSERT INTO t1 VALUES (1, 1, 1, 1, 'b');
|
||||||
!$1062 INSERT INTO t1 VALUES (1, 1, 1, 1, 'a');
|
--error 1062
|
||||||
|
INSERT INTO t1 VALUES (1, 1, 1, 1, 'a');
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -20,12 +20,10 @@ eval select $mysql_errno as "before_use_test" ;
|
|||||||
|
|
||||||
select otto from (select 1 as otto) as t1;
|
select otto from (select 1 as otto) as t1;
|
||||||
# expectation = response
|
# expectation = response
|
||||||
!$0 select otto from (select 1 as otto) as t1;
|
|
||||||
--error 0
|
--error 0
|
||||||
select otto from (select 1 as otto) as t1;
|
select otto from (select 1 as otto) as t1;
|
||||||
|
|
||||||
# expectation <> response
|
# expectation <> response
|
||||||
-- // !$1054 select otto from (select 1 as otto) as t1;
|
|
||||||
-- // --error 1054
|
-- // --error 1054
|
||||||
-- // select otto from (select 1 as otto) as t1;
|
-- // select otto from (select 1 as otto) as t1;
|
||||||
|
|
||||||
@ -38,12 +36,10 @@ select otto from (select 1 as otto) as t1;
|
|||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
# expectation <> response
|
# expectation <> response
|
||||||
#!$0 select friedrich from (select 1 as otto) as t1;
|
|
||||||
#--error 0
|
#--error 0
|
||||||
#select friedrich from (select 1 as otto) as t1;
|
#select friedrich from (select 1 as otto) as t1;
|
||||||
|
|
||||||
# expectation = response
|
# expectation = response
|
||||||
!$1054 select friedrich from (select 1 as otto) as t1;
|
|
||||||
--error 1054
|
--error 1054
|
||||||
select friedrich from (select 1 as otto) as t1;
|
select friedrich from (select 1 as otto) as t1;
|
||||||
|
|
||||||
@ -94,130 +90,130 @@ select friedrich from (select 1 as otto) as t1;
|
|||||||
#
|
#
|
||||||
# The following test cases often initialize $mysql_errno to 1064 by
|
# The following test cases often initialize $mysql_errno to 1064 by
|
||||||
# a command with wrong syntax.
|
# a command with wrong syntax.
|
||||||
# Example: !$1064 To prevent the abort after the error.
|
# Example: --error 1064 To prevent the abort after the error.
|
||||||
# garbage ;
|
# garbage ;
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 1. check mysql_errno = 0 after successful statement
|
# check mysql_errno = 0 after successful statement
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
select otto from (select 1 as otto) as t1;
|
select otto from (select 1 as otto) as t1;
|
||||||
eval select $mysql_errno as "after_successful_stmt_errno" ;
|
eval select $mysql_errno as "after_successful_stmt_errno" ;
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# 2. check mysql_errno = 1064 after statement with wrong syntax
|
# check mysql_errno = 1064 after statement with wrong syntax
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
eval select $mysql_errno as "after_wrong_syntax_errno" ;
|
eval select $mysql_errno as "after_wrong_syntax_errno" ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 3. check if let $my_var= 'abc' ; affects $mysql_errno
|
# check if let $my_var= 'abc' ; affects $mysql_errno
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
let $my_var= 'abc' ;
|
let $my_var= 'abc' ;
|
||||||
eval select $mysql_errno as "after_let_var_equal_value" ;
|
eval select $mysql_errno as "after_let_var_equal_value" ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 4. check if set @my_var= 'abc' ; affects $mysql_errno
|
# check if set @my_var= 'abc' ; affects $mysql_errno
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
set @my_var= 'abc' ;
|
set @my_var= 'abc' ;
|
||||||
eval select $mysql_errno as "after_set_var_equal_value" ;
|
eval select $mysql_errno as "after_set_var_equal_value" ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 5. check if the setting of --disable-warnings itself affects $mysql_errno
|
# check if the setting of --disable-warnings itself affects $mysql_errno
|
||||||
# (May be --<whatever> modifies $mysql_errno.)
|
# (May be --<whatever> modifies $mysql_errno.)
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
eval select $mysql_errno as "after_disable_warnings_command" ;
|
eval select $mysql_errno as "after_disable_warnings_command" ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 6. check if --disable-warnings + command with warning affects the errno
|
# check if --disable-warnings + command with warning affects the errno
|
||||||
# stored within $mysql_errno
|
# stored within $mysql_errno
|
||||||
# (May be disabled warnings affect $mysql_errno.)
|
# (May be disabled warnings affect $mysql_errno.)
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
drop table if exists t1 ;
|
drop table if exists t1 ;
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
drop table if exists t1 ;
|
drop table if exists t1 ;
|
||||||
eval select $mysql_errno as "after_disable_warnings" ;
|
eval select $mysql_errno as "after_disable_warnings" ;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 7. check if masked errors affect $mysql_errno
|
# check if masked errors affect $mysql_errno
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
--error 1146
|
--error 1146
|
||||||
select 3 from t1 ;
|
select 3 from t1 ;
|
||||||
eval select $mysql_errno as "after_minus_masked" ;
|
eval select $mysql_errno as "after_minus_masked" ;
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
!$1146
|
--error 1146
|
||||||
select 3 from t1 ;
|
select 3 from t1 ;
|
||||||
eval select $mysql_errno as "after_!_masked" ;
|
eval select $mysql_errno as "after_!_masked" ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 8. Will manipulations of $mysql_errno be possible and visible ?
|
# Will manipulations of $mysql_errno be possible and visible ?
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
let $mysql_errno= -1;
|
let $mysql_errno= -1;
|
||||||
eval select $mysql_errno as "after_let_errno_equal_value" ;
|
eval select $mysql_errno as "after_let_errno_equal_value" ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 9. How affect actions on prepared statements $mysql_errno ?
|
# How affect actions on prepared statements $mysql_errno ?
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# failing prepare
|
# failing prepare
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
!$1146
|
--error 1146
|
||||||
prepare stmt from "select 3 from t1" ;
|
prepare stmt from "select 3 from t1" ;
|
||||||
eval select $mysql_errno as "after_failing_prepare" ;
|
eval select $mysql_errno as "after_failing_prepare" ;
|
||||||
create table t1 ( f1 char(10));
|
create table t1 ( f1 char(10));
|
||||||
|
|
||||||
# successful prepare
|
# successful prepare
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
prepare stmt from "select 3 from t1" ;
|
prepare stmt from "select 3 from t1" ;
|
||||||
eval select $mysql_errno as "after_successful_prepare" ;
|
eval select $mysql_errno as "after_successful_prepare" ;
|
||||||
|
|
||||||
# successful execute
|
# successful execute
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
execute stmt;
|
execute stmt;
|
||||||
eval select $mysql_errno as "after_successful_execute" ;
|
eval select $mysql_errno as "after_successful_execute" ;
|
||||||
|
|
||||||
# failing execute (table dropped)
|
# failing execute (table dropped)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
!$1146
|
--error 1146
|
||||||
execute stmt;
|
execute stmt;
|
||||||
eval select $mysql_errno as "after_failing_execute" ;
|
eval select $mysql_errno as "after_failing_execute" ;
|
||||||
|
|
||||||
# failing execute (unknown statement)
|
# failing execute (unknown statement)
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
!$1243
|
--error 1243
|
||||||
execute __stmt_;
|
execute __stmt_;
|
||||||
eval select $mysql_errno as "after_failing_execute" ;
|
eval select $mysql_errno as "after_failing_execute" ;
|
||||||
|
|
||||||
# successful deallocate
|
# successful deallocate
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
deallocate prepare stmt;
|
deallocate prepare stmt;
|
||||||
eval select $mysql_errno as "after_successful_deallocate" ;
|
eval select $mysql_errno as "after_successful_deallocate" ;
|
||||||
|
|
||||||
# failing deallocate ( statement handle does not exist )
|
# failing deallocate ( statement handle does not exist )
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
!$1243
|
--error 1243
|
||||||
deallocate prepare __stmt_;
|
deallocate prepare __stmt_;
|
||||||
eval select $mysql_errno as "after_failing_deallocate" ;
|
eval select $mysql_errno as "after_failing_deallocate" ;
|
||||||
|
|
||||||
@ -231,7 +227,7 @@ eval select $mysql_errno as "after_failing_deallocate" ;
|
|||||||
# The default is "--enable_abort_on_error".
|
# The default is "--enable_abort_on_error".
|
||||||
#
|
#
|
||||||
# "Maskings" are
|
# "Maskings" are
|
||||||
# !$<error number> and --error <error number>
|
# --error <error number> and --error <error number>
|
||||||
# in the line before the failing statement.
|
# in the line before the failing statement.
|
||||||
#
|
#
|
||||||
# There are some additional test case for $mysql_errno
|
# There are some additional test case for $mysql_errno
|
||||||
@ -240,58 +236,53 @@ eval select $mysql_errno as "after_failing_deallocate" ;
|
|||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 1. Switch the abort on error off and check the effect on $mysql_errno
|
# Switch the abort on error off and check the effect on $mysql_errno
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
--disable_abort_on_error
|
--disable_abort_on_error
|
||||||
eval select $mysql_errno as "after_--disable_abort_on_error" ;
|
eval select $mysql_errno as "after_--disable_abort_on_error" ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 2. "unmasked" failing statement should not cause an abort
|
# "unmasked" failing statement should not cause an abort
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
select 3 from t1 ;
|
select 3 from t1 ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 3. masked failing statements
|
# masked failing statements
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# expected error = response
|
# expected error = response
|
||||||
--error 1146
|
--error 1146
|
||||||
select 3 from t1 ;
|
select 3 from t1 ;
|
||||||
!$1146
|
--error 1146
|
||||||
select 3 from t1 ;
|
select 3 from t1 ;
|
||||||
eval select $mysql_errno as "after_!errno_masked_error" ;
|
eval select $mysql_errno as "after_!errno_masked_error" ;
|
||||||
# expected error <> response
|
# expected error <> response
|
||||||
# --error 1000
|
# --error 1000
|
||||||
# select 3 from t1 ;
|
# select 3 from t1 ;
|
||||||
# !$1000
|
# --error 1000
|
||||||
# select 3 from t1 ;
|
# select 3 from t1 ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 4. Switch the abort on error on and check the effect on $mysql_errno
|
# Switch the abort on error on and check the effect on $mysql_errno
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
!$1064
|
--error 1064
|
||||||
garbage ;
|
garbage ;
|
||||||
--enable_abort_on_error
|
--enable_abort_on_error
|
||||||
eval select $mysql_errno as "after_--enable_abort_on_error" ;
|
eval select $mysql_errno as "after_--enable_abort_on_error" ;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 5. masked failing statements
|
# masked failing statements
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# expected error = response
|
# expected error = response
|
||||||
--error 1146
|
--error 1146
|
||||||
select 3 from t1 ;
|
select 3 from t1 ;
|
||||||
!$1146
|
|
||||||
select 3 from t1 ;
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# 6. check that the old default behaviour is not changed
|
# check that the old default behaviour is not changed
|
||||||
# Please remove the '#' to get the abort on error
|
# Please remove the '#' to get the abort on error
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
#--error 1064
|
#--error 1064
|
||||||
#select 3 from t1 ;
|
#select 3 from t1 ;
|
||||||
#
|
#
|
||||||
#!$1064
|
|
||||||
#select 3 from t1 ;
|
|
||||||
#
|
|
||||||
#select 3 from t1 ;
|
#select 3 from t1 ;
|
||||||
|
@ -21,7 +21,8 @@ check table t1 changed;
|
|||||||
check table t1 medium;
|
check table t1 medium;
|
||||||
check table t1 extended;
|
check table t1 extended;
|
||||||
show index from t1;
|
show index from t1;
|
||||||
!$1062 insert into t1 values (5,5,5);
|
--error 1062
|
||||||
|
insert into t1 values (5,5,5);
|
||||||
optimize table t1;
|
optimize table t1;
|
||||||
optimize table t1;
|
optimize table t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -20,8 +20,10 @@ create TEMPORARY TABLE t2 engine=heap select * from t1;
|
|||||||
create TEMPORARY TABLE IF NOT EXISTS t2 (a int) engine=heap;
|
create TEMPORARY TABLE IF NOT EXISTS t2 (a int) engine=heap;
|
||||||
|
|
||||||
# This should give errors
|
# This should give errors
|
||||||
!$1050 CREATE TEMPORARY TABLE t1 (a int not null, b char (10) not null);
|
--error 1050
|
||||||
!$1050 ALTER TABLE t1 RENAME t2;
|
CREATE TEMPORARY TABLE t1 (a int not null, b char (10) not null);
|
||||||
|
--error 1050
|
||||||
|
ALTER TABLE t1 RENAME t2;
|
||||||
|
|
||||||
select * from t2;
|
select * from t2;
|
||||||
alter table t2 add primary key (a,b);
|
alter table t2 add primary key (a,b);
|
||||||
|
@ -135,7 +135,8 @@ drop table t1,t2;
|
|||||||
create table t1 (c int);
|
create table t1 (c int);
|
||||||
insert into t1 values(1),(2);
|
insert into t1 values(1),(2);
|
||||||
create table t2 select * from t1;
|
create table t2 select * from t1;
|
||||||
!$1060 create table t3 select * from t1, t2; # Should give an error
|
--error 1060
|
||||||
|
create table t3 select * from t1, t2; # Should give an error
|
||||||
create table t3 select t1.c AS c1, t2.c AS c2,1 as "const" from t1, t2;
|
create table t3 select t1.c AS c1, t2.c AS c2,1 as "const" from t1, t2;
|
||||||
show full columns from t3;
|
show full columns from t3;
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
@ -5026,12 +5026,12 @@ The minimum value for this variable is 4096.",
|
|||||||
"Persistent buffer for query parsing and execution",
|
"Persistent buffer for query parsing and execution",
|
||||||
(gptr*) &global_system_variables.query_prealloc_size,
|
(gptr*) &global_system_variables.query_prealloc_size,
|
||||||
(gptr*) &max_system_variables.query_prealloc_size, 0, GET_ULONG,
|
(gptr*) &max_system_variables.query_prealloc_size, 0, GET_ULONG,
|
||||||
REQUIRED_ARG, QUERY_ALLOC_PREALLOC_SIZE, 1024, ~0L, 0, 1024, 0},
|
REQUIRED_ARG, QUERY_ALLOC_PREALLOC_SIZE, 16384, ~0L, 0, 1024, 0},
|
||||||
{"range_alloc_block_size", OPT_RANGE_ALLOC_BLOCK_SIZE,
|
{"range_alloc_block_size", OPT_RANGE_ALLOC_BLOCK_SIZE,
|
||||||
"Allocation block size for storing ranges during optimization",
|
"Allocation block size for storing ranges during optimization",
|
||||||
(gptr*) &global_system_variables.range_alloc_block_size,
|
(gptr*) &global_system_variables.range_alloc_block_size,
|
||||||
(gptr*) &max_system_variables.range_alloc_block_size, 0, GET_ULONG,
|
(gptr*) &max_system_variables.range_alloc_block_size, 0, GET_ULONG,
|
||||||
REQUIRED_ARG, RANGE_ALLOC_BLOCK_SIZE, 1024, ~0L, 0, 1024, 0},
|
REQUIRED_ARG, RANGE_ALLOC_BLOCK_SIZE, 4096, ~0L, 0, 1024, 0},
|
||||||
{"read_buffer_size", OPT_RECORD_BUFFER,
|
{"read_buffer_size", OPT_RECORD_BUFFER,
|
||||||
"Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value.",
|
"Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value.",
|
||||||
(gptr*) &global_system_variables.read_buff_size,
|
(gptr*) &global_system_variables.read_buff_size,
|
||||||
|
@ -53,19 +53,9 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
|
||||||
#undef MYSQL_SERVER
|
#undef MYSQL_SERVER
|
||||||
|
#undef MYSQL_CLIENT
|
||||||
#ifndef MYSQL_CLIENT
|
|
||||||
#define MYSQL_CLIENT
|
#define MYSQL_CLIENT
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef net_flush
|
|
||||||
|
|
||||||
extern "C" {
|
|
||||||
my_bool net_flush(NET *net);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /*EMBEDDED_LIBRARY */
|
#endif /*EMBEDDED_LIBRARY */
|
||||||
|
|
||||||
|
|
||||||
|
@ -470,6 +470,15 @@ void Protocol::init(THD *thd_arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Protocol::flush()
|
||||||
|
{
|
||||||
|
#ifndef EMBEDDED_LIBRARY
|
||||||
|
return net_flush(&thd->net);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Send name and type of result to client.
|
Send name and type of result to client.
|
||||||
|
|
||||||
|
@ -75,6 +75,7 @@ public:
|
|||||||
field_count=item_list->elements;
|
field_count=item_list->elements;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
virtual bool flush();
|
||||||
virtual void prepare_for_resend()=0;
|
virtual void prepare_for_resend()=0;
|
||||||
|
|
||||||
virtual bool store_null()=0;
|
virtual bool store_null()=0;
|
||||||
|
@ -153,6 +153,8 @@ static bool send_prep_stmt(Prepared_statement *stmt, uint columns)
|
|||||||
{
|
{
|
||||||
NET *net= &stmt->thd->net;
|
NET *net= &stmt->thd->net;
|
||||||
char buff[9];
|
char buff[9];
|
||||||
|
DBUG_ENTER("send_prep_stmt");
|
||||||
|
|
||||||
buff[0]= 0; /* OK packet indicator */
|
buff[0]= 0; /* OK packet indicator */
|
||||||
int4store(buff+1, stmt->id);
|
int4store(buff+1, stmt->id);
|
||||||
int2store(buff+5, columns);
|
int2store(buff+5, columns);
|
||||||
@ -161,12 +163,11 @@ static bool send_prep_stmt(Prepared_statement *stmt, uint columns)
|
|||||||
Send types and names of placeholders to the client
|
Send types and names of placeholders to the client
|
||||||
XXX: fix this nasty upcast from List<Item_param> to List<Item>
|
XXX: fix this nasty upcast from List<Item_param> to List<Item>
|
||||||
*/
|
*/
|
||||||
return my_net_write(net, buff, sizeof(buff)) ||
|
DBUG_RETURN(my_net_write(net, buff, sizeof(buff)) ||
|
||||||
(stmt->param_count &&
|
(stmt->param_count &&
|
||||||
stmt->thd->protocol_simple.send_fields((List<Item> *)
|
stmt->thd->protocol_simple.send_fields((List<Item> *)
|
||||||
&stmt->lex->param_list, 0)) ||
|
&stmt->lex->param_list,
|
||||||
net_flush(net);
|
0)));
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static bool send_prep_stmt(Prepared_statement *stmt,
|
static bool send_prep_stmt(Prepared_statement *stmt,
|
||||||
@ -1088,7 +1089,7 @@ static int mysql_test_select(Prepared_statement *stmt,
|
|||||||
{
|
{
|
||||||
if (lex->describe)
|
if (lex->describe)
|
||||||
{
|
{
|
||||||
if (send_prep_stmt(stmt, 0))
|
if (send_prep_stmt(stmt, 0) || thd->protocol->flush())
|
||||||
goto err_prep;
|
goto err_prep;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1106,11 +1107,8 @@ static int mysql_test_select(Prepared_statement *stmt,
|
|||||||
prepared in unit->prepare call above.
|
prepared in unit->prepare call above.
|
||||||
*/
|
*/
|
||||||
if (send_prep_stmt(stmt, lex->result->field_count(fields)) ||
|
if (send_prep_stmt(stmt, lex->result->field_count(fields)) ||
|
||||||
lex->result->send_fields(fields, 0)
|
lex->result->send_fields(fields, 0) ||
|
||||||
#ifndef EMBEDDED_LIBRARY
|
thd->protocol->flush())
|
||||||
|| net_flush(&thd->net)
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
goto err_prep;
|
goto err_prep;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1389,7 +1387,6 @@ static int send_prepare_results(Prepared_statement *stmt, bool text_protocol)
|
|||||||
enum enum_sql_command sql_command= lex->sql_command;
|
enum enum_sql_command sql_command= lex->sql_command;
|
||||||
int res= 0;
|
int res= 0;
|
||||||
DBUG_ENTER("send_prepare_results");
|
DBUG_ENTER("send_prepare_results");
|
||||||
|
|
||||||
DBUG_PRINT("enter",("command: %d, param_count: %ld",
|
DBUG_PRINT("enter",("command: %d, param_count: %ld",
|
||||||
sql_command, stmt->param_count));
|
sql_command, stmt->param_count));
|
||||||
|
|
||||||
@ -1475,7 +1472,8 @@ static int send_prepare_results(Prepared_statement *stmt, bool text_protocol)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
if (res == 0)
|
if (res == 0)
|
||||||
DBUG_RETURN(text_protocol? 0 : send_prep_stmt(stmt, 0));
|
DBUG_RETURN(text_protocol? 0 : (send_prep_stmt(stmt, 0) ||
|
||||||
|
thd->protocol->flush()));
|
||||||
error:
|
error:
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
send_error(thd, thd->killed ? ER_SERVER_SHUTDOWN : 0);
|
send_error(thd, thd->killed ? ER_SERVER_SHUTDOWN : 0);
|
||||||
|
@ -1081,7 +1081,7 @@ mysqld_list_fields(THD *thd, TABLE_LIST *table_list, const char *wild)
|
|||||||
restore_record(table,default_values); // Get empty record
|
restore_record(table,default_values); // Get empty record
|
||||||
if (thd->protocol->send_fields(&field_list,2))
|
if (thd->protocol->send_fields(&field_list,2))
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
net_flush(&thd->net);
|
thd->protocol->flush();
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1098,13 +1098,11 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd)
|
|||||||
if (store_create_info(thd, table, packet))
|
if (store_create_info(thd, table, packet))
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
|
|
||||||
//if (protocol->convert)
|
|
||||||
// protocol->convert->convert((char*) packet->ptr(), packet->length());
|
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
{
|
{
|
||||||
if (protocol->write())
|
if (protocol->write())
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
net_flush(&thd->net);
|
protocol->flush();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
1105
tests/client_test.c
1105
tests/client_test.c
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user