summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorunknown <venu@myvenu.com>2003-05-21 01:15:04 -0700
committerunknown <venu@myvenu.com>2003-05-21 01:15:04 -0700
commit06b60afc198d045b602bfc122c9112610e75271f (patch)
treea484ed6e5b4f3dd9f08339e5662ec9068c61c3d9 /tests
parent5c18a462d56bfd5b7a4a3f1eb70b792ef57a5253 (diff)
downloadmariadb-git-06b60afc198d045b602bfc122c9112610e75271f.tar.gz
client_test.c:
Updated protocol test tests/client_test.c: Updated protocol test
Diffstat (limited to 'tests')
-rw-r--r--tests/client_test.c722
1 files changed, 715 insertions, 7 deletions
diff --git a/tests/client_test.c b/tests/client_test.c
index bd2ec4930ef..859c06ba243 100644
--- a/tests/client_test.c
+++ b/tests/client_test.c
@@ -72,10 +72,12 @@ static double total_time;
static void print_error(const char *msg);
static void print_st_error(MYSQL_STMT *stmt, const char *msg);
+static void check_errcode(const unsigned int err);
static void client_disconnect();
#define myerror(msg) print_error(msg)
#define mysterror(stmt, msg) print_st_error(stmt, msg)
+#define myerrno(n) check_errcode(n)
#define myassert(exp) assert(exp)
#define myassert_r(exp) assert(!(exp))
@@ -141,6 +143,16 @@ static void print_error(const char *msg)
else if (msg) fprintf(stderr, " [MySQL] %s\n", msg);
}
+static void check_errcode(const unsigned int err)
+{
+ if (mysql->server_version)
+ fprintf(stdout,"\n [MySQL-%s]",mysql->server_version);
+ else
+ fprintf(stdout,"\n [MySQL]");
+ fprintf(stdout,"[%d] %s\n",mysql_errno(mysql),mysql_error(mysql));
+ myassert(mysql_errno(mysql) == err);
+}
+
static void print_st_error(MYSQL_STMT *stmt, const char *msg)
{
if (stmt && mysql_stmt_errno(stmt))
@@ -368,6 +380,20 @@ int my_process_result_set(MYSQL_RES *result)
return row_count;
}
+int my_process_result(MYSQL *mysql)
+{
+ MYSQL_RES *result;
+ int row_count;
+
+ if (!(result = mysql_store_result(mysql)))
+ return 0;
+
+ row_count= my_process_result_set(result);
+
+ mysql_free_result(result);
+ return row_count;
+}
+
/********************************************************
* process the stmt result set *
*********************************************************/
@@ -2656,7 +2682,7 @@ static void test_bind_result_ext()
/*myassert(f_data == 2345.60);*/
/*myassert(d_data == 5678.89563);*/
myassert(strcmp(szData,"venu")==0);
- myassert(strcmp(bData,"mysql")==0);
+ myassert(strncmp(bData,"mysql",5)==0);
myassert(szLength == 4);
myassert(bLength == 5);
@@ -4837,8 +4863,9 @@ static void test_store_result2()
static void test_subselect()
{
#if TO_BE_FIXED_IN_SERVER
+
MYSQL_STMT *stmt;
- int rc;
+ int rc, id;
MYSQL_BIND bind[1];
myheader("test_subselect");
@@ -6078,6 +6105,7 @@ static void test_prepare_grant()
rc = mysql_query(mysql,"delete from mysql.tables_priv where User='test_grant'");
myquery(rc);
myassert(1 == mysql_affected_rows(mysql));
+
}
}
@@ -6375,7 +6403,677 @@ static void test_explain_bug()
mysql_stmt_close(stmt);
}
+/*
+ To test math functions
+ bug #148 (reported by salle@mysql.com).
+*/
+static void test_drop_temp()
+{
+ int rc;
+
+ myheader("test_drop_temp");
+
+ rc= mysql_query(mysql,"DROP DATABASE IF EXISTS test_drop_temp_db");
+ myquery(rc);
+
+ rc= mysql_query(mysql,"CREATE DATABASE test_drop_temp_db");
+ myquery(rc);
+
+ rc= mysql_query(mysql,"CREATE TABLE test_drop_temp_db.t1(c1 int, c2 char(1))");
+ myquery(rc);
+
+ rc = mysql_query(mysql,"delete from mysql.db where Db='test_drop_temp_db'");
+ myquery(rc);
+
+ rc = mysql_query(mysql,"delete from mysql.db where Db='test_drop_temp_db'");
+ myquery(rc);
+
+ strxmov(query,"GRANT SELECT,USAGE,DROP ON test_drop_temp_db.* TO test_temp@",
+ opt_host ? opt_host : "localhost", NullS);
+
+ if (mysql_query(mysql,query))
+ {
+ myerror("GRANT failed");
+
+ /*
+ If server started with --skip-grant-tables, skip this test, else
+ exit to indicate an error
+
+ ER_UNKNOWN_COM_ERROR = 1047
+ */
+ if (mysql_errno(mysql) != 1047)
+ exit(0);
+ }
+ else
+ {
+ MYSQL *org_mysql= mysql, *lmysql;
+
+ fprintf(stdout, "\n Establishing a test connection ...");
+ if (!(lmysql = mysql_init(NULL)))
+ {
+ myerror("mysql_init() failed");
+ exit(0);
+ }
+
+ rc = mysql_query(mysql,"flush privileges");
+ myquery(rc);
+
+ if (!(mysql_real_connect(lmysql,opt_host ? opt_host : "localhost","test_temp",
+ "", "test_drop_temp_db", opt_port,
+ opt_unix_socket, 0)))
+ {
+ mysql= lmysql;
+ myerror("connection failed");
+ mysql_close(lmysql);
+ exit(0);
+ }
+ fprintf(stdout," OK");
+
+ mysql= lmysql;
+ rc = mysql_query(mysql,"INSERT INTO t1 VALUES(10,'C')");
+ myerrno((uint)1142);
+
+ rc = mysql_query(mysql,"DROP TABLE t1");
+ myerrno((uint)1142);
+
+ mysql= org_mysql;
+ rc= mysql_query(mysql,"CREATE TEMPORARY TABLE test_drop_temp_db.t1(c1 int)");
+ myquery(rc);
+
+ rc= mysql_query(mysql,"CREATE TEMPORARY TABLE test_drop_temp_db.t2 LIKE test_drop_temp_db.t1");
+ myquery(rc);
+
+ mysql= lmysql;
+
+ rc = mysql_query(mysql,"DROP TABLE t1,t2");
+ myquery_r(rc);
+
+ rc = mysql_query(mysql,"DROP TEMPORARY TABLE t1");
+ myquery_r(rc);
+
+ rc = mysql_query(mysql,"DROP TEMPORARY TABLE t2");
+ myquery_r(rc);
+
+ mysql_close(lmysql);
+ mysql= org_mysql;
+
+ rc = mysql_query(mysql,"drop database test_drop_temp_db");
+ myquery(rc);
+ myassert(1 == mysql_affected_rows(mysql));
+
+ rc = mysql_query(mysql,"delete from mysql.user where User='test_temp'");
+ myquery(rc);
+ myassert(1 == mysql_affected_rows(mysql));
+
+
+ rc = mysql_query(mysql,"delete from mysql.tables_priv where User='test_temp'");
+ myquery(rc);
+ myassert(1 == mysql_affected_rows(mysql));
+ }
+}
+
+/*
+ To test warnings for cuted rows
+*/
+static void test_cuted_rows()
+{
+ int rc, count;
+ MYSQL_RES *result;
+
+ myheader("test_cuted_rows");
+
+ mysql_query(mysql, "DROP TABLE if exists t1");
+ mysql_query(mysql, "DROP TABLE if exists t2");
+
+ rc = mysql_query(mysql, "CREATE TABLE t1(c1 tinyint)");
+ myquery(rc);
+
+ rc = mysql_query(mysql, "CREATE TABLE t2(c1 int not null)");
+ myquery(rc);
+
+ rc = mysql_query(mysql, "INSERT INTO t1 values(10),(NULL),(NULL)");
+ myquery(rc);
+
+ count= mysql_warning_count(mysql);
+ fprintf(stdout, "\n total warnings: %d", count);
+ myassert(count == 0);
+
+ rc = mysql_query(mysql, "INSERT INTO t2 SELECT * FROM t1");
+ myquery(rc);
+
+ count= mysql_warning_count(mysql);
+ fprintf(stdout, "\n total warnings: %d", count);
+ myassert(count == 2);
+
+ rc = mysql_query(mysql, "SHOW WARNINGS");
+ myquery(rc);
+
+ result = mysql_store_result(mysql);
+ mytest(result);
+
+ myassert(2 == my_process_result_set(result));
+ mysql_free_result(result);
+
+ rc = mysql_query(mysql, "INSERT INTO t1 VALUES('junk'),(876789)");
+ myquery(rc);
+
+ count= mysql_warning_count(mysql);
+ fprintf(stdout, "\n total warnings: %d", count);
+ myassert(count == 2);
+
+ rc = mysql_query(mysql, "SHOW WARNINGS");
+ myquery(rc);
+
+ result = mysql_store_result(mysql);
+ mytest(result);
+
+ myassert(2 == my_process_result_set(result));
+ mysql_free_result(result);
+}
+
+/*
+ To test update/binary logs
+*/
+static void test_logs()
+{
+ MYSQL_STMT *stmt;
+ MYSQL_BIND bind[2];
+ char data[255];
+ ulong length;
+ int rc;
+ short id;
+
+ myheader("test_logs");
+
+
+ rc = mysql_real_query(mysql, "DROP TABLE IF EXISTS test_logs", 100);
+ myquery(rc);
+
+ rc = mysql_real_query(mysql, "CREATE TABLE test_logs(id smallint, name varchar(20))", 100);
+ myquery(rc);
+
+ length= (ulong)(strmov((char *)data,"INSERT INTO test_logs VALUES(?,?)") - data);
+ stmt = mysql_prepare(mysql, data, length);
+ mystmt_init(stmt);
+
+ bind[0].buffer_type= MYSQL_TYPE_SHORT;
+ bind[0].buffer= (char *)&id;
+ bind[0].is_null= 0;
+ bind[0].length= 0;
+
+ bind[1].buffer_type= MYSQL_TYPE_STRING;
+ bind[1].buffer= (char *)&data;
+ bind[1].is_null= 0;
+ bind[1].buffer_length= 255;
+ bind[1].length= &length;
+
+ id= 9876;
+ length= (ulong)(strmov((char *)data,"MySQL - Open Source Database")- data);
+
+ rc = mysql_bind_param(stmt, bind);
+ mystmt(stmt, rc);
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ strmov((char *)data, "'");
+ length= 1;
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ strmov((char *)data, "\"");
+ length= 1;
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ length= (ulong)(strmov((char *)data, "my\'sql\'")-data);
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ length= (ulong)(strmov((char *)data, "my\"sql\"")-data);
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ mysql_stmt_close(stmt);
+
+ length= (ulong)(strmov((char *)data,"INSERT INTO test_logs VALUES(20,'mysql')") - data);
+ stmt = mysql_prepare(mysql, data, length);
+ mystmt_init(stmt);
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ mysql_stmt_close(stmt);
+
+ length= (ulong)(strmov((char *)data, "SELECT * FROM test_logs WHERE id=?") - data);
+ stmt = mysql_prepare(mysql, data, length+2);
+ mystmt_init(stmt);
+
+ rc = mysql_bind_param(stmt, bind);
+ mystmt(stmt, rc);
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ bind[1].buffer_length= 255;
+ rc = mysql_bind_result(stmt, bind);
+ mystmt(stmt, rc);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt, rc);
+
+ fprintf(stdout, "\n id : %d", id);
+ fprintf(stdout, "\n name : %s(%ld)", data, length);
+
+ myassert(id == 9876);
+ myassert(length == 19);//Due to VARCHAR(20)
+ myassert(strcmp(data,"MySQL - Open Source")==0);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt, rc);
+
+ fprintf(stdout, "\n name : %s(%ld)", data, length);
+
+ myassert(length == 1);
+ myassert(strcmp(data,"'")==0);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt, rc);
+
+ fprintf(stdout, "\n name : %s(%ld)", data, length);
+
+ myassert(length == 1);
+ myassert(strcmp(data,"\"")==0);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt, rc);
+
+ fprintf(stdout, "\n name : %s(%ld)", data, length);
+
+ myassert(length == 7);
+ myassert(strcmp(data,"my\'sql\'")==0);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt, rc);
+
+ fprintf(stdout, "\n name : %s(%ld)", data, length);
+
+ myassert(length == 7);
+ myassert(strcmp(data,"my\"sql\"")==0);
+
+ rc = mysql_fetch(stmt);
+ myassert(rc == MYSQL_NO_DATA);
+
+ mysql_stmt_close(stmt);
+
+ rc = mysql_query(mysql,"DROP TABLE test_logs");
+ myquery(rc);
+}
+
+/*
+ To test 'n' statements create and close
+*/
+
+static void test_nstmts()
+{
+ MYSQL_STMT *stmt;
+ char query[255];
+ int rc;
+ static uint i, total_stmts= 2000;
+ long length;
+ MYSQL_BIND bind[1];
+
+ myheader("test_nstmts");
+
+ mysql_autocommit(mysql,TRUE);
+
+ rc = mysql_query(mysql, "DROP TABLE IF EXISTS test_nstmts");
+ myquery(rc);
+
+ rc = mysql_query(mysql, "CREATE TABLE test_nstmts(id int)");
+ myquery(rc);
+
+ bind[0].buffer= (char *)&i;
+ bind[0].buffer_type= MYSQL_TYPE_LONG;
+ bind[0].length= 0;
+ bind[0].is_null= 0;
+ bind[0].buffer_length= 0;
+
+ for (i=0; i < total_stmts; i++)
+ {
+ fprintf(stdout, "\r stmt: %d", i);
+
+ length = (long)(strmov(query, "insert into test_nstmts values(?)")-query);
+ stmt = mysql_prepare(mysql, query, length);
+ mystmt_init(stmt);
+
+ rc = mysql_bind_param(stmt, bind);
+ mystmt(stmt, rc);
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ mysql_stmt_close(stmt);
+ }
+
+ stmt = mysql_prepare(mysql," select count(*) from test_nstmts", 50);
+ mystmt_init(stmt);
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt, rc);
+
+ i = 0;
+ rc = mysql_bind_result(stmt, bind);
+ mystmt(stmt, rc);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt, rc);
+ fprintf(stdout, "\n total rows: %d", i);
+ myassert( i == total_stmts);
+
+ rc = mysql_fetch(stmt);
+ myassert(rc == MYSQL_NO_DATA);
+
+ mysql_stmt_close(stmt);
+
+ rc = mysql_query(mysql,"DROP TABLE test_nstmts");
+ myquery(rc);
+}
+
+/*
+ To test stmt seek() functions
+*/
+static void test_fetch_seek()
+{
+ MYSQL_STMT *stmt;
+ MYSQL_BIND bind[3];
+ MYSQL_ROW_OFFSET row;
+ int rc;
+ long c1;
+ char c2[11], c3[20];
+
+ myheader("test_fetch_seek");
+
+ rc= mysql_query(mysql,"drop table if exists test_seek");
+ myquery(rc);
+
+ rc = mysql_query(mysql, "create table test_seek(c1 int primary key auto_increment, c2 char(10), c3 timestamp(14))");
+ myquery(rc);
+
+ rc = mysql_query(mysql, "insert into test_seek(c2) values('venu'),('mysql'),('open'),('source')");
+ myquery(rc);
+
+ stmt = mysql_prepare(mysql,"select * from test_seek",50);
+ mystmt_init(stmt);
+
+ 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= 0;
+
+ bind[1].buffer_type= MYSQL_TYPE_STRING;
+ bind[1].buffer= (char *)c2;
+ bind[1].buffer_length= sizeof(c2);
+ bind[1].is_null= 0;
+ bind[1].length= 0;
+
+ bind[2]= bind[1];
+ bind[2].buffer= (char *)c3;
+ bind[2].buffer_length= sizeof(c3);
+
+ 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);
+
+ fprintf(stdout, "\n row 0: %ld,%s,%s", c1,c2,c3);
+
+ row = mysql_stmt_row_tell(stmt);
+
+ row = mysql_stmt_row_seek(stmt, row);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ fprintf(stdout, "\n row 2: %ld,%s,%s", c1,c2,c3);
+
+ row = mysql_stmt_row_seek(stmt, row);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ fprintf(stdout, "\n row 2: %ld,%s,%s", c1,c2,c3);
+
+ mysql_stmt_data_seek(stmt, 0);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ fprintf(stdout, "\n row 0: %ld,%s,%s", c1,c2,c3);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ rc = mysql_fetch(stmt);
+ myassert(rc == MYSQL_NO_DATA);
+
+ mysql_stmt_close(stmt);
+}
+
+/*
+ To test mysql_fetch_column() with offset
+*/
+static void test_fetch_offset()
+{
+ MYSQL_STMT *stmt;
+ MYSQL_BIND bind[1];
+ char data[11];
+ ulong length;
+ int rc;
+ my_bool is_null;
+
+
+ myheader("test_fetch_offset");
+
+ rc= mysql_query(mysql,"drop table if exists test_column");
+ myquery(rc);
+
+ rc = mysql_query(mysql, "create table test_column(a char(10))");
+ myquery(rc);
+
+ rc = mysql_query(mysql, "insert into test_column values('abcdefghij'),(null)");
+ myquery(rc);
+
+ stmt = mysql_prepare(mysql,"select * from test_column",50);
+ mystmt_init(stmt);
+
+ bind[0].buffer_type= MYSQL_TYPE_STRING;
+ bind[0].buffer= (char *)data;
+ bind[0].buffer_length= 11;
+ bind[0].is_null= &is_null;
+ bind[0].length= &length;
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt,rc);
+
+ rc = mysql_fetch_column(stmt,bind,0,0);
+ mystmt_r(stmt,rc);
+
+ rc = mysql_stmt_store_result(stmt);
+ mystmt(stmt,rc);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ rc = mysql_fetch_column(stmt,bind,4,0);
+ mystmt_r(stmt,rc);
+
+ data[0]= '\0';
+ rc = mysql_fetch_column(stmt,bind,0,0);
+ mystmt(stmt,rc);
+ fprintf(stdout, "\n col 1: %s (%ld)", data, length);
+ myassert(strncmp(data,"abcd",4) == 0 && length == 10);
+
+ rc = mysql_fetch_column(stmt,bind,0,5);
+ mystmt(stmt,rc);
+ fprintf(stdout, "\n col 1: %s (%ld)", data, length);
+ myassert(strncmp(data,"fg",2) == 0 && length == 10);
+
+ rc = mysql_fetch_column(stmt,bind,0,9);
+ mystmt(stmt,rc);
+ fprintf(stdout, "\n col 0: %s (%ld)", data, length);
+ myassert(strncmp(data,"j",1) == 0 && length == 10);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ is_null= 0;
+
+ rc = mysql_fetch_column(stmt,bind,0,0);
+ mystmt(stmt,rc);
+
+ myassert(is_null == 1);
+
+ rc = mysql_fetch(stmt);
+ myassert(rc == MYSQL_NO_DATA);
+
+ rc = mysql_fetch_column(stmt,bind,1,0);
+ mystmt_r(stmt,rc);
+
+ mysql_stmt_close(stmt);
+}
+/*
+ To test mysql_fetch_column()
+*/
+static void test_fetch_column()
+{
+ MYSQL_STMT *stmt;
+ MYSQL_BIND bind[1];
+ char c2[20];
+ ulong l1, l2;
+ int rc, c1;
+
+ myheader("test_fetch_column");
+
+ rc= mysql_query(mysql,"drop table if exists test_column");
+ myquery(rc);
+
+ rc = mysql_query(mysql, "create table test_column(c1 int primary key auto_increment, c2 char(10))");
+ myquery(rc);
+
+ rc = mysql_query(mysql, "insert into test_column(c2) values('venu'),('mysql')");
+ myquery(rc);
+
+ 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].is_null= 0;
+ bind[0].length= &l2;
+
+ rc = mysql_execute(stmt);
+ mystmt(stmt,rc);
+
+ rc = mysql_stmt_store_result(stmt);
+ mystmt(stmt,rc);
+
+ rc = mysql_fetch_column(stmt,bind,1,0);
+ mystmt_r(stmt,rc);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ 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);
+ myassert(strncmp(c2,"venu",4)==0 && l2 == 4);
+
+ 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);
+ myassert(strcmp(c2,"venu")==0 && l2 == 4);
+
+ c1= 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= &l1;
+
+ rc = mysql_fetch_column(stmt,bind,0,0);
+ mystmt(stmt,rc);
+ fprintf(stdout, "\n col 0: %d(%ld)", c1, l1);
+ myassert(c1 == 1 && l1 == 4);
+
+ rc = mysql_fetch(stmt);
+ mystmt(stmt,rc);
+
+ 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);
+ myassert(strncmp(c2,"mysq",4)==0 && l2 == 5);
+
+ c2[0]= '\0'; l2= 0;
+ rc = mysql_fetch_column(stmt,bind,1,0);
+ mystmt(stmt,rc);
+ fprintf(stdout, "\n col 1: %si(%ld)", c2, l2);
+ 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;
+ bind[0].is_null= 0;
+ bind[0].length= &l1;
+
+ rc = mysql_fetch_column(stmt,bind,0,0);
+ mystmt(stmt,rc);
+ fprintf(stdout, "\n col 0: %d(%ld)", c1, l1);
+ myassert(c1 == 2 && l1 == 4);
+
+ rc = mysql_fetch(stmt);
+ myassert(rc == MYSQL_NO_DATA);
+
+ rc = mysql_fetch_column(stmt,bind,1,0);
+ mystmt_r(stmt,rc);
+
+ mysql_stmt_close(stmt);
+}
/*
Read and parse arguments and MySQL options from my.cnf
@@ -6408,7 +7106,6 @@ static struct my_option client_test_long_options[] =
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
-
static void client_test_print_version(void)
{
fprintf(stdout, "%s Distrib %s, for %s (%s)\n\n",
@@ -6517,7 +7214,13 @@ int main(int argc, char **argv)
start_time= time((time_t *)0);
- test_fetch_nobuffs(); /* to fecth without prior bound buffers */
+ client_query(); /* simple client query test */
+ client_store_result(); /* usage of mysql_store_result() */
+ client_use_result(); /* usage of mysql_use_result() */
+#if NOT_YET_WORKING
+ /* Used for internal new development debugging */
+ test_drop_temp(); /* to test DROP TEMPORARY TABLE Access checks */
+#endif
test_open_direct(); /* direct execution in the middle of open stmts */
test_fetch_null(); /* to fetch null data */
test_fetch_date(); /* to fetch date,time and timestamp */
@@ -6559,9 +7262,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 */
test_tran_innodb(); /* transaction test on InnoDB table type */
test_prepare_ext(); /* test prepare with all types conversion -- TODO */
@@ -6600,6 +7300,14 @@ int main(int argc, char **argv)
test_frm_bug(); /* test the crash when .frm is invalid, bug #93 */
test_explain_bug(); /* test for the EXPLAIN, bug #115 */
test_decimal_bug(); /* test for the decimal bug */
+ 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 */
end_time= time((time_t *)0);
total_time+= difftime(end_time, start_time);