diff options
author | konstantin@mysql.com <> | 2006-01-19 14:01:20 +0300 |
---|---|---|
committer | konstantin@mysql.com <> | 2006-01-19 14:01:20 +0300 |
commit | 37c9e9e3756c29dbde3b2a393ffa14edbe0e769f (patch) | |
tree | 68f47a7192f53a37a9423a494265c71ad23807e4 /tests | |
parent | 82f96a4a4f20d004652eb45a5ad563de188be34a (diff) | |
parent | 4ca48591f154b625bdeb2c29bd2c52bfc4d04d04 (diff) | |
download | mariadb-git-37c9e9e3756c29dbde3b2a393ffa14edbe0e769f.tar.gz |
Merge mysql.com:/opt/local/work/mysql-4.1-15613
into mysql.com:/opt/local/work/mysql-5.0-root
Diffstat (limited to 'tests')
-rw-r--r-- | tests/mysql_client_test.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index c4da624537d..eb0a7ade390 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -14638,7 +14638,70 @@ static void test_bug16144() mysql_stmt_attr_set(stmt, STMT_ATTR_UPDATE_MAX_LENGTH, (const void*) &flag); mysql_stmt_attr_get(stmt, STMT_ATTR_UPDATE_MAX_LENGTH, (void*) &flag); DIE_UNLESS(flag == flag_orig); + mysql_stmt_close(stmt); +} + +/* + Bug #15613: "libmysqlclient API function mysql_stmt_prepare returns wrong + field length" +*/ + +static void test_bug15613() +{ + MYSQL_STMT *stmt; + const char *stmt_text; + MYSQL_RES *metadata; + MYSQL_FIELD *field; + int rc; + myheader("test_bug15613"); + /* I. Prepare the table */ + rc= mysql_query(mysql, "set names latin1"); + myquery(rc); + mysql_query(mysql, "drop table if exists t1"); + rc= mysql_query(mysql, + "create table t1 (t text character set utf8, " + "tt tinytext character set utf8, " + "mt mediumtext character set utf8, " + "lt longtext character set utf8, " + "vl varchar(255) character set latin1," + "vb varchar(255) character set binary," + "vu varchar(255) character set utf8)"); + myquery(rc); + + stmt= mysql_stmt_init(mysql); + + /* II. Check SELECT metadata */ + stmt_text= ("select t, tt, mt, lt, vl, vb, vu from t1"); + rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text)); + metadata= mysql_stmt_result_metadata(stmt); + field= mysql_fetch_fields(metadata); + if (!opt_silent) + { + printf("Field lengths (client character set is latin1):\n" + "text character set utf8:\t\t%lu\n" + "tinytext character set utf8:\t\t%lu\n" + "mediumtext character set utf8:\t\t%lu\n" + "longtext character set utf8:\t\t%lu\n" + "varchar(255) character set latin1:\t%lu\n" + "varchar(255) character set binary:\t%lu\n" + "varchar(255) character set utf8:\t%lu\n", + field[0].length, field[1].length, field[2].length, field[3].length, + field[4].length, field[5].length, field[6].length); + } + DIE_UNLESS(field[0].length == 65535); + DIE_UNLESS(field[1].length == 255); + DIE_UNLESS(field[2].length == 16777215); + DIE_UNLESS(field[3].length == 4294967295UL); + DIE_UNLESS(field[4].length == 255); + DIE_UNLESS(field[5].length == 255); + DIE_UNLESS(field[6].length == 255); + + /* III. Cleanup */ + rc= mysql_query(mysql, "drop table t1"); + myquery(rc); + rc= mysql_query(mysql, "set names default"); + myquery(rc); mysql_stmt_close(stmt); } @@ -14903,6 +14966,7 @@ static struct my_tests_st my_tests[]= { { "test_bug14845", test_bug14845 }, { "test_bug15510", test_bug15510}, { "test_bug16144", test_bug16144 }, + { "test_bug15613", test_bug15613 }, { 0, 0 } }; |