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
bea75a42
Commit
bea75a42
authored
Jan 24, 2003
by
venu@myvenu.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Misc cleanups + pure coverage test + Monty's comments
parent
28552c27
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
182 additions
and
28 deletions
+182
-28
libmysql/libmysql.c
libmysql/libmysql.c
+27
-8
tests/client_test.c
tests/client_test.c
+155
-20
No files found.
libmysql/libmysql.c
View file @
bea75a42
...
...
@@ -3951,6 +3951,27 @@ mysql_prepare_result(MYSQL_STMT *stmt)
DBUG_RETURN
(
result
);
}
/*
Returns parameter columns meta information in the form of
resultset.
*/
MYSQL_RES
*
STDCALL
mysql_param_result
(
MYSQL_STMT
*
stmt
)
{
DBUG_ENTER
(
"mysql_param_result"
);
if
(
!
stmt
->
param_count
)
DBUG_RETURN
(
0
);
/*
TODO: Fix this when server sends the information.
Till then keep a dummy prototype
*/
DBUG_RETURN
(
0
);
}
/********************************************************************
Prepare-execute, and param handling
...
...
@@ -4638,7 +4659,7 @@ static void send_data_long(MYSQL_BIND *param, longlong value)
}
default:
{
uint
length
=
sprintf
(
buffer
,
"%lld"
,
value
);
uint
length
=
(
uint
)(
longlong10_to_str
(
value
,
buffer
,
10
)
-
buffer
);
*
param
->
length
=
length
;
buffer
[
length
]
=
'\0'
;
}
...
...
@@ -4678,7 +4699,7 @@ static void send_data_double(MYSQL_BIND *param, double value)
}
default:
{
uint
length
=
sprintf
(
buffer
,
"%g"
,
value
);
uint
length
=
my_sprintf
(
buffer
,(
buffer
,
"%g"
,
value
)
);
*
param
->
length
=
length
;
buffer
[
length
]
=
'\0'
;
}
...
...
@@ -5216,7 +5237,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
{
MYSQL
*
mysql
=
stmt
->
mysql
;
MYSQL_RES
*
result
;
DBUG_ENTER
(
"mysql_stmt_tore_result"
);
DBUG_ENTER
(
"mysql_stmt_
s
tore_result"
);
mysql
=
mysql
->
last_used_con
;
...
...
@@ -5224,9 +5245,8 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
DBUG_RETURN
(
0
);
if
(
mysql
->
status
!=
MYSQL_STATUS_GET_RESULT
)
{
strmov
(
mysql
->
net
.
last_error
,
ER
(
mysql
->
net
.
last_errno
=
CR_COMMANDS_OUT_OF_SYNC
));
DBUG_RETURN
(
0
);
set_stmt_error
(
stmt
,
CR_COMMANDS_OUT_OF_SYNC
);
DBUG_RETURN
(
1
);
}
mysql
->
status
=
MYSQL_STATUS_READY
;
/* server is ready */
if
(
!
(
result
=
(
MYSQL_RES
*
)
my_malloc
((
uint
)
(
sizeof
(
MYSQL_RES
)
+
...
...
@@ -5234,8 +5254,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
stmt
->
field_count
),
MYF
(
MY_WME
|
MY_ZEROFILL
))))
{
mysql
->
net
.
last_errno
=
CR_OUT_OF_MEMORY
;
strmov
(
mysql
->
net
.
last_error
,
ER
(
mysql
->
net
.
last_errno
));
set_stmt_error
(
stmt
,
CR_OUT_OF_MEMORY
);
DBUG_RETURN
(
1
);
}
stmt
->
result_buffered
=
1
;
...
...
tests/client_test.c
View file @
bea75a42
...
...
@@ -1592,7 +1592,7 @@ static void test_select()
nData
=
10
;
strcpy
(
szData
,(
char
*
)
"venu"
);
bind
[
1
].
buffer_type
=
FIELD_TYPE_STRING
;
bind
[
1
].
buffer
=
(
char
*
)
&
szData
;
bind
[
1
].
buffer
=
(
char
*
)
szData
;
bind
[
1
].
buffer_length
=
4
;
bind
[
1
].
length
=
&
length
[
1
];
length
[
1
]
=
4
;
...
...
@@ -2480,7 +2480,7 @@ static void test_bind_result_ext()
bind
[
5
].
buffer
=
(
char
*
)
&
d_data
;
bind
[
6
].
buffer_type
=
MYSQL_TYPE_STRING
;
bind
[
6
].
buffer
=
(
char
*
)
&
szData
;
bind
[
6
].
buffer
=
(
char
*
)
szData
;
bind
[
6
].
buffer_length
=
sizeof
(
szData
);
bind
[
6
].
length
=
&
szLength
;
...
...
@@ -4946,6 +4946,154 @@ static void test_date_dt()
test_bind_date_conv
(
2
);
}
/*
Misc tests to keep pure coverage happy
*/
static
void
test_pure_coverage
()
{
MYSQL_STMT
*
stmt
;
MYSQL_BIND
bind
[
1
];
int
rc
;
ulong
length
;
myheader
(
"test_pure_coverage"
);
rc
=
mysql_query
(
mysql
,
"DROP TABLE IF EXISTS test_pure"
);
myquery
(
rc
);
rc
=
mysql_query
(
mysql
,
"CREATE TABLE test_pure(c1 int, c2 varchar(20))"
);
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
"insert into test_pure(c67788) values(10)"
,
100
);
mystmt_init_r
(
stmt
);
stmt
=
mysql_prepare
(
mysql
,
"insert into test_pure(c2) values(?)"
,
100
);
mystmt_init
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt_r
(
stmt
,
rc
);
/* No parameters supplied */
bind
[
0
].
length
=
&
length
;
bind
[
0
].
is_null
=
0
;
bind
[
0
].
buffer_length
=
0
;
bind
[
0
].
buffer_type
=
MYSQL_TYPE_GEOMETRY
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt_r
(
stmt
,
rc
);
/* unsupported buffer type */
bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
rc
=
mysql_send_long_data
(
stmt
,
20
,
(
char
*
)
"venu"
,
4
);
mystmt_r
(
stmt
,
rc
);
/* wrong param number */
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_prepare
(
mysql
,
"select * from test_pure"
,
100
);
mystmt
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt_r
(
stmt
,
rc
);
/* commands out of sync */
mysql_stmt_close
(
stmt
);
mysql_query
(
mysql
,
"DROP TABLE test_pure"
);
mysql_commit
(
mysql
);
}
/*
test for string buffer fetch
*/
static
void
test_buffers
()
{
MYSQL_STMT
*
stmt
;
MYSQL_BIND
bind
[
1
];
int
rc
;
ulong
length
;
my_bool
is_null
;
char
buffer
[
20
];
myheader
(
"test_buffers"
);
rc
=
mysql_query
(
mysql
,
"DROP TABLE IF EXISTS test_buffer"
);
myquery
(
rc
);
rc
=
mysql_query
(
mysql
,
"CREATE TABLE test_buffer(str varchar(20))"
);
myquery
(
rc
);
rc
=
mysql_query
(
mysql
,
"insert into test_buffer values('MySQL')\
,('Database'),('Open-Source'),('Popular')"
);
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
"select str from test_buffer"
,
100
);
mystmt_init
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
bind
[
0
].
length
=
&
length
;
bind
[
0
].
is_null
=
&
is_null
;
bind
[
0
].
buffer_length
=
1
;
bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
bind
[
0
].
buffer
=
(
char
*
)
buffer
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
buffer
[
1
]
=
'X'
;
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s (%lu)"
,
buffer
,
length
);
myassert
(
buffer
[
0
]
==
'M'
);
myassert
(
buffer
[
1
]
==
'X'
);
myassert
(
length
==
5
);
bind
[
0
].
buffer_length
=
8
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
/* re-bind */
mystmt
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s (%lu)"
,
buffer
,
length
);
myassert
(
strncmp
(
buffer
,
"Database"
,
8
)
==
0
);
myassert
(
length
==
8
);
bind
[
0
].
buffer_length
=
12
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
/* re-bind */
mystmt
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s (%lu)"
,
buffer
,
length
);
myassert
(
strcmp
(
buffer
,
"Open-Source"
)
==
0
);
myassert
(
length
==
11
);
bind
[
0
].
buffer_length
=
6
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
/* re-bind */
mystmt
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s (%lu)"
,
buffer
,
length
);
myassert
(
strncmp
(
buffer
,
"Popula"
,
6
)
==
0
);
myassert
(
length
==
7
);
mysql_stmt_close
(
stmt
);
}
static
struct
my_option
myctest_long_options
[]
=
{
...
...
@@ -5066,10 +5214,6 @@ int main(int argc, char **argv)
/* Start of tests */
test_count
=
0
;
test_select_show
();
/* test show syntax */
test_prepare_alter
();
/* change table schema in middle of prepare */
test_manual_sample
();
/* sample in the manual */
test_bind_result
();
/* result bind test */
test_fetch_null
();
/* to fetch null data */
test_fetch_date
();
/* to fetch date,time and timestamp */
test_fetch_str
();
/* to fetch string to all types */
...
...
@@ -5086,7 +5230,6 @@ int main(int argc, char **argv)
test_select
();
/* simple select test */
test_select_version
();
/* select with variables */
test_select_simple
();
/* simple select prepare */
test_set_variable
();
/* set variable prepare */
#if NOT_USED
/*
Enable this tests from 4.1.1 when mysql_param_result() is
...
...
@@ -5096,28 +5239,20 @@ int main(int argc, char **argv)
test_update_meta
();
/* update param meta information */
test_insert_meta
();
/* insert param meta information */
#endif
test_simple_update
();
/* simple update test */
test_func_fields
();
/* test for new 4.1 MYSQL_FIELD members */
test_long_data
();
/* test for sending text data in chunks */
test_insert
();
/* simple insert test - prepare */
test_set_variable
();
/* prepare with set variables */
test_tran_innodb
();
/* test for mysql_commit(), rollback() and
autocommit() */
test_select_show
();
/* prepare - show test */
test_simple_update
();
/* simple prepare - update */
test_prepare_noparam
();
/* prepare without parameters */
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_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() */
...
...
@@ -5126,8 +5261,6 @@ int main(int argc, char **argv)
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_prepare_resultset
();
/* prepare meta info test */
test_field_names
();
/* test for field names */
test_field_flags
();
/* test to help .NET provider team */
test_long_data_str
();
/* long data handling */
...
...
@@ -5136,7 +5269,6 @@ int main(int argc, char **argv)
test_warnings
();
/* show warnings test */
test_errors
();
/* show errors test */
test_prepare_resultset
();
/* prepare meta info test */
test_func_fields
();
/* FUNCTION field info */
/*test_stmt_close(); */
/* mysql_stmt_close() test -- hangs */
test_prepare_field_result
();
/* prepare meta info */
test_multi_stmt
();
/* multi stmt test -TODO*/
...
...
@@ -5144,13 +5276,16 @@ int main(int argc, char **argv)
test_store_result
();
/* test the store_result */
test_store_result1
();
/* test store result without buffers */
test_store_result2
();
/* test store result for misc case */
test_multi_stmt
();
/* test multi stmt */
test_subselect
();
/* test subselect prepare -TODO*/
test_date
();
/* test the MYSQL_TIME conversion */
test_date_date
();
/* test conversion from DATE to all */
test_date_time
();
/* test conversion from TIME to all */
test_date_ts
()
;
/* test conversion from TIMESTAMP to all */
test_date_dt
()
;
/* test conversion from DATETIME to all */
test_prepare_alter
();
/* change table schema in middle of prepare */
test_manual_sample
();
/* sample in the manual */
test_pure_coverage
();
/* keep pure coverage happy */
test_buffers
();
/* misc buffer handling */
/* End of tests */
}
...
...
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