diff options
Diffstat (limited to 'tests/client_test.c')
-rw-r--r-- | tests/client_test.c | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/tests/client_test.c b/tests/client_test.c index 8aaa9983bc9..0e1dde81c1c 100644 --- a/tests/client_test.c +++ b/tests/client_test.c @@ -9182,8 +9182,7 @@ static void test_bug3035() { MYSQL_STMT *stmt; int rc; - - MYSQL_BIND bind_array[8]; + MYSQL_BIND bind_array[12]; int8 int8_val; uint8 uint8_val; int16 int16_val; @@ -9192,6 +9191,8 @@ static void test_bug3035() uint32 uint32_val; longlong int64_val; ulonglong uint64_val; + double double_val, udouble_val; + char longlong_as_string[22],ulonglong_as_string[22]; /* mins and maxes */ const int8 int8_min= -128; @@ -9210,11 +9211,11 @@ static void test_bug3035() const uint32 uint32_max= 4294967295U; /* it might not work okay everyplace */ - const longlong int64_max= 9223372036854775807LL; + const longlong int64_max= LL(9223372036854775807); const longlong int64_min= -int64_max - 1; const ulonglong uint64_min= 0U; - const ulonglong uint64_max= 18446744073709551615ULL; + const ulonglong uint64_max= ULL(18446744073709551615); const char *stmt_text; @@ -9296,7 +9297,7 @@ static void test_bug3035() mysql_stmt_execute(stmt); check_execute(stmt, rc); - stmt_text= "SELECT i8, ui8, i16, ui16, i32, ui32, i64, ui64 " + stmt_text= "SELECT i8, ui8, i16, ui16, i32, ui32, i64, ui64, ui64, cast(ui64 as signed),ui64, cast(ui64 as signed)" "FROM t1 ORDER BY id ASC"; mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text)); @@ -9305,6 +9306,20 @@ static void test_bug3035() mysql_stmt_execute(stmt); check_execute(stmt, rc); + bind_array[8].buffer_type= MYSQL_TYPE_DOUBLE; + bind_array[8].buffer= (char*) &udouble_val; + + bind_array[9].buffer_type= MYSQL_TYPE_DOUBLE; + bind_array[9].buffer= (char*) &double_val; + + bind_array[10].buffer_type= MYSQL_TYPE_STRING; + bind_array[10].buffer= (char*) &ulonglong_as_string; + bind_array[10].buffer_length= sizeof(ulonglong_as_string); + + bind_array[11].buffer_type= MYSQL_TYPE_STRING; + bind_array[11].buffer= (char*) &longlong_as_string; + bind_array[11].buffer_length= sizeof(longlong_as_string); + mysql_stmt_bind_result(stmt, bind_array); rc= mysql_stmt_fetch(stmt); @@ -9318,6 +9333,10 @@ static void test_bug3035() assert(uint32_val == uint32_min); assert(int64_val == int64_min); assert(uint64_val == uint64_min); + assert(double_val == (longlong) uint64_min); + assert(udouble_val == ulonglong2double(uint64_val)); + assert(!strcmp(longlong_as_string, "0")); + assert(!strcmp(ulonglong_as_string, "0")); rc= mysql_stmt_fetch(stmt); check_execute(stmt, rc); @@ -9330,6 +9349,10 @@ static void test_bug3035() assert(uint32_val == uint32_max); assert(int64_val == int64_max); assert(uint64_val == uint64_max); + assert(double_val == (longlong) uint64_val); + assert(udouble_val == ulonglong2double(uint64_val)); + assert(!strcmp(longlong_as_string, "-1")); + assert(!strcmp(ulonglong_as_string, "18446744073709551615")); rc= mysql_stmt_fetch(stmt); assert(rc == MYSQL_NO_DATA); |