mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
Fixes to make client_test run on 64 bit Sun: a bug in libmysql and
test suite fixed. libmysql/libmysql.c: - fixed a bug in protocol -> host integer conversions in send_data_str tests/client_test.c: Fixes to make client_test run on 64 bit Sun: - strlen() doesn't accept NULL input - Sun is high byte first, so we can't store bind 32-bit variables to 16-bit to MYSQL_TYPE_SHORT/TINY
This commit is contained in:
parent
c65bf20be8
commit
83698bab08
2 changed files with 49 additions and 26 deletions
|
@ -3245,32 +3245,32 @@ static void send_data_str(MYSQL_BIND *param, char *value, uint length)
|
|||
{
|
||||
short data= (short)my_strntol(&my_charset_latin1,value,length,10,NULL,
|
||||
&err);
|
||||
int2store(buffer, data);
|
||||
shortstore(buffer, data);
|
||||
break;
|
||||
}
|
||||
case MYSQL_TYPE_LONG:
|
||||
{
|
||||
int32 data= (int32)my_strntol(&my_charset_latin1,value,length,10,NULL,
|
||||
&err);
|
||||
int4store(buffer, data);
|
||||
longstore(buffer, data);
|
||||
break;
|
||||
}
|
||||
case MYSQL_TYPE_LONGLONG:
|
||||
{
|
||||
longlong data= my_strntoll(&my_charset_latin1,value,length,10,NULL,&err);
|
||||
int8store(buffer, data);
|
||||
longlongstore(buffer, data);
|
||||
break;
|
||||
}
|
||||
case MYSQL_TYPE_FLOAT:
|
||||
{
|
||||
float data = (float)my_strntod(&my_charset_latin1,value,length,NULL,&err);
|
||||
float4store(buffer, data);
|
||||
floatstore(buffer, data);
|
||||
break;
|
||||
}
|
||||
case MYSQL_TYPE_DOUBLE:
|
||||
{
|
||||
double data= my_strntod(&my_charset_latin1,value,length,NULL,&err);
|
||||
float8store(buffer, data);
|
||||
doublestore(buffer, data);
|
||||
break;
|
||||
}
|
||||
case MYSQL_TYPE_TINY_BLOB:
|
||||
|
|
|
@ -177,7 +177,8 @@ static void client_connect()
|
|||
int rc;
|
||||
myheader_r("client_connect");
|
||||
|
||||
fprintf(stdout, "\n Establishing a connection to '%s' ...", opt_host);
|
||||
fprintf(stdout, "\n Establishing a connection to '%s' ...",
|
||||
opt_host ? opt_host : "");
|
||||
|
||||
if (!(mysql= mysql_init(NULL)))
|
||||
{
|
||||
|
@ -3226,8 +3227,11 @@ static void bind_fetch(int row_count)
|
|||
{
|
||||
MYSQL_STMT *stmt;
|
||||
int rc, i, count= row_count;
|
||||
ulong bit;
|
||||
long data[10];
|
||||
int8 i8_data;
|
||||
int16 i16_data;
|
||||
int32 i32_data;
|
||||
longlong i64_data;
|
||||
float f_data;
|
||||
double d_data;
|
||||
char s_data[10];
|
||||
|
@ -3283,9 +3287,16 @@ static void bind_fetch(int row_count)
|
|||
}
|
||||
|
||||
bind[0].buffer_type= MYSQL_TYPE_TINY;
|
||||
bind[0].buffer= (char *)&i8_data;
|
||||
|
||||
bind[1].buffer_type= MYSQL_TYPE_SHORT;
|
||||
bind[1].buffer= (char *)&i16_data;
|
||||
|
||||
bind[2].buffer_type= MYSQL_TYPE_LONG;
|
||||
bind[2].buffer= (char *)&i32_data;
|
||||
|
||||
bind[3].buffer_type= MYSQL_TYPE_LONGLONG;
|
||||
bind[3].buffer= (char *)&i64_data;
|
||||
|
||||
bind[4].buffer_type= MYSQL_TYPE_FLOAT;
|
||||
bind[4].buffer= (char *)&f_data;
|
||||
|
@ -3312,36 +3323,47 @@ static void bind_fetch(int row_count)
|
|||
check_execute(stmt, rc);
|
||||
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, "\n tiny : %ld(%lu)", data[0], length[0]);
|
||||
fprintf(stdout, "\n short : %ld(%lu)", data[1], length[1]);
|
||||
fprintf(stdout, "\n int : %ld(%lu)", data[2], length[2]);
|
||||
fprintf(stdout, "\n longlong : %ld(%lu)", data[3], length[3]);
|
||||
fprintf(stdout, "\n tiny : %ld(%lu)", (ulong) i8_data, length[0]);
|
||||
fprintf(stdout, "\n short : %ld(%lu)", (ulong) i16_data, length[1]);
|
||||
fprintf(stdout, "\n int : %ld(%lu)", (ulong) i32_data, length[2]);
|
||||
fprintf(stdout, "\n longlong : %ld(%lu)", (ulong) i64_data, length[3]);
|
||||
fprintf(stdout, "\n float : %f(%lu)", f_data, length[4]);
|
||||
fprintf(stdout, "\n double : %g(%lu)", d_data, length[5]);
|
||||
fprintf(stdout, "\n char : %s(%lu)", s_data, length[6]);
|
||||
|
||||
bit= 1;
|
||||
rc= 10+row_count;
|
||||
for (i= 0; i < 4; i++)
|
||||
{
|
||||
assert(data[i] == rc+i);
|
||||
assert(length[i] == bit);
|
||||
bit<<= 1;
|
||||
rc+= 12;
|
||||
}
|
||||
|
||||
/* TINY */
|
||||
assert((int) i8_data == rc);
|
||||
assert(length[0] == 1);
|
||||
rc+= 13;
|
||||
|
||||
/* SHORT */
|
||||
assert((int) i16_data == rc);
|
||||
assert(length[1] == 2);
|
||||
rc+= 13;
|
||||
|
||||
/* LONG */
|
||||
assert((int) i32_data == rc);
|
||||
assert(length[2] == 4);
|
||||
rc+= 13;
|
||||
|
||||
/* LONGLONG */
|
||||
assert((int) i64_data == rc);
|
||||
assert(length[3] == 8);
|
||||
rc+= 13;
|
||||
|
||||
/* FLOAT */
|
||||
rc+= i;
|
||||
assert((int)f_data == rc);
|
||||
assert(length[4] == 4);
|
||||
rc+= 13;
|
||||
|
||||
/* DOUBLE */
|
||||
rc+= 13;
|
||||
assert((int)d_data == rc);
|
||||
assert(length[5] == 8);
|
||||
rc+= 13;
|
||||
|
||||
/* CHAR */
|
||||
rc+= 13;
|
||||
{
|
||||
char buff[20];
|
||||
long len= my_sprintf(buff, (buff, "%d", rc));
|
||||
|
@ -4523,7 +4545,8 @@ static void test_multi_stmt()
|
|||
{
|
||||
|
||||
MYSQL_STMT *stmt, *stmt1, *stmt2;
|
||||
int rc, id;
|
||||
int rc;
|
||||
ulong id;
|
||||
char name[50];
|
||||
MYSQL_BIND bind[2];
|
||||
ulong length[2];
|
||||
|
@ -4555,7 +4578,7 @@ static void test_multi_stmt()
|
|||
*/
|
||||
bzero((char*) bind, sizeof(bind));
|
||||
|
||||
bind[0].buffer_type= MYSQL_TYPE_SHORT;
|
||||
bind[0].buffer_type= MYSQL_TYPE_LONG;
|
||||
bind[0].buffer= (char *)&id;
|
||||
bind[0].is_null= &is_null[0];
|
||||
bind[0].length= &length[0];
|
||||
|
@ -4582,7 +4605,7 @@ static void test_multi_stmt()
|
|||
rc= mysql_stmt_fetch(stmt);
|
||||
check_execute(stmt, rc);
|
||||
|
||||
fprintf(stdout, "\n int_data: %d(%lu)", id, length[0]);
|
||||
fprintf(stdout, "\n int_data: %lu(%lu)", id, length[0]);
|
||||
fprintf(stdout, "\n str_data: %s(%lu)", name, length[1]);
|
||||
assert(id == 10);
|
||||
assert(strcmp(name, "mysql") == 0);
|
||||
|
@ -4611,7 +4634,7 @@ static void test_multi_stmt()
|
|||
rc= mysql_stmt_fetch(stmt);
|
||||
check_execute(stmt, rc);
|
||||
|
||||
fprintf(stdout, "\n int_data: %d(%lu)", id, length[0]);
|
||||
fprintf(stdout, "\n int_data: %lu(%lu)", id, length[0]);
|
||||
fprintf(stdout, "\n str_data: %s(%lu)", name, length[1]);
|
||||
assert(id == 10);
|
||||
assert(strcmp(name, "updated") == 0);
|
||||
|
|
Loading…
Add table
Reference in a new issue