summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorunknown <pem@mysql.comhem.se>2003-10-25 15:53:41 +0200
committerunknown <pem@mysql.comhem.se>2003-10-25 15:53:41 +0200
commit3c8c83d0eceeecd782d2e5ac9fec2b7a762229f1 (patch)
treefcdec2a91fed18981c4c979e1193ab8e9e3b5936 /tests
parent2698d9a7283e7f0a1ee5f65e72ca8003af890664 (diff)
downloadmariadb-git-3c8c83d0eceeecd782d2e5ac9fec2b7a762229f1.tar.gz
A major overhaul to adopt to recent changes. It now passes all tests.
Note: - All test results haven't been inspected in detail to see if they are correct. - Some result set printing seems to have the wrong field width; most notably date/time fields and type fields (e.g. "int(4)"). - There are still some valgrind complaints, but they seem to be in assert() or in libmysql. tests/client_test.c: A major overhaul to adopt to recent changes: - SHOW TABLE result has changed (more columns) - EXPLAIN result has VAR_STRING types now - Added missing mysql_bind_result() calls - Adopted to mysql_fetch_column() semantics: Don't use same pointers in MYSQL_BIND structs for fetch_column as for binding. - Removed a number of duplicated calls to tests - Added missing initialization of MYSQL_BIND structs fields (lenght fields), to shutup valgrind.
Diffstat (limited to 'tests')
-rw-r--r--tests/client_test.c200
1 files changed, 130 insertions, 70 deletions
diff --git a/tests/client_test.c b/tests/client_test.c
index 388d5743cfb..bae47a19f97 100644
--- a/tests/client_test.c
+++ b/tests/client_test.c
@@ -1289,6 +1289,8 @@ static void test_double_compare()
/* tinyint */
bind[0].buffer_type=FIELD_TYPE_TINY;
bind[0].buffer=(char *)&tiny_data;
+ bind[0].buffer_length= 0;
+ bind[0].length= 0;
bind[0].is_null= 0; /* Can never be null */
/* string->float */
@@ -1302,6 +1304,8 @@ static void test_double_compare()
/* double */
bind[2].buffer_type=FIELD_TYPE_DOUBLE;
bind[2].buffer= (char *)&double_data;
+ bind[2].buffer_length= 0;
+ bind[2].length= 0;
bind[2].is_null= 0;
tiny_data = 1;
@@ -1369,6 +1373,7 @@ static void test_null()
bind[0].buffer_type=MYSQL_TYPE_LONG;
bind[0].is_null= &is_null[0];
+ bind[0].length= 0;
is_null[0]= 1;
bind[1]=bind[0];
@@ -1742,6 +1747,8 @@ static void test_select()
bind[0].buffer=(char *)&nData;
bind[0].buffer_type=FIELD_TYPE_LONG;
+ bind[0].buffer_length= 0;
+ bind[0].length= 0;
bind[0].is_null= 0;
rc = mysql_bind_param(stmt,bind);
@@ -1848,7 +1855,6 @@ static void test_bug1180()
MYSQL_BIND bind[1];
ulong length[1];
char szData[11];
- int nData=1;
myheader("test_select_bug");
@@ -2035,6 +2041,8 @@ static void test_simple_update()
bind[1].buffer=(char *) &nData;
bind[1].buffer_type=FIELD_TYPE_LONG;
+ bind[1].buffer_length= 0;
+ bind[1].length= 0;
bind[1].is_null= 0;
rc = mysql_bind_param(stmt,bind);
@@ -2105,6 +2113,8 @@ static void test_long_data()
bind[0].buffer=(char *)&int_data;
bind[0].buffer_type=FIELD_TYPE_LONG;
bind[0].is_null=0;
+ bind[0].buffer_length= 0;
+ bind[0].length= 0;
bind[1].buffer_type=FIELD_TYPE_STRING;
bind[1].is_null=0;
@@ -2191,6 +2201,8 @@ static void test_long_data_str()
bind[0].buffer = (char *)&length;
bind[0].buffer_type = FIELD_TYPE_LONG;
bind[0].is_null= &is_null[0];
+ bind[0].buffer_length= 0;
+ bind[0].length= 0;
is_null[0]=0;
length= 0;
@@ -2368,6 +2380,8 @@ static void test_long_data_bin()
bind[0].buffer = (char *)&length;
bind[0].buffer_type = FIELD_TYPE_LONG;
+ bind[0].buffer_length= 0;
+ bind[0].length= 0;
bind[0].is_null= 0;
length= 0;
@@ -2470,6 +2484,8 @@ static void test_simple_delete()
bind[0].buffer=(char *)&nData;
bind[0].buffer_type=FIELD_TYPE_LONG;
+ bind[0].buffer_length= 0;
+ bind[0].length= 0;
bind[0].is_null= 0;
rc = mysql_bind_param(stmt,bind);
@@ -2547,6 +2563,8 @@ static void test_update()
bind[1].buffer=(char *)&nData;
bind[1].buffer_type=FIELD_TYPE_LONG;
+ bind[1].buffer_length= 0;
+ bind[1].length= 0;
bind[1].is_null= 0;
rc = mysql_bind_param(stmt,bind);
@@ -2573,6 +2591,8 @@ static void test_update()
length[0]= my_sprintf(szData, (szData, "updated-data"));
bind[1].buffer=(char *)&nData;
bind[1].buffer_type=FIELD_TYPE_LONG;
+ bind[1].buffer_length= 0;
+ bind[1].length= 0;
bind[1].is_null= 0;
rc = mysql_bind_param(stmt,bind);
@@ -2917,24 +2937,31 @@ static void test_bind_result_ext1()
bind[1].buffer_type=MYSQL_TYPE_FLOAT;
bind[1].buffer=(char *)&s_data;
+ bind[1].buffer_length= 0;
bind[2].buffer_type=MYSQL_TYPE_SHORT;
bind[2].buffer=(char *)&i_data;
+ bind[2].buffer_length= 0;
bind[3].buffer_type=MYSQL_TYPE_TINY;
bind[3].buffer=(char *)&b_data;
+ bind[3].buffer_length= 0;
bind[4].buffer_type=MYSQL_TYPE_LONG;
bind[4].buffer=(char *)&f_data;
+ bind[4].buffer_length= 0;
bind[5].buffer_type=MYSQL_TYPE_STRING;
bind[5].buffer=(char *)d_data;
+ bind[5].buffer_length= sizeof(d_data);
bind[6].buffer_type=MYSQL_TYPE_LONG;
bind[6].buffer=(char *)&bData;
+ bind[6].buffer_length= 0;
bind[7].buffer_type=MYSQL_TYPE_DOUBLE;
bind[7].buffer=(char *)&szData;
+ bind[7].buffer_length= 0;
for (i= 0; i < array_elements(bind); i++)
{
@@ -3011,6 +3038,7 @@ static void bind_fetch(int row_count)
{
bind[i].buffer_type= MYSQL_TYPE_LONG;
bind[i].buffer= (char *) &data[i];
+ bind[i].length= 0;
bind[i].is_null= 0;
}
rc = mysql_bind_param(stmt, bind);
@@ -3564,7 +3592,11 @@ static void test_prepare_ext()
bind[5].buffer= (char *)&bData;
for (i= 0; i < array_elements(bind); i++)
+ {
bind[i].is_null=0;
+ bind[i].buffer_length= 0;
+ bind[i].length= 0;
+ }
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
@@ -3955,6 +3987,8 @@ static void test_stmt_close()
count= 100;
bind[0].buffer=(char *)&count;
bind[0].buffer_type=MYSQL_TYPE_LONG;
+ bind[0].buffer_length= 0;
+ bind[0].length= 0;
bind[0].is_null=0;
rc = mysql_bind_param(stmt_x, bind);
@@ -4387,12 +4421,14 @@ static void test_multi_stmt()
bind[0].buffer_type= MYSQL_TYPE_SHORT;
bind[0].buffer= (char *)&id;
bind[0].is_null= &is_null[0];
+ bind[0].buffer_length= 0;
bind[0].length= &length[0];
is_null[0]= 0;
length[0]= 0;
bind[1].buffer_type = MYSQL_TYPE_STRING;
bind[1].buffer = (char *)name;
+ bind[1].buffer_length= sizeof(name);
bind[1].length = &length[1];
bind[1].is_null= &is_null[1];
@@ -4650,8 +4686,11 @@ static void test_prepare_alter()
verify_param_count(stmt,1);
+ is_null= 0;
bind[0].buffer_type= MYSQL_TYPE_SHORT;
bind[0].buffer= (char *)&id;
+ bind[0].buffer_length= 0;
+ bind[0].length= 0;
bind[0].is_null= &is_null;
rc = mysql_bind_param(stmt, bind);
@@ -6359,7 +6398,7 @@ static void test_frm_bug()
mytest(row);
fprintf(stdout,"\n Comment: %s", row[15]);
- myassert(row[15] != 0);
+ myassert(row[17] != 0);
mysql_free_result(result);
mysql_stmt_close(stmt);
@@ -6503,22 +6542,22 @@ static void test_explain_bug()
mysql_num_fields(result));
myassert(6 == mysql_num_fields(result));
- verify_prepare_field(result,0,"Field","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,0,"Field","",MYSQL_TYPE_VAR_STRING,
"","","",NAME_LEN,0);
- verify_prepare_field(result,1,"Type","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,1,"Type","",MYSQL_TYPE_VAR_STRING,
"","","",40,0);
- verify_prepare_field(result,2,"Null","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,2,"Null","",MYSQL_TYPE_VAR_STRING,
"","","",1,0);
- verify_prepare_field(result,3,"Key","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,3,"Key","",MYSQL_TYPE_VAR_STRING,
"","","",3,0);
- verify_prepare_field(result,4,"Default","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,4,"Default","",MYSQL_TYPE_VAR_STRING,
"","","",NAME_LEN,0);
- verify_prepare_field(result,5,"Extra","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,5,"Extra","",MYSQL_TYPE_VAR_STRING,
"","","",20,0);
mysql_free_result(result);
@@ -6542,31 +6581,31 @@ static void test_explain_bug()
verify_prepare_field(result,0,"id","",MYSQL_TYPE_LONGLONG,
"","","",3,0);
- verify_prepare_field(result,1,"select_type","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,1,"select_type","",MYSQL_TYPE_VAR_STRING,
"","","",19,0);
- verify_prepare_field(result,2,"table","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,2,"table","",MYSQL_TYPE_VAR_STRING,
"","","",NAME_LEN,0);
- verify_prepare_field(result,3,"type","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,3,"type","",MYSQL_TYPE_VAR_STRING,
"","","",10,0);
- verify_prepare_field(result,4,"possible_keys","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,4,"possible_keys","",MYSQL_TYPE_VAR_STRING,
"","","",NAME_LEN*32,0);
- verify_prepare_field(result,5,"key","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,5,"key","",MYSQL_TYPE_VAR_STRING,
"","","",NAME_LEN,0);
verify_prepare_field(result,6,"key_len","",MYSQL_TYPE_LONGLONG,
"","","",3,0);
- verify_prepare_field(result,7,"ref","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,7,"ref","",MYSQL_TYPE_VAR_STRING,
"","","",NAME_LEN*16,0);
verify_prepare_field(result,8,"rows","",MYSQL_TYPE_LONGLONG,
"","","",10,0);
- verify_prepare_field(result,9,"Extra","",MYSQL_TYPE_STRING,
+ verify_prepare_field(result,9,"Extra","",MYSQL_TYPE_VAR_STRING,
"","","",255,0);
mysql_free_result(result);
@@ -7088,6 +7127,9 @@ static void test_fetch_offset()
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt_r(stmt,rc);
+ rc = mysql_bind_result(stmt, bind);
+ mystmt(stmt,rc);
+
rc = mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
@@ -7137,11 +7179,10 @@ static void test_fetch_offset()
static void test_fetch_column()
{
MYSQL_STMT *stmt;
- MYSQL_BIND bind[1];
- char c2[20];
- ulong l1, l2;
- int rc, c1;
-
+ MYSQL_BIND bind[2];
+ char c2[20], bc2[20];
+ ulong l1, l2, bl1, bl2;
+ int rc, c1, bc1;
myheader("test_fetch_column");
@@ -7157,25 +7198,41 @@ static void test_fetch_column()
stmt = mysql_prepare(mysql,"select * from test_column",50);
mystmt_init(stmt);
- bind[0].buffer_type= MYSQL_TYPE_STRING;
- bind[0].buffer= (char *)c2;
- bind[0].buffer_length= 7;
+ bind[0].buffer_type= MYSQL_TYPE_LONG;
+ bind[0].buffer= (char *)&bc1;
+ bind[0].buffer_length= 0;
bind[0].is_null= 0;
- bind[0].length= &l2;
+ bind[0].length= &bl1;
+ bind[1].buffer_type= MYSQL_TYPE_STRING;
+ bind[1].buffer= (char *)bc2;
+ bind[1].buffer_length= 7;
+ bind[1].is_null= 0;
+ bind[1].length= &bl2;
rc = mysql_execute(stmt);
mystmt(stmt,rc);
+ rc = mysql_bind_result(stmt, bind);
+ mystmt(stmt,rc);
+
rc = mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
- rc = mysql_fetch_column(stmt,bind,1,0);
+ rc = mysql_fetch_column(stmt,bind,1,0); /* No-op at this point */
mystmt_r(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
+ fprintf(stdout, "\n row 0: %d,%s", bc1,bc2);
+
c2[0]= '\0'; l2= 0;
+ bind[0].buffer_type= MYSQL_TYPE_STRING;
+ bind[0].buffer= (char *)c2;
+ bind[0].buffer_length= 7;
+ bind[0].is_null= 0;
+ bind[0].length= &l2;
+
rc = mysql_fetch_column(stmt,bind,1,0);
mystmt(stmt,rc);
fprintf(stdout, "\n col 1: %s(%ld)", c2, l2);
@@ -7187,8 +7244,7 @@ static void test_fetch_column()
fprintf(stdout, "\n col 1: %s(%ld)", c2, l2);
myassert(strcmp(c2,"venu")==0 && l2 == 4);
- c1= 0;
-
+ c1= 0;
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&c1;
bind[0].buffer_length= 0;
@@ -7206,15 +7262,15 @@ static void test_fetch_column()
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
+ fprintf(stdout, "\n row 1: %d,%s", bc1,bc2);
+
+ c2[0]= '\0'; l2= 0;
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer= (char *)c2;
bind[0].buffer_length= 7;
bind[0].is_null= 0;
bind[0].length= &l2;
- fprintf(stdout, "\n row 1: %d,%s", c1,c2);
-
- c2[0]= '\0'; l2= 0;
rc = mysql_fetch_column(stmt,bind,1,0);
mystmt(stmt,rc);
fprintf(stdout, "\n col 1: %s(%ld)", c2, l2);
@@ -7227,7 +7283,6 @@ static void test_fetch_column()
myassert(strcmp(c2,"mysql")==0 && l2 == 5);
c1= 0;
-
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&c1;
bind[0].buffer_length= 0;
@@ -7359,8 +7414,8 @@ static void test_free_result()
MYSQL_STMT *stmt;
MYSQL_BIND bind[1];
char c2[5];
- ulong length;
- int rc, c1;
+ ulong bl1, l2;
+ int rc, c1, bc1;
myheader("test_free_result");
@@ -7376,39 +7431,47 @@ static void test_free_result()
stmt = mysql_prepare(mysql,"select * from test_free_result",50);
mystmt_init(stmt);
- bind[0].buffer_type= MYSQL_TYPE_STRING;
- bind[0].buffer= (char *)c2;
- bind[0].buffer_length= 7;
+ bind[0].buffer_type= MYSQL_TYPE_LONG;
+ bind[0].buffer= (char *)&bc1;
+ bind[0].buffer_length= 0;
bind[0].is_null= 0;
- bind[0].length= &length;
+ bind[0].length= &bl1;
rc = mysql_execute(stmt);
mystmt(stmt,rc);
+ rc = mysql_bind_result(stmt, bind);
+ mystmt(stmt,rc);
+
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
- c2[0]= '\0'; length= 0;
+ c2[0]= '\0'; l2= 0;
+ bind[0].buffer_type= MYSQL_TYPE_STRING;
+ bind[0].buffer= (char *)c2;
+ bind[0].buffer_length= 7;
+ bind[0].is_null= 0;
+ bind[0].length= &l2;
+
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
- fprintf(stdout, "\n col 1: %s(%ld)", c2, length);
- myassert(strncmp(c2,"1",1)==0 && length == 1);
+ fprintf(stdout, "\n col 0: %s(%ld)", c2, l2);
+ myassert(strncmp(c2,"1",1)==0 && l2 == 1);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
- c1= 0, length= 0;
-
+ c1= 0, l2= 0;
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&c1;
bind[0].buffer_length= 0;
bind[0].is_null= 0;
- bind[0].length= &length;
+ bind[0].length= &l2;
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
- fprintf(stdout, "\n col 0: %d(%ld)", c1, length);
- myassert(c1 == 2 && length == 4);
+ fprintf(stdout, "\n col 0: %d(%ld)", c1, l2);
+ myassert(c1 == 2 && l2 == 4);
rc = mysql_query(mysql,"drop table test_free_result");
myquery_r(rc); /* error should be, COMMANDS OUT OF SYNC */
@@ -7430,8 +7493,8 @@ static void test_free_store_result()
MYSQL_STMT *stmt;
MYSQL_BIND bind[1];
char c2[5];
- ulong length;
- int rc, c1;
+ ulong bl1, l2;
+ int rc, c1, bc1;
myheader("test_free_store_result");
@@ -7447,42 +7510,50 @@ static void test_free_store_result()
stmt = mysql_prepare(mysql,"select * from test_free_result",50);
mystmt_init(stmt);
- bind[0].buffer_type= MYSQL_TYPE_STRING;
- bind[0].buffer= (char *)c2;
- bind[0].buffer_length= 7;
+ bind[0].buffer_type= MYSQL_TYPE_LONG;
+ bind[0].buffer= (char *)&bc1;
+ bind[0].buffer_length= 0;
bind[0].is_null= 0;
- bind[0].length= &length;
+ bind[0].length= &bl1;
rc = mysql_execute(stmt);
mystmt(stmt,rc);
+ rc = mysql_bind_result(stmt, bind);
+ mystmt(stmt,rc);
+
rc = mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
- c2[0]= '\0'; length= 0;
+ c2[0]= '\0'; l2= 0;
+ bind[0].buffer_type= MYSQL_TYPE_STRING;
+ bind[0].buffer= (char *)c2;
+ bind[0].buffer_length= 7;
+ bind[0].is_null= 0;
+ bind[0].length= &l2;
+
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
- fprintf(stdout, "\n col 1: %s(%ld)", c2, length);
- myassert(strncmp(c2,"1",1)==0 && length == 1);
+ fprintf(stdout, "\n col 1: %s(%ld)", c2, l2);
+ myassert(strncmp(c2,"1",1)==0 && l2 == 1);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
- c1= 0, length= 0;
-
+ c1= 0, l2= 0;
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&c1;
bind[0].buffer_length= 0;
bind[0].is_null= 0;
- bind[0].length= &length;
+ bind[0].length= &l2;
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
- fprintf(stdout, "\n col 0: %d(%ld)", c1, length);
- myassert(c1 == 2 && length == 4);
+ fprintf(stdout, "\n col 0: %d(%ld)", c1, l2);
+ myassert(c1 == 2 && l2 == 4);
rc = mysql_stmt_free_result(stmt);
mystmt(stmt,rc);
@@ -7866,7 +7937,6 @@ int main(int argc, char **argv)
test_count= 1;
start_time= time((time_t *)0);
-
client_query(); /* simple client query test */
#if NOT_YET_WORKING
/* Used for internal new development debugging */
@@ -7915,7 +7985,6 @@ int main(int argc, char **argv)
test_simple_update(); /* simple prepare with update */
test_simple_delete(); /* prepare with delete */
test_double_compare(); /* float comparision */
- client_query(); /* simple client query test */
client_store_result(); /* usage of mysql_store_result() */
client_use_result(); /* usage of mysql_use_result() */
test_tran_bdb(); /* transaction test on BDB table type */
@@ -7959,9 +8028,6 @@ int main(int argc, char **argv)
test_nstmts(); /* test n statements */
test_logs(); ; /* to test logs */
test_cuted_rows(); /* to test for WARNINGS from cuted rows */
- test_fetch_seek(); /* to test stmt seek() functions */
- test_fetch_nobuffs(); /* to fecth without prior bound buffers */
- test_open_direct(); /* direct execution in the middle of open stmts */
test_fetch_offset(); /* to test mysql_fetch_column with offset */
test_fetch_column(); /* to test mysql_fetch_column */
test_mem_overun(); /* test DBD ovverun bug */
@@ -7969,15 +8035,10 @@ int main(int argc, char **argv)
test_free_result(); /* test mysql_stmt_free_result() */
test_free_store_result(); /* test to make sure stmt results are cleared
during stmt_free_result() */
- test_mem_overun(); /* memory ovverun bug */
- test_list_fields(); /* list_fields test */
- test_fetch_offset(); /* to test mysql_fetch_column with offset */
- test_fetch_column(); /* to test mysql_fetch_column */
test_sqlmode(); /* test for SQL_MODE */
test_ts(); /* test for timestamp BR#819 */
test_bug1115(); /* BUG#1115 */
test_bug1180(); /* BUG#1180 */
-
end_time= time((time_t *)0);
total_time+= difftime(end_time, start_time);
@@ -7990,4 +8051,3 @@ int main(int argc, char **argv)
return(0);
}
-