diff options
-rw-r--r-- | sql/sql_prepare.cc | 6 | ||||
-rw-r--r-- | tests/mysql_client_test.c | 35 |
2 files changed, 39 insertions, 2 deletions
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 11274fbbaa2..92137b30f77 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -825,8 +825,10 @@ static void setup_one_conversion_function(THD *thd, Item_param *param, */ inline bool is_param_long_data_type(Item_param *param) { - return ((param->field_type() >= MYSQL_TYPE_TINY_BLOB) && - (param->field_type() <= MYSQL_TYPE_STRING)); + enum_field_types field_type= param->field_type(); + return (((field_type >= MYSQL_TYPE_TINY_BLOB) && + (field_type <= MYSQL_TYPE_STRING)) || + field_type == MYSQL_TYPE_VARCHAR); } diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index fc3e5470ddd..383036ff092 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -19531,6 +19531,40 @@ static void test_prepare_analyze() check_execute(stmt, rc); } +static void test_mdev12579() +{ + MYSQL_STMT *stmt= mysql_stmt_init(mysql); + MYSQL_BIND bind[2]; + int rc; + long l=3; + const char *data = "123456"; + + rc= mysql_query(mysql, "CREATE TABLE mdev12579 (k integer,t LONGTEXT,b LONGBLOB,x integer)"); + myquery(rc); + + rc= mysql_stmt_prepare(stmt, "INSERT INTO mdev12579 VALUES (1,?,NULL,?)", -1); + myquery(rc); + + rc= mysql_stmt_send_long_data(stmt, 0, data, 6); + rc= mysql_stmt_send_long_data(stmt, 0, data, 6); + rc= mysql_stmt_send_long_data(stmt, 0, data, 6); + + memset(bind, 0, sizeof(MYSQL_BIND) * 2); + bind[0].buffer_type= MYSQL_TYPE_VAR_STRING; + bind[1].buffer_type= MYSQL_TYPE_LONG; + bind[1].buffer= &l; + mysql_stmt_bind_param(stmt, bind); + + rc= mysql_stmt_execute(stmt); + check_execute(stmt, rc); + + mysql_stmt_close(stmt); + + rc= mysql_query(mysql, "DROP TABLE mdev12579"); + myquery(rc); +} + + static struct my_tests_st my_tests[]= { { "disable_query_logs", disable_query_logs }, { "test_view_sp_list_fields", test_view_sp_list_fields }, @@ -19808,6 +19842,7 @@ static struct my_tests_st my_tests[]= { { "test_compressed_protocol", test_compressed_protocol }, { "test_big_packet", test_big_packet }, { "test_prepare_analyze", test_prepare_analyze }, + { "test_mdev12579", test_mdev12579 }, { 0, 0 } }; |