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