Commit 84d0efec authored by unknown's avatar unknown

client_test.c:

  Modification to new API test
sql_prepare.cc:
  Fix for lock_types


sql/sql_prepare.cc:
  Fix for lock_types
tests/client_test.c:
  Modification to new API test
parent 671ed6ac
......@@ -276,8 +276,9 @@ static void setup_param_functions(Item_param *param, uchar read_pos)
from client ..
*/
static bool setup_params_data(THD *thd, PREP_STMT *stmt)
static bool setup_params_data(PREP_STMT *stmt)
{
THD *thd= stmt->thd;
List<Item> &params= thd->lex.param_list;
List_iterator<Item> param_iterator(params);
Item_param *param;
......@@ -375,8 +376,7 @@ static int check_prepare_fields(THD *thd,TABLE *table, List<Item> &fields,
static bool mysql_test_insert_fields(PREP_STMT *stmt,
TABLE_LIST *table_list,
List<Item> &fields,
List<List_item> &values_list,
thr_lock_type lock_type)
List<List_item> &values_list)
{
THD *thd= stmt->thd;
TABLE *table;
......@@ -384,7 +384,7 @@ static bool mysql_test_insert_fields(PREP_STMT *stmt,
List_item *values;
DBUG_ENTER("mysql_test_insert_fields");
if (!(table = open_ltable(thd,table_list,lock_type)))
if (!(table = open_ltable(thd,table_list,table_list->lock_type)))
DBUG_RETURN(1);
if ((values= its++))
......@@ -427,13 +427,13 @@ static bool mysql_test_insert_fields(PREP_STMT *stmt,
static bool mysql_test_upd_fields(PREP_STMT *stmt, TABLE_LIST *table_list,
List<Item> &fields, List<Item> &values,
COND *conds, thr_lock_type lock_type)
COND *conds)
{
THD *thd= stmt->thd;
TABLE *table;
DBUG_ENTER("mysql_test_upd_fields");
if (!(table = open_ltable(thd,table_list,lock_type)))
if (!(table = open_ltable(thd,table_list,table_list->lock_type)))
DBUG_RETURN(1);
if (setup_tables(table_list) || setup_fields(thd,table_list,fields,1,0,0) ||
......@@ -465,7 +465,7 @@ static bool mysql_test_upd_fields(PREP_STMT *stmt, TABLE_LIST *table_list,
static bool mysql_test_select_fields(PREP_STMT *stmt, TABLE_LIST *tables,
List<Item> &fields, List<Item> &values,
COND *conds, ORDER *order, ORDER *group,
Item *having, thr_lock_type lock_type)
Item *having)
{
TABLE *table;
bool hidden_group_fields;
......@@ -473,7 +473,7 @@ static bool mysql_test_select_fields(PREP_STMT *stmt, TABLE_LIST *tables,
List<Item> all_fields(fields);
DBUG_ENTER("mysql_test_select_fields");
if (!(table = open_ltable(thd,tables,lock_type)))
if (!(table = open_ltable(thd,tables,tables->lock_type)))
DBUG_RETURN(1);
thd->used_tables=0; // Updated by setup_fields
......@@ -546,21 +546,19 @@ static bool send_prepare_results(PREP_STMT *stmt)
case SQLCOM_INSERT:
if (mysql_test_insert_fields(stmt, tables, lex->field_list,
lex->many_values, lex->lock_option))
lex->many_values))
goto abort;
break;
case SQLCOM_UPDATE:
if (mysql_test_upd_fields(stmt, tables, select_lex->item_list,
lex->value_list, select_lex->where,
lex->lock_option))
lex->value_list, select_lex->where))
goto abort;
break;
case SQLCOM_DELETE:
if (mysql_test_upd_fields(stmt, tables, select_lex->item_list,
lex->value_list, select_lex->where,
lex->lock_option))
lex->value_list, select_lex->where))
goto abort;
break;
......@@ -568,8 +566,7 @@ static bool send_prepare_results(PREP_STMT *stmt)
if (mysql_test_select_fields(stmt, tables, select_lex->item_list,
lex->value_list, select_lex->where,
(ORDER*) select_lex->order_list.first,
(ORDER*) select_lex->group_list.first,
select_lex->having, lex->lock_option))
(ORDER*) select_lex->group_list.first, select_lex->having))
goto abort;
break;
......@@ -712,11 +709,9 @@ void mysql_stmt_execute(THD *thd, char *packet)
DBUG_VOID_RETURN;
}
if (stmt->param_count && setup_params_data(thd, stmt))
if (stmt->param_count && setup_params_data(stmt))
DBUG_VOID_RETURN;
MEM_ROOT thd_root= thd->mem_root;
thd->mem_root = thd->con_root;
if (!(specialflag & SPECIAL_NO_PRIOR))
my_pthread_setprio(pthread_self(),QUERY_PRIOR);
......@@ -726,14 +721,12 @@ void mysql_stmt_execute(THD *thd, char *packet)
mysql_delete(), mysql_update() and mysql_select() to not to
have re-check on setup_* and other things ..
*/
mysql_execute_command(thd);
mysql_execute_command(stmt->thd);
thd->last_prepared_stmt= stmt;
if (!(specialflag & SPECIAL_NO_PRIOR))
my_pthread_setprio(pthread_self(), WAIT_PRIOR);
thd->mem_root= thd_root;
DBUG_VOID_RETURN;
}
......
......@@ -48,15 +48,22 @@
#define false 0
#endif
#ifndef bzero
#define bzero(A,B) memset(A,0,B)
#endif
/* set default options */
static char *opt_db=(char *)"test";
static char *opt_user=(char *)"root";
static char *opt_password=(char *)"";
static char *opt_db=0;
static char *opt_user=0;
static char *opt_password=0;
static char *opt_host=0;
static char *opt_unix_socket=0;
static uint opt_port;
static my_bool tty_password=0;
static MYSQL *mysql=0;
static char query[255];
#define myheader(str) { printf("\n\n#######################\n"); \
printf("%s",str); \
printf("\n#######################\n"); \
......@@ -64,9 +71,9 @@ static my_bool tty_password=0;
#define init_bind(x) (bzero(x,sizeof(x)))
void print_error(MYSQL *mysql, const char *msg)
void print_error(const char *msg)
{
if(mysql)
if (mysql)
{
fprintf(stderr,"\n [MySQL]%s \n",mysql_error(mysql));
}
......@@ -75,14 +82,14 @@ void print_error(MYSQL *mysql, const char *msg)
void print_st_error(MYSQL_STMT *stmt, const char *msg)
{
if(stmt)
if (stmt)
{
fprintf(stderr,"\n [MySQL]%s \n",mysql_stmt_error(stmt));
}
else if(msg) fprintf(stderr, "%s\n", msg);
}
#define myerror(mysql, msg) print_error(mysql, msg)
#define myerror(msg) print_error(msg)
#define mysterror(stmt, msg) print_st_error(stmt, msg)
#define myassert(x) if(x) {\
......@@ -94,17 +101,17 @@ void print_st_error(MYSQL_STMT *stmt, const char *msg)
exit(1);\
}
#define myquery(mysql,r) \
#define myquery(r) \
if( r != 0) \
{ \
myerror(mysql,NULL); \
myerror(NULL); \
myassert(true);\
}
#define myquery_r(mysql,r) \
#define myquery_r(r) \
if( r != 0) \
{ \
myerror(mysql,NULL); \
myerror(NULL); \
myassert_r(true);\
}
......@@ -115,17 +122,17 @@ if( r != 0) \
myassert(true);\
}
#define myxquery(mysql,stmt) \
#define myxquery(stmt) \
if( stmt == 0) \
{ \
myerror(mysql,NULL); \
myerror(NULL); \
myassert(true);\
}
#define myxquery_r(mysql,stmt) \
#define myxquery_r(stmt) \
if( stmt == 0) \
{ \
myerror(mysql,NULL); \
myerror(NULL); \
myassert_r(true);\
} \
else myassert(true);
......@@ -137,40 +144,37 @@ if( r != 0) \
myassert_r(true);\
}
#define mytest(mysql,x) if(!x) {myerror(mysql,NULL);myassert(true);}
#define mytest_r(mysql,x) if(x) {myerror(mysql,NULL);myassert(true);}
#define mytest(x) if(!x) {myerror(NULL);myassert(true);}
#define mytest_r(x) if(x) {myerror(NULL);myassert(true);}
/********************************************************
* connect to the server *
*********************************************************/
MYSQL *client_connect()
static void client_connect()
{
MYSQL *mysql;
myheader("client_connect");
if(!(mysql = mysql_init(NULL)))
{
myerror(NULL, "mysql_init() failed");
myerror("mysql_init() failed");
exit(0);
}
if (!(mysql_real_connect(mysql,opt_host,opt_user,
opt_password, opt_db, opt_port,
opt_password, opt_db ? opt_db:"test", opt_port,
opt_unix_socket, 0)))
{
myerror(mysql, "connection failed");
myerror("connection failed");
exit(0);
}
/* set AUTOCOMMIT to ON*/
mysql_autocommit(mysql, true);
return(mysql);
}
/********************************************************
* close the connection *
*********************************************************/
void client_disconnect(MYSQL *mysql)
void client_disconnect()
{
myheader("client_disconnect");
......@@ -180,39 +184,39 @@ void client_disconnect(MYSQL *mysql)
/********************************************************
* query processing *
*********************************************************/
void client_query(MYSQL *mysql)
void client_query()
{
int rc;
myheader("client_query");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS myclient_test");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE myclient_test(id int primary key auto_increment,\
name varchar(20))");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE myclient_test(id int, name varchar(20))");
myquery_r(mysql,rc);
myquery_r(rc);
rc = mysql_query(mysql,"INSERT INTO myclient_test(name) VALUES('mysql')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"INSERT INTO myclient_test(name) VALUES('monty')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"INSERT INTO myclient_test(name) VALUES('venu')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"INSERT INTO myclient_test(name) VALUES('deleted')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"UPDATE myclient_test SET name='updated' WHERE name='deleted'");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"UPDATE myclient_test SET id=3 WHERE name='updated'");
myquery_r(mysql,rc);
myquery_r(rc);
}
/********************************************************
......@@ -226,12 +230,12 @@ void my_print_dashes(MYSQL_RES *result)
mysql_field_seek(result,0);
fputc('\t',stdout);
fputc('+', stdout);
for(i=0; i< mysql_num_fields(result); i++)
{
field = mysql_fetch_field(result);
for(j=0; j < field->max_length+2; j++)
fputc('-',stdout);
fputc('-',stdout);
fputc('+',stdout);
}
fputc('\n',stdout);
......@@ -247,7 +251,7 @@ void my_print_result_metadata(MYSQL_RES *result)
unsigned int field_count;
mysql_field_seek(result,0);
fputc('\n', stdout);
fputc('\n', stdout);
field_count = mysql_num_fields(result);
for(i=0; i< field_count; i++)
......@@ -263,7 +267,7 @@ void my_print_result_metadata(MYSQL_RES *result)
my_print_dashes(result);
fputc('\t',stdout);
fputc('|', stdout);
mysql_field_seek(result,0);
for(i=0; i< field_count; i++)
{
......@@ -277,7 +281,7 @@ void my_print_result_metadata(MYSQL_RES *result)
/********************************************************
* process the result set *
*********************************************************/
int my_process_result_set(MYSQL *mysql, MYSQL_RES *result)
int my_process_result_set(MYSQL_RES *result)
{
MYSQL_ROW row;
MYSQL_FIELD *field;
......@@ -287,7 +291,7 @@ int my_process_result_set(MYSQL *mysql, MYSQL_RES *result)
my_print_result_metadata(result);
while((row = mysql_fetch_row(result)) != NULL)
{
{
mysql_field_seek(result,0);
fputc('\t',stdout);
fputc('|',stdout);
......@@ -310,49 +314,83 @@ int my_process_result_set(MYSQL *mysql, MYSQL_RES *result)
if (mysql_errno(mysql) != 0)
fprintf(stderr, "\n\tmysql_fetch_row() failed\n");
else
else
fprintf(stdout,"\n\t%d rows returned\n", row_count);
return(row_count);
}
static void verify_col_data(const char *table, const char *col, const char *exp_data)
{
MYSQL_STMT *stmt;
MYSQL_BIND bind[1];
char data[255];
int rc;
init_bind(bind);
bind[0].buffer_type=FIELD_TYPE_STRING;
bind[0].buffer= (char *)data;
bind[0].buffer_length= sizeof(data);
sprintf(query, "SELECT `%s` FROM `%s`", col, table);
printf("\n %s", query);
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(stmt);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
printf("\n data : %s (expected: %s)",data, exp_data);
assert(strcmp(data,exp_data)==0);
mysql_stmt_close(stmt);
}
/********************************************************
* store result processing *
*********************************************************/
void client_store_result(MYSQL *mysql)
void client_store_result()
{
MYSQL_RES *result;
int rc;
myheader("client_store_result");
rc = mysql_query(mysql, "SELECT * FROM myclient_test");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
my_process_result_set(mysql,result);
my_process_result_set(result);
mysql_free_result(result);
}
/********************************************************
* use result processing *
*********************************************************/
void client_use_result(MYSQL *mysql)
void client_use_result()
{
MYSQL_RES *result;
int rc;
myheader("client_use_result");
rc = mysql_query(mysql, "SELECT * FROM myclient_test");
myquery(mysql,rc);
rc = mysql_query(mysql, "SELECT * FROM myclient_test");
myquery(rc);
/* get the result */
result = mysql_use_result(mysql);
mytest(mysql,result);
mytest(result);
my_process_result_set(mysql,result);
my_process_result_set(result);
mysql_free_result(result);
}
......@@ -360,7 +398,7 @@ void client_use_result(MYSQL *mysql)
/********************************************************
* query processing *
*********************************************************/
void test_debug_example(MYSQL *mysql)
void test_debug_example()
{
int rc;
MYSQL_RES *result;
......@@ -368,35 +406,35 @@ void test_debug_example(MYSQL *mysql)
myheader("test_debug_example");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_debug_example");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_debug_example(id int primary key auto_increment,\
name varchar(20),xxx int)");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"INSERT INTO test_debug_example(name) VALUES('mysql')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"UPDATE test_debug_example SET name='updated' WHERE name='deleted'");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"SELECT * FROM test_debug_example");
myquery(mysql,rc);
myquery(rc);
result = mysql_use_result(mysql);
mytest(mysql,result);
mytest(result);
my_process_result_set(mysql,result);
my_process_result_set(result);
mysql_free_result(result);
rc = mysql_query(mysql,"DROP TABLE test_debug_example");
myquery(mysql,rc);
myquery(rc);
}
/********************************************************
* to test autocommit feature *
*********************************************************/
void test_tran_bdb(MYSQL *mysql)
void test_tran_bdb()
{
MYSQL_RES *result;
MYSQL_ROW row;
......@@ -406,75 +444,75 @@ void test_tran_bdb(MYSQL *mysql)
/* set AUTOCOMMIT to OFF */
rc = mysql_autocommit(mysql, false);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS my_demo_transaction");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS my_demo_transaction");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* create the table 'mytran_demo' of type BDB' or 'InnoDB' */
rc = mysql_query(mysql,"CREATE TABLE my_demo_transaction(col1 int ,col2 varchar(30)) TYPE = BDB");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* insert a row and commit the transaction */
rc = mysql_query(mysql,"INSERT INTO my_demo_transaction VALUES(10,'venu')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* now insert the second row, and rollback the transaction */
rc = mysql_query(mysql,"INSERT INTO my_demo_transaction VALUES(20,'mysql')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_rollback(mysql);
myquery(mysql,rc);
myquery(rc);
/* delete first row, and rollback it */
rc = mysql_query(mysql,"DELETE FROM my_demo_transaction WHERE col1 = 10");
myquery(mysql,rc);
myquery(rc);
rc = mysql_rollback(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM my_demo_transaction");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
my_process_result_set(mysql,result);
my_process_result_set(result);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM my_demo_transaction");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_use_result(mysql);
mytest(mysql,result);
mytest(result);
row = mysql_fetch_row(result);
mytest(mysql,row);
mytest(row);
row = mysql_fetch_row(result);
mytest_r(mysql,row);
mytest_r(row);
mysql_free_result(result);
mysql_free_result(result);
mysql_autocommit(mysql,true);
}
/********************************************************
* to test autocommit feature *
*********************************************************/
void test_tran_innodb(MYSQL *mysql)
void test_tran_innodb()
{
MYSQL_RES *result;
MYSQL_ROW row;
......@@ -484,68 +522,68 @@ void test_tran_innodb(MYSQL *mysql)
/* set AUTOCOMMIT to OFF */
rc = mysql_autocommit(mysql, false);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS my_demo_transaction");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS my_demo_transaction");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* create the table 'mytran_demo' of type BDB' or 'InnoDB' */
rc = mysql_query(mysql,"CREATE TABLE my_demo_transaction(col1 int ,col2 varchar(30)) TYPE = InnoDB");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* insert a row and commit the transaction */
rc = mysql_query(mysql,"INSERT INTO my_demo_transaction VALUES(10,'venu')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* now insert the second row, and rollback the transaction */
rc = mysql_query(mysql,"INSERT INTO my_demo_transaction VALUES(20,'mysql')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_rollback(mysql);
myquery(mysql,rc);
myquery(rc);
/* delete first row, and rollback it */
rc = mysql_query(mysql,"DELETE FROM my_demo_transaction WHERE col1 = 10");
myquery(mysql,rc);
myquery(rc);
rc = mysql_rollback(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM my_demo_transaction");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
my_process_result_set(mysql,result);
my_process_result_set(result);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM my_demo_transaction");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_use_result(mysql);
mytest(mysql,result);
mytest(result);
row = mysql_fetch_row(result);
mytest(mysql,row);
mytest(row);
row = mysql_fetch_row(result);
mytest_r(mysql,row);
mytest_r(row);
mysql_free_result(result);
mysql_autocommit(mysql,true);
mysql_autocommit(mysql,true);
}
......@@ -553,27 +591,26 @@ void test_tran_innodb(MYSQL *mysql)
To test simple prepares of all DML statements
*********************************************************/
void test_prepare_simple(MYSQL *mysql)
void test_prepare_simple()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
myheader("test_prepare_simple");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_simple");
myquery(mysql,rc);
myheader("test_prepare_simple");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_simple");
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_prepare_simple(id int, name varchar(50))");
myquery(mysql,rc);
myquery(rc);
/* alter table */
query = "ALTER TABLE test_prepare_simple ADD new char(20)";
strcpy(query,"ALTER TABLE test_prepare_simple ADD new char(20)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout,"\n total parameters in alter:%d\n", param_count);
......@@ -581,9 +618,9 @@ void test_prepare_simple(MYSQL *mysql)
mysql_stmt_close(stmt);
/* insert */
query = "INSERT INTO test_prepare_simple VALUES(?,?)";
strcpy(query,"INSERT INTO test_prepare_simple VALUES(?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout,"\n total parameters in insert:%d\n", param_count);
......@@ -591,9 +628,9 @@ void test_prepare_simple(MYSQL *mysql)
mysql_stmt_close(stmt);
/* update */
query = "UPDATE test_prepare_simple SET id=? WHERE id=? AND name= ?";
strcpy(query,"UPDATE test_prepare_simple SET id=? WHERE id=? AND name= ?");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout,"\n total parameters in update:%d\n", param_count);
......@@ -601,9 +638,9 @@ void test_prepare_simple(MYSQL *mysql)
mysql_stmt_close(stmt);
/* delete */
query = "DELETE FROM test_prepare_simple WHERE id=10";
strcpy(query,"DELETE FROM test_prepare_simple WHERE id=10");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout,"\n total parameters in delete:%d\n", param_count);
......@@ -614,9 +651,9 @@ void test_prepare_simple(MYSQL *mysql)
mysql_stmt_close(stmt);
/* delete */
query = "DELETE FROM test_prepare_simple WHERE id=?";
strcpy(query,"DELETE FROM test_prepare_simple WHERE id=?");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout,"\n total parameters in delete:%d\n", param_count);
......@@ -627,9 +664,9 @@ void test_prepare_simple(MYSQL *mysql)
mysql_stmt_close(stmt);
/* select */
query = "SELECT * FROM test_prepare_simple WHERE id=? AND name= ?";
strcpy(query,"SELECT * FROM test_prepare_simple WHERE id=? AND name= ?");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout,"\n total parameters in select:%d\n", param_count);
......@@ -639,35 +676,33 @@ void test_prepare_simple(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
}
/********************************************************
* to test simple prepare field results *
*********************************************************/
void test_prepare_field_result(MYSQL *mysql)
void test_prepare_field_result()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
myheader("test_prepare_field_result");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_field_result");
myquery(mysql,rc);
myheader("test_prepare_field_result");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_field_result");
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_prepare_field_result(id int, name varchar(50), extra int)");
myquery(mysql,rc);
myquery(rc);
/* insert */
query = "SELECT id,name FROM test_prepare_field_result WHERE id=?";
strcpy(query,"SELECT id,name FROM test_prepare_field_result WHERE id=?");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout,"\n total parameters in insert:%d\n", param_count);
......@@ -676,49 +711,48 @@ void test_prepare_field_result(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
}
/********************************************************
* to test simple prepare field results *
*********************************************************/
void test_prepare_syntax(MYSQL *mysql)
void test_prepare_syntax()
{
MYSQL_STMT *stmt;
int rc;
const char *query;
myheader("test_prepare_syntax");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_syntax");
myquery(mysql,rc);
myheader("test_prepare_syntax");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_syntax");
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_prepare_syntax(id int, name varchar(50), extra int)");
myquery(mysql,rc);
myquery(rc);
query = "INSERT INTO test_prepare_syntax VALUES(?";
strcpy(query,"INSERT INTO test_prepare_syntax VALUES(?");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery_r(mysql,stmt);
myxquery_r(stmt);
query = "SELECT id,name FROM test_prepare_syntax WHERE id=? AND WHERE";
strcpy(query,"SELECT id,name FROM test_prepare_syntax WHERE id=? AND WHERE");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery_r(mysql,stmt);
myxquery_r(stmt);
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
}
/********************************************************
* to test simple prepare *
*********************************************************/
void test_prepare(MYSQL *mysql)
{
void test_prepare()
{
MYSQL_STMT *stmt;
int rc,param_count;
char query[200];
......@@ -730,30 +764,30 @@ void test_prepare(MYSQL *mysql)
double real_data;
double double_data;
MYSQL_RES *result;
MYSQL_BIND bind[8];
MYSQL_BIND bind[8];
myheader("test_prepare");
myheader("test_prepare");
init_bind(bind);
rc = mysql_autocommit(mysql, true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS my_prepare");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS my_prepare");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE my_prepare(col1 tinyint,\
col2 varchar(50), col3 int,\
col4 smallint, col5 bigint, \
col6 float, col7 double )");
myquery(mysql,rc);
myquery(rc);
/* insert by prepare */
strcpy(query,"INSERT INTO my_prepare VALUES(?,?,?,?,?,?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
......@@ -765,22 +799,23 @@ void test_prepare(MYSQL *mysql)
/* string */
bind[1].buffer_type=FIELD_TYPE_STRING;
bind[1].buffer=str_data;
bind[1].buffer_length=sizeof(str_data);
/* integer */
bind[2].buffer_type=FIELD_TYPE_LONG;
bind[2].buffer= (gptr)&int_data;
bind[2].buffer= (gptr)&int_data;
/* short */
bind[3].buffer_type=FIELD_TYPE_SHORT;
bind[3].buffer= (gptr)&small_data;
bind[3].buffer= (gptr)&small_data;
/* bigint */
bind[4].buffer_type=FIELD_TYPE_LONGLONG;
bind[4].buffer= (gptr)&big_data;
bind[4].buffer= (gptr)&big_data;
/* float */
bind[5].buffer_type=FIELD_TYPE_DOUBLE;
bind[5].buffer= (gptr)&real_data;
bind[5].buffer= (gptr)&real_data;
/* double */
bind[6].buffer_type=FIELD_TYPE_DOUBLE;
bind[6].buffer= (gptr)&double_data;
bind[6].buffer= (gptr)&double_data;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
......@@ -807,17 +842,17 @@ void test_prepare(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM my_prepare");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert((int)tiny_data == my_process_result_set(mysql,result));
assert((int)tiny_data == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -825,37 +860,37 @@ void test_prepare(MYSQL *mysql)
/********************************************************
* to test double comparision *
*********************************************************/
void test_double_compare(MYSQL *mysql)
{
void test_double_compare()
{
MYSQL_STMT *stmt;
int rc,param_count;
char query[200],real_data[10], tiny_data;
double double_data;
MYSQL_RES *result;
MYSQL_BIND bind[3];
MYSQL_BIND bind[3];
myheader("test_double_compare");
myheader("test_double_compare");
init_bind(bind);
rc = mysql_autocommit(mysql, true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_double_compare");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_double_compare");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_double_compare(col1 tinyint,\
col2 float, col3 double )");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"INSERT INTO test_double_compare VALUES(1,10.2,34.5)");
myquery(mysql,rc);
myquery(rc);
strcpy(query, "UPDATE test_double_compare SET col1=100 WHERE col1 = ? AND col2 = ? AND COL3 = ?");
stmt = mysql_prepare(mysql,query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in update:%d\n", param_count);
......@@ -865,11 +900,12 @@ void test_double_compare(MYSQL *mysql)
bind[0].buffer=(gptr)&tiny_data;
/* string->float */
bind[1].buffer_type=FIELD_TYPE_STRING;
bind[1].buffer= (gptr)&real_data;
bind[1].buffer= (gptr)&real_data;
bind[1].buffer_length=10;
/* double */
bind[2].buffer_type=FIELD_TYPE_DOUBLE;
bind[2].buffer= (gptr)&double_data;
bind[2].buffer= (gptr)&double_data;
tiny_data = 1;
strcpy(real_data,"10.2");
double_data = 34.5;
......@@ -881,22 +917,22 @@ void test_double_compare(MYSQL *mysql)
rc = (int)mysql_affected_rows(mysql);
printf("\n total affected rows:%d",rc);
mysql_stmt_close(stmt);
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM test_double_compare");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert((int)tiny_data == my_process_result_set(mysql,result));
assert((int)tiny_data == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -907,43 +943,43 @@ void test_double_compare(MYSQL *mysql)
/********************************************************
* to test simple null *
*********************************************************/
void test_null(MYSQL *mysql)
void test_null()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
int nData=1;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
myheader("test_null");
myheader("test_null");
init_bind(bind);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_null");
myquery(mysql,rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_null");
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_null(col1 int,col2 varchar(50))");
myquery(mysql,rc);
myquery(rc);
/* insert by prepare, wrong column name */
query = "INSERT INTO test_null(col3,col2) VALUES(?,?)";
strcpy(query,"INSERT INTO test_null(col3,col2) VALUES(?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery_r(mysql,stmt);
myxquery_r(stmt);
query = "INSERT INTO test_null(col1,col2) VALUES(?,?)";
strcpy(query,"INSERT INTO test_null(col1,col2) VALUES(?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
assert(param_count == 2);
bind[0].is_null=1;
bind[1].is_null=1; /* string data */
bind[0].buffer_type=MYSQL_TYPE_NULL;
bind[1]=bind[0]; /* string data */
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
......@@ -957,19 +993,18 @@ void test_null(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM test_null");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(nData == my_process_result_set(mysql,result));
assert(nData == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -977,20 +1012,19 @@ void test_null(MYSQL *mysql)
/********************************************************
* to test simple select *
*********************************************************/
void test_select_simple(MYSQL *mysql)
void test_select_simple()
{
MYSQL_STMT *stmt;
int rc,length;
const char query[100];
MYSQL_RES *result;
myheader("test_select_simple");
myheader("test_select_simple");
/* insert by prepare */
strcpy((char *)query, "SHOW TABLES FROM mysql");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
length = mysql_param_count(stmt);
fprintf(stdout," total parameters in select:%d\n", length);
......@@ -998,25 +1032,27 @@ void test_select_simple(MYSQL *mysql)
rc = mysql_execute(stmt);
mystmt(stmt, rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
my_process_result_set(mysql,result);
my_process_result_set(result);
mysql_free_result(result);
mysql_stmt_close(stmt);
#if 0
strcpy((char *)query , "SELECT @@ VERSION");
length = strlen(query);
rc = mysql_query(mysql,query);
mytest(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
my_process_result_set(mysql,result);
my_process_result_set(result);
mysql_free_result(result);
#endif
}
......@@ -1025,52 +1061,51 @@ void test_select_simple(MYSQL *mysql)
/********************************************************
* to test simple select *
*********************************************************/
void test_select(MYSQL *mysql)
void test_select()
{
MYSQL_STMT *stmt;
int rc,param_count=0;
const char *query;
char *szData=(char *)"updated-value";
int nData=1;
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
MYSQL_RES *result;
myheader("test_select");
myheader("test_select");
init_bind(bind);
rc = mysql_autocommit(mysql,true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_select");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_select");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_select(id int,name varchar(50))");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* insert a row and commit the transaction */
rc = mysql_query(mysql,"INSERT INTO test_select VALUES(10,'venu')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* now insert the second row, and rollback the transaction */
rc = mysql_query(mysql,"INSERT INTO test_select VALUES(20,'mysql')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
query = "SELECT * FROM test_select WHERE id=? AND name=?";
strcpy(query,"SELECT * FROM test_select WHERE id=? AND name=?");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in select:%d\n", param_count);
......@@ -1081,20 +1116,21 @@ void test_select(MYSQL *mysql)
szData=(char *)"venu";
bind[1].buffer_type=FIELD_TYPE_STRING;
bind[1].buffer=szData;
bind[1].buffer_length=4;
bind[0].buffer=(gptr)&nData;
bind[0].buffer_type=FIELD_TYPE_LONG;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert( 1 == my_process_result_set(mysql,result));
assert( 1 == my_process_result_set(result));
mysql_free_result(result);
mysql_stmt_close(stmt);
......@@ -1108,48 +1144,46 @@ void test_select(MYSQL *mysql)
/********************************************************
* to test simple update *
*********************************************************/
void test_simple_update(MYSQL *mysql)
void test_simple_update()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
char *szData=(char *)"updated-value";
char szData[25];
int nData=1;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
myheader("test_simple_update");
myheader("test_simple_update");
init_bind(bind);
rc = mysql_autocommit(mysql,true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_update");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_update");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_update(col1 int,\
col2 varchar(50), col3 int )");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"INSERT INTO test_update VALUES(1,'MySQL',100)");
myquery(mysql,rc);
myquery(rc);
assert(1 == mysql_affected_rows(mysql));
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* insert by prepare */
query = "UPDATE test_update SET col2=? WHERE col1=?";
strcpy(query,"UPDATE test_update SET col2=? WHERE col1=?");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in update:%d\n", param_count);
......@@ -1158,9 +1192,10 @@ void test_simple_update(MYSQL *mysql)
nData=1;
bind[0].buffer_type=FIELD_TYPE_STRING;
bind[0].buffer=szData; /* string data */
bind[0].buffer_length=sprintf(szData,"updated-data");
bind[1].buffer=(gptr)&nData;
bind[1].buffer_type=FIELD_TYPE_LONG;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
......@@ -1172,17 +1207,17 @@ void test_simple_update(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM test_update");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(1 == my_process_result_set(mysql,result));
assert(1 == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -1190,53 +1225,58 @@ void test_simple_update(MYSQL *mysql)
/********************************************************
* to test simple long data handling *
*********************************************************/
void test_long_data(MYSQL *mysql)
void test_long_data()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
int rc,param_count, int_data=10;
char *data=NullS;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_BIND bind[3];
myheader("test_long_data");
myheader("test_long_data");
init_bind(bind);
rc = mysql_autocommit(mysql,true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_long_data");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_long_data");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_long_data(col1 int,\
col2 long varchar, col3 long varbinary)");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
strcpy(query,"INSERT INTO test_long_data(col1,col2) VALUES(?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery_r(stmt);
query = "INSERT INTO test_long_data(col2) VALUES(?)";
strcpy(query,"INSERT INTO test_long_data(col1,col2,col3) VALUES(?,?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
assert(param_count == 1);
assert(param_count == 3);
bind[0].buffer=data; /* string data */
bind[0].is_long_data=1; /* specify long data suppy during run-time */
bind[0].buffer=(char *)&int_data;
bind[0].buffer_type=FIELD_TYPE_LONG;
bind[1].is_long_data=1; /* specify long data suppy during run-time */
/* Non string or binary type, error */
bind[0].buffer_type=FIELD_TYPE_LONG;
bind[1].buffer_type=FIELD_TYPE_LONG;
rc = mysql_bind_param(stmt,bind);
fprintf(stdout,"mysql_bind_param() returned %d\n",rc);
mystmt_r(stmt, rc);
bind[0].buffer_type=FIELD_TYPE_STRING;
bind[1].buffer_type=FIELD_TYPE_STRING;
bind[2]=bind[1];
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
......@@ -1247,11 +1287,11 @@ void test_long_data(MYSQL *mysql)
data = (char *)"Micheal";
/* supply data in pieces */
rc = mysql_send_long_data(stmt,0,data,7,1);
rc = mysql_send_long_data(stmt,1,data,7,1);
mystmt(stmt, rc);
/* try to execute mysql_execute() now, it should return
MYSQL_NEED_DATA as the long data supply is not yet over
/* try to execute mysql_execute() now, it should return
MYSQL_NEED_DATA as the long data supply is not yet over
*/
rc = mysql_execute(stmt);
fprintf(stdout,"mysql_execute() returned %d\n",rc);
......@@ -1259,13 +1299,12 @@ void test_long_data(MYSQL *mysql)
/* append data again ..*/
/* supply data in pieces */
/* Indicate end of data */
data = (char *)" 'monty' widenius";
rc = mysql_send_long_data(stmt,0,data,17,0);
rc = mysql_send_long_data(stmt,1,data,17,1);
mystmt(stmt, rc);
/* Indiate end of data supply */
rc = mysql_send_long_data(stmt,0,0,0,1);
rc = mysql_send_long_data(stmt,2,"Venu (venu@mysql.com",4,1);
mystmt(stmt, rc);
/* execute */
......@@ -1274,55 +1313,54 @@ void test_long_data(MYSQL *mysql)
mystmt(stmt,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* now fetch the results ..*/
rc = mysql_query(mysql,"SELECT col2 FROM test_long_data");
myquery(mysql,rc);
rc = mysql_query(mysql,"SELECT * FROM test_long_data");
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(1 == my_process_result_set(mysql,result));
assert(1 == my_process_result_set(result));
mysql_free_result(result);
}
/********************************************************
* to test long data (string) handling *
*********************************************************/
void test_long_data_str(MYSQL *mysql)
void test_long_data_str()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
char data[255];
long length;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
myheader("test_long_data_str");
myheader("test_long_data_str");
init_bind(bind);
rc = mysql_autocommit(mysql,true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_long_data_str");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_long_data_str");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_long_data_str(id int, longstr long varchar)");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
query = "INSERT INTO test_long_data_str VALUES(?,?)";
strcpy(query,"INSERT INTO test_long_data_str VALUES(?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
......@@ -1354,8 +1392,8 @@ void test_long_data_str(MYSQL *mysql)
mystmt(stmt, rc);
}
/* try to execute mysql_execute() now, it should return
MYSQL_NEED_DATA as the long data supply is not yet over
/* try to execute mysql_execute() now, it should return
MYSQL_NEED_DATA as the long data supply is not yet over
*/
rc = mysql_execute(stmt);
fprintf(stdout,"mysql_execute() returned %d\n",rc);
......@@ -1374,17 +1412,17 @@ void test_long_data_str(MYSQL *mysql)
mysql_stmt_close(stmt);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* now fetch the results ..*/
rc = mysql_query(mysql,"SELECT LENGTH(longstr), longstr FROM test_long_data_str");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(1 == my_process_result_set(mysql,result));
assert(1 == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -1392,38 +1430,37 @@ void test_long_data_str(MYSQL *mysql)
/********************************************************
* to test long data (string) handling *
*********************************************************/
void test_long_data_str1(MYSQL *mysql)
void test_long_data_str1()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
char *data=(char *)"MySQL AB";
int length;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
myheader("test_long_data_str1");
myheader("test_long_data_str1");
init_bind(bind);
rc = mysql_autocommit(mysql,true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_long_data_str");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_long_data_str");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_long_data_str(longstr long varchar,blb long varbinary)");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
query = "INSERT INTO test_long_data_str VALUES(?,?)";
strcpy(query,"INSERT INTO test_long_data_str VALUES(?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
......@@ -1457,8 +1494,8 @@ void test_long_data_str1(MYSQL *mysql)
rc = mysql_send_long_data(stmt,1,data,2,0);
mystmt(stmt, rc);
}
/* try to execute mysql_execute() now, it should return
MYSQL_NEED_DATA as the long data supply is not yet over
/* try to execute mysql_execute() now, it should return
MYSQL_NEED_DATA as the long data supply is not yet over
*/
rc = mysql_execute(stmt);
fprintf(stdout,"mysql_execute() returned %d\n",rc);
......@@ -1468,14 +1505,14 @@ void test_long_data_str1(MYSQL *mysql)
/* Indiate end of data supply */
rc = mysql_send_long_data(stmt,1,0,0,1);
mystmt(stmt, rc);
rc = mysql_execute(stmt);
fprintf(stdout,"mysql_execute() returned %d\n",rc);
assert(rc == MYSQL_NEED_DATA);
rc = mysql_send_long_data(stmt,0,0,0,1);
mystmt(stmt, rc);
/* execute */
rc = mysql_execute(stmt);
fprintf(stdout,"mysql_execute() returned %d\n",rc);
......@@ -1484,17 +1521,17 @@ void test_long_data_str1(MYSQL *mysql)
mysql_stmt_close(stmt);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* now fetch the results ..*/
rc = mysql_query(mysql,"SELECT LENGTH(longstr),longstr,LENGTH(blb),blb FROM test_long_data_str");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(1 == my_process_result_set(mysql,result));
assert(1 == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -1502,38 +1539,37 @@ void test_long_data_str1(MYSQL *mysql)
/********************************************************
* to test long data (binary) handling *
*********************************************************/
void test_long_data_bin(MYSQL *mysql)
void test_long_data_bin()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
char data[255];
int length;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
myheader("test_long_data_bin");
myheader("test_long_data_bin");
init_bind(bind);
rc = mysql_autocommit(mysql,true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_long_data_bin");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_long_data_bin");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_long_data_bin(id int, longbin long varbinary)");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
query = "INSERT INTO test_long_data_bin VALUES(?,?)";
strcpy(query,"INSERT INTO test_long_data_bin VALUES(?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
......@@ -1564,8 +1600,8 @@ void test_long_data_bin(MYSQL *mysql)
mystmt(stmt, rc);
}
/* try to execute mysql_execute() now, it should return
MYSQL_NEED_DATA as the long data supply is not yet over
/* try to execute mysql_execute() now, it should return
MYSQL_NEED_DATA as the long data supply is not yet over
*/
rc = mysql_execute(stmt);
fprintf(stdout,"mysql_execute() returned %d\n",rc);
......@@ -1584,17 +1620,17 @@ void test_long_data_bin(MYSQL *mysql)
mysql_stmt_close(stmt);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* now fetch the results ..*/
rc = mysql_query(mysql,"SELECT LENGTH(longbin), longbin FROM test_long_data_bin");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(1 == my_process_result_set(mysql,result));
assert(1 == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -1602,65 +1638,63 @@ void test_long_data_bin(MYSQL *mysql)
/********************************************************
* to test simple delete *
*********************************************************/
void test_simple_delete(MYSQL *mysql)
void test_simple_delete()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
char szData[30]={0};
int nData=1;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
myheader("test_simple_delete");
myheader("test_simple_delete");
init_bind(bind);
rc = mysql_autocommit(mysql,true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_simple_delete");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_simple_delete");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_simple_delete(col1 int,\
col2 varchar(50), col3 int )");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"INSERT INTO test_simple_delete VALUES(1,'MySQL',100)");
myquery(mysql,rc);
myquery(rc);
assert(1 == mysql_affected_rows(mysql));
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* insert by prepare */
query = "DELETE FROM test_simple_delete WHERE col1=? AND col2=? AND col3=100";
strcpy(query,"DELETE FROM test_simple_delete WHERE col1=? AND col2=? AND col3=100");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in delete:%d\n", param_count);
assert(param_count == 2);
nData=1;
strcpy(szData,"MySQL");
bind[1].buffer_length = 5;
bind[1].buffer_type=FIELD_TYPE_STRING;
bind[1].buffer=szData; /* string data */
bind[1].buffer=szData; /* string data */
bind[0].buffer=(gptr)&nData;
bind[0].buffer_type=FIELD_TYPE_LONG;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
strcpy(szData,"MySQL");
//bind[1].buffer_length = 5;
nData=1;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
assert(1 == mysql_affected_rows(mysql));
......@@ -1669,17 +1703,17 @@ void test_simple_delete(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM test_simple_delete");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(0 == my_process_result_set(mysql,result));
assert(0 == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -1688,78 +1722,76 @@ void test_simple_delete(MYSQL *mysql)
/********************************************************
* to test simple update *
*********************************************************/
void test_update(MYSQL *mysql)
void test_update()
{
MYSQL_STMT *stmt;
int rc,param_count;
const char *query;
char *szData=(char *)"updated-value";
char szData[25];
int nData=1;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
myheader("test_update");
myheader("test_update");
init_bind(bind);
rc = mysql_autocommit(mysql,true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_update");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_update");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_update(col1 int primary key auto_increment,\
col2 varchar(50), col3 int )");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
query = "INSERT INTO test_update(col2,col3) VALUES(?,?)";
strcpy(query,"INSERT INTO test_update(col2,col3) VALUES(?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
assert(param_count == 2);
/* string data */
szData=(char *)"inserted-data";
bind[0].buffer_type=FIELD_TYPE_STRING;
bind[0].buffer=szData;
bind[0].buffer_length=sprintf(szData,"inserted-data");
bind[1].buffer=(gptr)&nData;
bind[1].buffer_type=FIELD_TYPE_LONG;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
nData=100;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
assert(1 == mysql_affected_rows(mysql));
mysql_stmt_close(stmt);
/* insert by prepare */
query = "UPDATE test_update SET col2=? WHERE col3=?";
strcpy(query,"UPDATE test_update SET col2=? WHERE col3=?");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in update:%d\n", param_count);
assert(param_count == 2);
nData=100;szData=(char *)"updated-data";
nData=100;
bind[0].buffer_type=FIELD_TYPE_STRING;
bind[0].buffer=szData;
bind[0].buffer_length=sprintf(szData,"updated-data");
bind[1].buffer=(gptr)&nData;
bind[1].buffer_type=FIELD_TYPE_LONG;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
......@@ -1771,17 +1803,17 @@ void test_update(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM test_update");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(1 == my_process_result_set(mysql,result));
assert(1 == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -1789,29 +1821,28 @@ void test_update(MYSQL *mysql)
/********************************************************
* to test simple prepare *
*********************************************************/
void test_init_prepare(MYSQL *mysql)
void test_init_prepare()
{
MYSQL_STMT *stmt;
int param_count, rc;
const char *query;
MYSQL_RES *result;
myheader("test_init_prepare");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS my_prepare");
myquery(mysql,rc);
myheader("test_init_prepare");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS my_prepare");
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE my_prepare(col1 int ,col2 varchar(50))");
myquery(mysql,rc);
myquery(rc);
/* insert by prepare */
query = "INSERT INTO my_prepare VALUES(10,'venu')";
strcpy(query,"INSERT INTO my_prepare VALUES(10,'venu')");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
......@@ -1824,17 +1855,17 @@ void test_init_prepare(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM my_prepare");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(1 == my_process_result_set(mysql,result));
assert(1 == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -1842,55 +1873,56 @@ void test_init_prepare(MYSQL *mysql)
/********************************************************
* to test simple bind result *
*********************************************************/
void test_bind_result(MYSQL *mysql)
void test_bind_result()
{
MYSQL_STMT *stmt;
int rc;
const char query[100];
int nData;
char szData[100];
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
myheader("test_bind_result");
init_bind(bind);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_bind_result");
myquery(mysql,rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_bind_result");
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_bind_result(col1 int ,col2 varchar(50))");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"INSERT INTO test_bind_result VALUES(10,'venu')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"INSERT INTO test_bind_result VALUES(20,'MySQL')");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* fetch */
/* fetch */
bind[0].buffer_type=FIELD_TYPE_LONG;
bind[0].buffer= (gptr) &nData; /* integer data */
bind[1].buffer_type=FIELD_TYPE_STRING;
bind[1].buffer=szData; /* string data */
bind[1].buffer_length=sizeof(szData);
strcpy((char *)query , "SELECT * FROM test_bind_result");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
mystmt(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
mystmt(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
......@@ -1915,30 +1947,29 @@ void test_bind_result(MYSQL *mysql)
/********************************************************
* to test simple prepare with all possible types *
*********************************************************/
void test_prepare_ext(MYSQL *mysql)
void test_prepare_ext()
{
MYSQL_STMT *stmt;
int rc,param_count;
char *query;
char *sql;
int nData=1;
MYSQL_RES *result;
char tData=1;
short sData=10;
longlong bData=20;
MYSQL_BIND bind_int[6];
MYSQL_BIND bind_int[6];
myheader("test_prepare_ext");
myheader("test_prepare_ext");
init_bind(bind_int);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_ext");
myquery(mysql,rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_ext");
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
query = (char *)"CREATE TABLE test_prepare_ext\
sql = (char *)"CREATE TABLE test_prepare_ext\
(\
c1 tinyint,\
c2 smallint,\
......@@ -1973,13 +2004,13 @@ void test_prepare_ext(MYSQL *mysql)
c31 enum('one','two','three'),\
c32 set('monday','tuesday','wednesday'))";
rc = mysql_query(mysql,query);
myquery(mysql,rc);
rc = mysql_query(mysql,sql);
myquery(rc);
/* insert by prepare - all integers */
query = (char *)"INSERT INTO test_prepare_ext(c1,c2,c3,c4,c5,c6) VALUES(?,?,?,?,?,?)";
strcpy(query,(char *)"INSERT INTO test_prepare_ext(c1,c2,c3,c4,c5,c6) VALUES(?,?,?,?,?,?)");
stmt = mysql_prepare(mysql,query, strlen(query));
myquery(mysql,rc);
myquery(rc);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
......@@ -2008,7 +2039,7 @@ void test_prepare_ext(MYSQL *mysql)
/*bigint*/
bind_int[5].buffer_type=FIELD_TYPE_LONGLONG;
bind_int[5].buffer= (void *)&bData;
rc = mysql_bind_param(stmt,bind_int);
mystmt(stmt, rc);
......@@ -2024,17 +2055,17 @@ void test_prepare_ext(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT c1,c2,c3,c4,c5,c6 FROM test_prepare_ext");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(nData == my_process_result_set(mysql,result));
assert(nData == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -2044,93 +2075,93 @@ void test_prepare_ext(MYSQL *mysql)
/********************************************************
* to test real and alias names *
*********************************************************/
void test_field_names(MYSQL *mysql)
void test_field_names()
{
int rc;
MYSQL_RES *result;
myheader("test_field_names");
myheader("test_field_names");
printf("\n%d,%d,%d",MYSQL_TYPE_DECIMAL,MYSQL_TYPE_NEWDATE,MYSQL_TYPE_ENUM);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_field_names1");
myquery(mysql,rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_field_names1");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_field_names2");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_field_names2");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_field_names1(id int,name varchar(50))");
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_field_names2(id int,name varchar(50))");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* with table name included with true column name */
rc = mysql_query(mysql,"SELECT id as 'id-alias' FROM test_field_names1");
myquery(mysql,rc);
myquery(rc);
result = mysql_use_result(mysql);
mytest(mysql,result);
mytest(result);
assert(0 == my_process_result_set(mysql,result));
mysql_free_result(result);
assert(0 == my_process_result_set(result));
mysql_free_result(result);
/* with table name included with true column name */
rc = mysql_query(mysql,"SELECT t1.id as 'id-alias',test_field_names2.name FROM test_field_names1 t1,test_field_names2");
myquery(mysql,rc);
myquery(rc);
result = mysql_use_result(mysql);
mytest(mysql,result);
mytest(result);
assert(0 == my_process_result_set(mysql,result));
assert(0 == my_process_result_set(result));
mysql_free_result(result);
}
/********************************************************
* to test warnings *
*********************************************************/
void test_warnings(MYSQL *mysql)
void test_warnings()
{
int rc;
MYSQL_RES *result;
myheader("test_warnings");
rc = mysql_query(mysql,"USE test");
myquery(mysql,rc);
rc = mysql_query(mysql,"SHOW WARNINGS");
myquery(mysql,rc);
myheader("test_warnings");
rc = mysql_query(mysql,"USE test");
myquery(rc);
rc = mysql_query(mysql,"SHOW WARNINGS");
myquery(rc);
result = mysql_use_result(mysql);
mytest(mysql,result);
mytest(result);
my_process_result_set(mysql,result);
my_process_result_set(result);
mysql_free_result(result);
}
/********************************************************
* to test errors *
*********************************************************/
void test_errors(MYSQL *mysql)
void test_errors()
{
int rc;
MYSQL_RES *result;
myheader("test_errors");
rc = mysql_query(mysql,"SHOW ERRORS");
myquery(mysql,rc);
myheader("test_errors");
rc = mysql_query(mysql,"SHOW ERRORS");
myquery(rc);
result = mysql_use_result(mysql);
mytest(mysql,result);
mytest(result);
my_process_result_set(mysql,result);
my_process_result_set(result);
mysql_free_result(result);
}
......@@ -2139,36 +2170,36 @@ void test_errors(MYSQL *mysql)
/********************************************************
* to test simple prepare-insert *
*********************************************************/
void test_insert(MYSQL *mysql)
{
void test_insert()
{
MYSQL_STMT *stmt;
int rc,param_count;
int rc,param_count, length;
char query[200];
char str_data[50];
char tiny_data;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_BIND bind[2];
myheader("test_insert");
myheader("test_insert");
rc = mysql_autocommit(mysql, true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prep_insert");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prep_insert");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_prep_insert(col1 tinyint,\
col2 varchar(50))");
myquery(mysql,rc);
myquery(rc);
/* insert by prepare */
bzero(bind, sizeof(bind));
strcpy(query,"INSERT INTO test_prep_insert VALUES(?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
......@@ -2180,14 +2211,15 @@ void test_insert(MYSQL *mysql)
/* string */
bind[1].buffer_type=FIELD_TYPE_STRING;
bind[1].buffer=str_data;
bind[1].length=(long *)&length;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
/* now, execute the prepared statement to insert 10 records.. */
for (tiny_data=0; tiny_data < 3; tiny_data++)
{
bind[1].buffer_length = sprintf(str_data,"MySQL%d",tiny_data);
length = sprintf(str_data,"MySQL%d",tiny_data);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
}
......@@ -2196,17 +2228,17 @@ void test_insert(MYSQL *mysql)
/* now fetch the results ..*/
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* test the results now, only one row should exists */
rc = mysql_query(mysql,"SELECT * FROM test_prep_insert");
myquery(mysql,rc);
myquery(rc);
/* get the result */
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert((int)tiny_data == my_process_result_set(mysql,result));
assert((int)tiny_data == my_process_result_set(result));
mysql_free_result(result);
}
......@@ -2214,60 +2246,60 @@ void test_insert(MYSQL *mysql)
/********************************************************
* to test simple prepare-resultset info *
*********************************************************/
void test_prepare_resultset(MYSQL *mysql)
{
void test_prepare_resultset()
{
MYSQL_STMT *stmt;
int rc,param_count;
char query[200];
MYSQL_RES *result;
myheader("test_prepare_resultset");
myheader("test_prepare_resultset");
rc = mysql_autocommit(mysql, true);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_resultset");
myquery(rc);
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_prepare_resultset");
myquery(mysql,rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_prepare_resultset(id int,\
name varchar(50),extra double)");
myquery(mysql,rc);
myquery(rc);
/* insert by prepare */
strcpy(query,"INSERT INTO test_prepare_resultset(id,name) VALUES(?,?)");
stmt = mysql_prepare(mysql, query, strlen(query));
myxquery(mysql,stmt);
myxquery(stmt);
param_count = mysql_param_count(stmt);
fprintf(stdout," total parameters in insert:%d\n", param_count);
assert(param_count == 2);
rc = mysql_query(mysql,"SELECT * FROM test_prepare_resultset");
myquery(mysql,rc);
myquery(rc);
/* get the prepared-result */
result = mysql_prepare_result(stmt);
assert( result != 0);
my_print_result_metadata(result);
my_print_result_metadata(result);
mysql_free_result(result);
result = mysql_store_result(mysql);
mytest(mysql,result);
mytest(result);
assert(0 == my_process_result_set(mysql,result));
assert(0 == my_process_result_set(result));
mysql_free_result(result);
/* get the prepared-result */
result = mysql_prepare_result(stmt);
assert( result != 0);
my_print_result_metadata(result);
my_print_result_metadata(result);
mysql_free_result(result);
mysql_stmt_close(stmt);
}
......@@ -2275,21 +2307,21 @@ void test_prepare_resultset(MYSQL *mysql)
* to test field flags (verify .NET provider) *
*********************************************************/
void test_field_flags(MYSQL *mysql)
void test_field_flags()
{
int rc;
MYSQL_RES *result;
MYSQL_FIELD *field;
unsigned int i;
myheader("test_field_flags");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_field_flags");
myquery(mysql,rc);
myheader("test_field_flags");
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_field_flags");
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
rc = mysql_query(mysql,"CREATE TABLE test_field_flags(id int NOT NULL AUTO_INCREMENT PRIMARY KEY,\
id1 int NOT NULL,\
......@@ -2298,17 +2330,17 @@ void test_field_flags(MYSQL *mysql)
id4 int NOT NULL,\
id5 int,\
KEY(id3,id4))");
myquery(mysql,rc);
myquery(rc);
rc = mysql_commit(mysql);
myquery(mysql,rc);
myquery(rc);
/* with table name included with true column name */
rc = mysql_query(mysql,"SELECT * FROM test_field_flags");
myquery(mysql,rc);
myquery(rc);
result = mysql_use_result(mysql);
mytest(mysql,result);
mytest(result);
mysql_field_seek(result,0);
fputc('\n', stdout);
......@@ -2338,17 +2370,19 @@ static struct my_option myctest_long_options[] =
0, 0, 0, 0, 0},
{"database", 'D', "Database to use", (gptr*) &opt_db, (gptr*) &opt_db,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"host", 'h', "Connect to host", (gptr*) &opt_host, (gptr*) &opt_host, 0, GET_STR,
{"host", 'h', "Connect to host", (gptr*) &opt_host, (gptr*) &opt_host, 0, GET_STR_ALLOC,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p',
"Password to use when connecting to server. If password is not given it's asked from the tty.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#ifndef DONT_ALLOW_USER_CHANGE
{"user", 'u', "User for login if not current user", (gptr*) &opt_user,
(gptr*) &opt_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
(gptr*) &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"port", 'P', "Port number to use for connection", (gptr*) &opt_port,
(gptr*) &opt_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"socket", 'S', "Socket file to use for connection", (gptr*) &opt_unix_socket,
(gptr*) &opt_unix_socket, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
(gptr*) &opt_unix_socket, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
......@@ -2392,9 +2426,12 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
case 'p':
if (argument)
{
char *start=argument;
my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR));
opt_password= my_strdup(argument, MYF(MY_FAE));
while (*argument) *argument++= 'x'; /* Destroy argument */
if (*start)
start[1]=0;
}
else
tty_password= 1;
......@@ -2402,7 +2439,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
case '?':
case 'I': /* Info */
usage();
exit(1);
exit(0);
break;
}
return 0;
......@@ -2416,11 +2453,11 @@ static void get_options(int argc, char **argv)
load_defaults("my",load_default_groups,&argc,&argv);
if ((ho_error=handle_options(&argc, &argv, myctest_long_options,
if ((ho_error=handle_options(&argc,&argv, myctest_long_options,
get_one_option)))
exit(ho_error);
free_defaults(argv);
/*free_defaults(argv);*/
if (tty_password)
opt_password=get_tty_password(NullS);
return;
......@@ -2430,47 +2467,50 @@ static void get_options(int argc, char **argv)
* main routine *
*********************************************************/
int main(int argc, char **argv)
{
MYSQL *mysql;
{
MY_INIT(argv[0]);
get_options(argc,argv); /* don't work -- options : TODO */
get_options(argc,argv);
mysql = client_connect(); /* connect to server */
test_select(mysql); /* simple prepare-select */
test_insert(mysql); /* prepare with insert */
test_bind_result(mysql); /* result bind test */
test_prepare(mysql); /* prepare test */
test_prepare_simple(mysql);/* simple prepare */
test_null(mysql); /* test null data handling */
test_debug_example(mysql); /* some debugging case */
test_update(mysql); /* prepare-update test */
test_simple_update(mysql); /* simple prepare with update */
test_long_data(mysql); /* long data handling in pieces */
test_simple_delete(mysql); /* prepare with delete */
test_field_names(mysql); /* test for field names */
test_double_compare(mysql);/* float comparision */
client_query(mysql); /* simple client query test */
client_store_result(mysql);/* usage of mysql_store_result() */
client_use_result(mysql); /* usage of mysql_use_result() */
test_tran_bdb(mysql); /* transaction test on BDB table type */
test_tran_innodb(mysql); /* transaction test on InnoDB table type */
test_prepare_ext(mysql); /* test prepare with all types conversion -- TODO */
test_prepare_syntax(mysql);/* syntax check for prepares */
test_prepare_field_result(mysql); /* prepare meta info */
test_field_names(mysql); /* test for field names */
test_field_flags(mysql); /* test to help .NET provider team */
test_long_data_str(mysql); /* long data handling */
test_long_data_str1(mysql);/* yet another long data handling */
test_long_data_bin(mysql); /* long binary insertion */
test_warnings(mysql); /* show warnings test */
test_errors(mysql); /* show errors test */
test_select_simple(mysql); /* simple select prepare */
test_prepare_resultset(mysql);/* prepare meta info test */
client_disconnect(mysql); /* disconnect from server */
client_connect(); /* connect to server */
test_null(); /* test null data handling */
test_simple_update();
//test_select_simple();
//test_prepare_resultset();
//test_select(); /* simple prepare-select */
test_insert(); /* prepare with insert */
//test_bind_result(); /* result bind test */
//test_long_data(); /* long data handling in pieces */
test_prepare_simple();/* simple prepare */
test_prepare(); /* prepare test */
test_prepare_simple();/* simple prepare */
test_null(); /* test null data handling */
test_debug_example(); /* some debugging case */
test_update(); /* prepare-update test */
test_simple_update(); /* simple prepare with update */
//test_long_data(); /* long data handling in pieces */
test_simple_delete(); /* prepare with delete */
test_field_names(); /* test for field names */
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 */
test_prepare_syntax();/* syntax check for prepares */
//test_prepare_field_result(); /* prepare meta info */
test_field_names(); /* test for field names */
test_field_flags(); /* test to help .NET provider team */
//test_long_data_str(); /* long data handling */
//test_long_data_str1();/* yet another long data handling */
//test_long_data_bin(); /* long binary insertion */
test_warnings(); /* show warnings test */
test_errors(); /* show errors test */
//test_select_simple(); /* simple select prepare */
//test_prepare_resultset();/* prepare meta info test */
client_disconnect(); /* disconnect from server */
fprintf(stdout,"\ndone !!!\n");
return(0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment