@ -16750,7 +16750,11 @@ static void test_bug43560(void)
fprintf ( stdout , " Skipping test_bug43560: server not DEBUG version \n " ) ;
DBUG_VOID_RETURN ;
}
if ( opt_unix_socket )
{
fprintf ( stdout , " Skipping test_bug43560: connected via UNIX socket \n " ) ;
DBUG_VOID_RETURN ;
}
/*
Set up a separate connection for this test to avoid messing up the
general MYSQL object used in other subtests . Use TCP protocol to avoid
@ -17541,6 +17545,109 @@ static void test_bug13001491()
myquery ( rc ) ;
}
static void test_mdev4326 ( )
{
MYSQL_STMT * stmt ;
MYSQL_BIND bind ;
char query [ ] = " SELECT * FROM mysql.user LIMIT ? " ;
char str_data [ ] = " 1 " ;
unsigned long length = 0 ;
int int_data = 1 ;
int rc , count ;
my_bool is_null = 0 ;
my_bool error = 0 ;
myheader ( " test_mdev4326 " ) ;
rc = mysql_change_user ( mysql , opt_user , opt_password , " mysql " ) ;
myquery ( rc ) ;
rc = mysql_query ( mysql , " SET GLOBAL general_log = 1 " ) ;
myquery ( rc ) ;
stmt = mysql_stmt_init ( mysql ) ;
check_stmt ( stmt ) ;
/* Numeric parameter test */
rc = mysql_stmt_prepare ( stmt , query , strlen ( query ) ) ;
check_execute ( stmt , rc ) ;
check_stmt ( stmt ) ;
verify_param_count ( stmt , 1 ) ;
memset ( ( char * ) & bind , 0 , sizeof ( bind ) ) ;
bind . buffer_type = MYSQL_TYPE_LONG ;
bind . buffer = ( char * ) & int_data ;
bind . is_null = & is_null ;
bind . length = & length ;
bind . error = & error ;
rc = mysql_stmt_bind_param ( stmt , & bind ) ;
check_execute ( stmt , rc ) ;
rc = mysql_stmt_execute ( stmt ) ;
check_execute ( stmt , rc ) ;
count = 0 ;
while ( ! ( rc = mysql_stmt_fetch ( stmt ) ) )
count + + ;
DIE_UNLESS ( count = = 1 ) ;
rc = mysql_stmt_execute ( stmt ) ;
check_execute ( stmt , rc ) ;
count = 0 ;
while ( ! ( rc = mysql_stmt_fetch ( stmt ) ) )
count + + ;
DIE_UNLESS ( count = = 1 ) ;
int_data = 0 ;
rc = mysql_stmt_execute ( stmt ) ;
check_execute ( stmt , rc ) ;
count = 0 ;
while ( ! ( rc = mysql_stmt_fetch ( stmt ) ) )
count + + ;
DIE_UNLESS ( count = = 0 ) ;
rc = mysql_stmt_close ( stmt ) ;
check_execute ( stmt , rc ) ;
/* String parameter test */
stmt = mysql_stmt_init ( mysql ) ;
rc = mysql_stmt_prepare ( stmt , query , strlen ( query ) ) ;
check_execute ( stmt , rc ) ;
check_stmt ( stmt ) ;
verify_param_count ( stmt , 1 ) ;
memset ( ( char * ) & bind , 0 , sizeof ( bind ) ) ;
bind . buffer_type = MYSQL_TYPE_STRING ;
bind . buffer = ( char * ) str_data ;
length = bind . buffer_length = sizeof ( str_data ) ;
bind . is_null = & is_null ;
bind . length = & length ;
bind . error = & error ;
rc = mysql_stmt_bind_param ( stmt , & bind ) ;
check_execute ( stmt , rc ) ;
rc = mysql_stmt_execute ( stmt ) ;
check_execute ( stmt , rc ) ;
count = 0 ;
while ( ! ( rc = mysql_stmt_fetch ( stmt ) ) )
count + + ;
DIE_UNLESS ( count = = 1 ) ;
rc = mysql_stmt_execute ( stmt ) ;
check_execute ( stmt , rc ) ;
count = 0 ;
while ( ! ( rc = mysql_stmt_fetch ( stmt ) ) )
count + + ;
DIE_UNLESS ( count = = 1 ) ;
str_data [ 0 ] = ' 0 ' ;
rc = mysql_stmt_execute ( stmt ) ;
check_execute ( stmt , rc ) ;
count = 0 ;
while ( ! ( rc = mysql_stmt_fetch ( stmt ) ) )
count + + ;
DIE_UNLESS ( count = = 0 ) ;
rc = mysql_stmt_close ( stmt ) ;
check_execute ( stmt , rc ) ;
rc = mysql_change_user ( mysql , opt_user , opt_password , current_db ) ;
myquery ( rc ) ;
}
static struct my_tests_st my_tests [ ] = {
{ " disable_query_logs " , disable_query_logs } ,
@ -17790,6 +17897,7 @@ static struct my_tests_st my_tests[]= {
{ " test_bug58036 " , test_bug58036 } ,
{ " test_bug56976 " , test_bug56976 } ,
{ " test_bug13001491 " , test_bug13001491 } ,
{ " test_mdev4326 " , test_mdev4326 } ,
{ 0 , 0 }
} ;