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
433307fa
Commit
433307fa
authored
Jan 24, 2003
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Misc cleanups + pure coverage test + Monty's comments
parent
7f6e7b1d
Changes
2
Hide 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 @
433307fa
...
...
@@ -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 @
433307fa
...
...
@@ -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
[]
=
{
...
...
@@ -5065,11 +5213,7 @@ 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