Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
500e56e0
Commit
500e56e0
authored
Nov 22, 2002
by
venu@myvenu.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
client_test.c:
Modification to new API test sql_prepare.cc: Fix for lock_types
parent
ec17cac9
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
701 additions
and
668 deletions
+701
-668
sql/sql_prepare.cc
sql/sql_prepare.cc
+14
-21
tests/client_test.c
tests/client_test.c
+687
-647
No files found.
sql/sql_prepare.cc
View file @
500e56e0
...
...
@@ -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
;
}
...
...
tests/client_test.c
View file @
500e56e0
...
...
@@ -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(m
ysql, msg) print_error(mysql,
msg)
#define myerror(m
sg) 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\t
mysql_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);
my
test(mysql,
rc);
my
query(
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
,
"
\n
done !!!
\n
"
);
return
(
0
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment