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
0a95918e
Commit
0a95918e
authored
Apr 30, 2004
by
monty@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge
parents
07eaf186
6678ecf1
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
816 additions
and
529 deletions
+816
-529
include/mysql.h
include/mysql.h
+6
-2
libmysql/libmysql.c
libmysql/libmysql.c
+173
-8
scripts/fill_help_tables.sh
scripts/fill_help_tables.sh
+40
-7
scripts/mysql_install_db.sh
scripts/mysql_install_db.sh
+22
-9
sql/sql_parse.cc
sql/sql_parse.cc
+6
-0
tests/client_test.c
tests/client_test.c
+569
-503
No files found.
include/mysql.h
View file @
0a95918e
...
...
@@ -87,8 +87,8 @@ typedef struct st_mysql_field {
char
*
db
;
/* Database for table */
char
*
catalog
;
/* Catalog for table */
char
*
def
;
/* Default value (set by mysql_list_fields) */
unsigned
long
length
;
/* Width of column */
unsigned
long
max_length
;
/* Max width
of
selected set */
unsigned
long
length
;
/* Width of column
(create length)
*/
unsigned
long
max_length
;
/* Max width
for
selected set */
unsigned
int
name_length
;
unsigned
int
org_name_length
;
unsigned
int
table_length
;
...
...
@@ -120,6 +120,7 @@ typedef unsigned long long my_ulonglong;
typedef
struct
st_mysql_rows
{
struct
st_mysql_rows
*
next
;
/* list of rows */
MYSQL_ROW
data
;
ulong
length
;
}
MYSQL_ROWS
;
typedef
MYSQL_ROWS
*
MYSQL_ROW_OFFSET
;
/* offset to current row */
...
...
@@ -547,11 +548,14 @@ typedef struct st_mysql_bind
unsigned
long
offset
;
/* offset position for char/binary fetch */
unsigned
long
internal_length
;
/* Used if length is 0 */
unsigned
int
param_number
;
/* For null count and error messages */
unsigned
int
pack_length
;
/* Internal length for packed data */
my_bool
is_unsigned
;
/* set if integer type is unsigned */
my_bool
long_data_used
;
/* If used with mysql_send_long_data */
my_bool
internal_is_null
;
/* Used if is_null is 0 */
void
(
*
store_param_func
)(
NET
*
net
,
struct
st_mysql_bind
*
param
);
void
(
*
fetch_result
)(
struct
st_mysql_bind
*
,
unsigned
char
**
row
);
void
(
*
skip_result
)(
struct
st_mysql_bind
*
,
MYSQL_FIELD
*
,
unsigned
char
**
row
);
}
MYSQL_BIND
;
...
...
libmysql/libmysql.c
View file @
0a95918e
...
...
@@ -85,6 +85,7 @@ my_bool net_flush(NET *net);
#define MAX_LONG_DATA_LENGTH 8192
#define unsigned_field(A) ((A)->flags & UNSIGNED_FLAG)
static
void
stmt_update_metadata
(
MYSQL_STMT
*
stmt
,
MYSQL_ROWS
*
data
);
static
void
append_wild
(
char
*
to
,
char
*
end
,
const
char
*
wild
);
sig_handler
pipe_sig_handler
(
int
sig
);
static
ulong
mysql_sub_escape_string
(
CHARSET_INFO
*
charset_info
,
char
*
to
,
...
...
@@ -3341,6 +3342,43 @@ static void fetch_result_str(MYSQL_BIND *param, uchar **row)
}
/*
functions to calculate max lengths for strings during
mysql_stmt_store_result()
*/
static
void
skip_result_fixed
(
MYSQL_BIND
*
param
,
MYSQL_FIELD
*
field
__attribute__
((
unused
)),
uchar
**
row
)
{
(
*
row
)
+=
param
->
pack_length
;
}
static
void
skip_result_with_length
(
MYSQL_BIND
*
param
__attribute__
((
unused
)),
MYSQL_FIELD
*
field
__attribute__
((
unused
)),
uchar
**
row
)
{
ulong
length
=
net_field_length
(
row
);
(
*
row
)
+=
length
;
}
static
void
skip_result_string
(
MYSQL_BIND
*
param
__attribute__
((
unused
)),
MYSQL_FIELD
*
field
,
uchar
**
row
)
{
ulong
length
=
net_field_length
(
row
);
(
*
row
)
+=
length
;
if
(
field
->
max_length
<
length
)
field
->
max_length
=
length
;
}
/*
Setup the bind buffers for resultset processing
*/
...
...
@@ -3348,6 +3386,7 @@ static void fetch_result_str(MYSQL_BIND *param, uchar **row)
my_bool
STDCALL
mysql_stmt_bind_result
(
MYSQL_STMT
*
stmt
,
MYSQL_BIND
*
bind
)
{
MYSQL_BIND
*
param
,
*
end
;
MYSQL_FIELD
*
field
;
ulong
bind_count
;
uint
param_count
=
0
;
DBUG_ENTER
(
"mysql_stmt_bind_result"
);
...
...
@@ -3370,7 +3409,9 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
memcpy
((
char
*
)
stmt
->
bind
,
(
char
*
)
bind
,
sizeof
(
MYSQL_BIND
)
*
bind_count
);
for
(
param
=
stmt
->
bind
,
end
=
param
+
bind_count
;
param
<
end
;
param
++
)
for
(
param
=
stmt
->
bind
,
end
=
param
+
bind_count
,
field
=
stmt
->
fields
;
param
<
end
;
param
++
,
field
++
)
{
/*
Set param->is_null to point to a dummy variable if it's not set.
...
...
@@ -3388,15 +3429,18 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
/* Setup data copy functions for the different supported types */
switch
(
param
->
buffer_type
)
{
case
MYSQL_TYPE_NULL
:
/* for dummy binds */
*
param
->
length
=
0
;
break
;
case
MYSQL_TYPE_TINY
:
param
->
fetch_result
=
fetch_result_tinyint
;
*
param
->
length
=
1
;
break
;
case
MYSQL_TYPE_SHORT
:
case
MYSQL_TYPE_YEAR
:
param
->
fetch_result
=
fetch_result_short
;
*
param
->
length
=
2
;
break
;
case
MYSQL_TYPE_INT24
:
case
MYSQL_TYPE_LONG
:
param
->
fetch_result
=
fetch_result_int32
;
*
param
->
length
=
4
;
...
...
@@ -3445,6 +3489,58 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
param
->
buffer_type
,
param_count
);
DBUG_RETURN
(
1
);
}
/* Setup skip_result functions (to calculate max_length) */
param
->
skip_result
=
skip_result_fixed
;
switch
(
field
->
type
)
{
case
MYSQL_TYPE_NULL
:
/* for dummy binds */
param
->
pack_length
=
0
;
break
;
case
MYSQL_TYPE_TINY
:
param
->
pack_length
=
1
;
break
;
case
MYSQL_TYPE_YEAR
:
case
MYSQL_TYPE_SHORT
:
param
->
pack_length
=
2
;
break
;
case
MYSQL_TYPE_INT24
:
case
MYSQL_TYPE_LONG
:
param
->
pack_length
=
4
;
break
;
case
MYSQL_TYPE_LONGLONG
:
param
->
pack_length
=
8
;
break
;
case
MYSQL_TYPE_FLOAT
:
param
->
pack_length
=
4
;
break
;
case
MYSQL_TYPE_DOUBLE
:
param
->
pack_length
=
8
;
break
;
case
MYSQL_TYPE_TIME
:
case
MYSQL_TYPE_DATE
:
case
MYSQL_TYPE_DATETIME
:
case
MYSQL_TYPE_TIMESTAMP
:
param
->
skip_result
=
skip_result_with_length
;
break
;
case
MYSQL_TYPE_DECIMAL
:
case
MYSQL_TYPE_ENUM
:
case
MYSQL_TYPE_SET
:
case
MYSQL_TYPE_GEOMETRY
:
case
MYSQL_TYPE_TINY_BLOB
:
case
MYSQL_TYPE_MEDIUM_BLOB
:
case
MYSQL_TYPE_LONG_BLOB
:
case
MYSQL_TYPE_BLOB
:
case
MYSQL_TYPE_VAR_STRING
:
case
MYSQL_TYPE_STRING
:
param
->
skip_result
=
skip_result_string
;
break
;
default:
strmov
(
stmt
->
sqlstate
,
unknown_sqlstate
);
sprintf
(
stmt
->
last_error
,
ER
(
stmt
->
last_errno
=
CR_UNSUPPORTED_PARAM_TYPE
),
field
->
type
,
param_count
);
DBUG_RETURN
(
1
);
}
}
stmt
->
bind_result_done
=
TRUE
;
DBUG_RETURN
(
0
);
...
...
@@ -3458,7 +3554,7 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
static
int
stmt_fetch_row
(
MYSQL_STMT
*
stmt
,
uchar
*
row
)
{
MYSQL_BIND
*
bind
,
*
end
;
MYSQL_FIELD
*
field
,
*
field_end
;
MYSQL_FIELD
*
field
;
uchar
*
null_ptr
,
bit
;
/*
Precondition: if stmt->field_count is zero or row is NULL, read_row_*
...
...
@@ -3478,10 +3574,8 @@ static int stmt_fetch_row(MYSQL_STMT *stmt, uchar *row)
bit
=
4
;
/* first 2 bits are reserved */
/* Copy complete row to application buffers */
for
(
bind
=
stmt
->
bind
,
end
=
(
MYSQL_BIND
*
)
bind
+
stmt
->
field_count
,
field
=
stmt
->
fields
,
field_end
=
(
MYSQL_FIELD
*
)
stmt
->
fields
+
stmt
->
field_count
;
bind
<
end
&&
field
<
field_end
;
for
(
bind
=
stmt
->
bind
,
end
=
bind
+
stmt
->
field_count
,
field
=
stmt
->
fields
;
bind
<
end
;
bind
++
,
field
++
)
{
if
(
*
null_ptr
&
bit
)
...
...
@@ -3514,6 +3608,7 @@ static int stmt_fetch_row(MYSQL_STMT *stmt, uchar *row)
return
0
;
}
int
cli_unbuffered_fetch
(
MYSQL
*
mysql
,
char
**
row
)
{
if
(
packet_error
==
net_safe_read
(
mysql
))
...
...
@@ -3524,6 +3619,7 @@ int cli_unbuffered_fetch(MYSQL *mysql, char **row)
return
0
;
}
/*
Fetch and return row data to bound buffers, if any
*/
...
...
@@ -3620,6 +3716,28 @@ int cli_read_binary_rows(MYSQL_STMT *stmt)
mysql
=
mysql
->
last_used_con
;
if
(
!
stmt
->
bind_result_done
)
{
/*
We must initalize the bind structure to be able to calculate
max_length
*/
MYSQL_BIND
*
bind
,
*
end
;
MYSQL_FIELD
*
field
;
bzero
((
char
*
)
stmt
->
bind
,
sizeof
(
*
stmt
->
bind
)
*
stmt
->
field_count
);
for
(
bind
=
stmt
->
bind
,
end
=
bind
+
stmt
->
field_count
,
field
=
stmt
->
fields
;
bind
<
end
;
bind
++
,
field
++
)
{
bind
->
buffer_type
=
field
->
type
;
bind
->
buffer_length
=
1
;
}
mysql_stmt_bind_result
(
stmt
,
stmt
->
bind
);
stmt
->
bind_result_done
=
0
;
/* No normal bind done */
}
while
((
pkt_len
=
net_safe_read
(
mysql
))
!=
packet_error
)
{
cp
=
net
->
read_pos
;
...
...
@@ -3629,13 +3747,15 @@ int cli_read_binary_rows(MYSQL_STMT *stmt)
sizeof
(
MYSQL_ROWS
)
+
pkt_len
-
1
)))
{
set_stmt_error
(
stmt
,
CR_OUT_OF_MEMORY
,
unknown_sqlstate
);
DBUG_RETURN
(
1
)
;
goto
err
;
}
cur
->
data
=
(
MYSQL_ROW
)
(
cur
+
1
);
*
prev_ptr
=
cur
;
prev_ptr
=
&
cur
->
next
;
memcpy
((
char
*
)
cur
->
data
,
(
char
*
)
cp
+
1
,
pkt_len
-
1
);
++
result
->
rows
;
cur
->
length
=
pkt_len
;
/* To allow us to do sanity checks */
result
->
rows
++
;
stmt_update_metadata
(
stmt
,
cur
);
}
else
{
...
...
@@ -3647,6 +3767,8 @@ int cli_read_binary_rows(MYSQL_STMT *stmt)
}
}
set_stmt_errmsg
(
stmt
,
net
->
last_error
,
net
->
last_errno
,
net
->
sqlstate
);
err:
DBUG_RETURN
(
1
);
}
...
...
@@ -3909,6 +4031,49 @@ const char *STDCALL mysql_stmt_error(MYSQL_STMT * stmt)
DBUG_RETURN
(
stmt
->
last_error
);
}
/*
Update meta data for statement
SYNOPSIS
stmt_update_metadata()
stmt Statement handler
row Binary data
NOTES
Only updates MYSQL_FIELD->max_length for strings
*/
static
void
stmt_update_metadata
(
MYSQL_STMT
*
stmt
,
MYSQL_ROWS
*
data
)
{
MYSQL_BIND
*
bind
,
*
end
;
MYSQL_FIELD
*
field
;
uchar
*
null_ptr
,
bit
;
uchar
*
row
=
(
uchar
*
)
data
->
data
;
uchar
*
row_end
=
row
+
data
->
length
;
null_ptr
=
row
;
row
+=
(
stmt
->
field_count
+
9
)
/
8
;
/* skip null bits */
bit
=
4
;
/* first 2 bits are reserved */
/* Go throw all fields and calculate metadata */
for
(
bind
=
stmt
->
bind
,
end
=
bind
+
stmt
->
field_count
,
field
=
stmt
->
fields
;
bind
<
end
;
bind
++
,
field
++
)
{
if
(
!
(
*
null_ptr
&
bit
))
(
*
bind
->
skip_result
)(
bind
,
field
,
&
row
);
DBUG_ASSERT
(
row
<=
row_end
);
if
(
!
((
bit
<<=
1
)
&
255
))
{
bit
=
1
;
/* To next byte */
null_ptr
++
;
}
}
}
/********************************************************************
Transactional APIs
*********************************************************************/
...
...
scripts/fill_help_tables.sh
View file @
0a95918e
...
...
@@ -45,6 +45,7 @@ use strict;
use Getopt::Long
;
my
$insert_portion_size
=
15
;
my
$maximum_line_length
=
2040
;
my
$error_prefix
=
"---- help parsing errors :"
;
my
$path_to_lex_file
=
"../sql/lex.h"
;
...
...
@@ -166,6 +167,7 @@ sub add_description
print_error
"double description for
$topic_name
\n
"
;
}
$topics
{
$topic_name
}
->
{
description
}=
$description
;
$topics
{
$topic_name
}
->
{
line_of_description
}=
$cur_line
;
add_topic_to_category
(
$topic_name
)
;
}
...
...
@@ -515,21 +517,52 @@ if (scalar(@topic_names))
{
my
$header
=
"insert into help_topic "
.
"(help_topic_id,help_category_id,name,description,example) values "
;
my
$line_accumulator
=
$header
;
my
$lines_in_accumulator
=
0
;
my
$actual_max_line_length
=
$maximum_line_length
-2
;
# for ";\n"
my
$topic_name
;
my
$count
=
0
;
foreach
$topic_name
(
@topic_names
)
{
print_insert_header
(
$count
,
$header
)
;
my
$topic
=
$topics
{
$topic_name
}
;
print
"(
$count
,"
;
print
"
$topic
->{category}->{__id__},"
;
print
"
\"
$topic_name
\"
,"
;
print
"
\"
$topic
->{description}
\"
,"
;
print
"
\"
$topic
->{example}
\"
)"
;
my
$line
=
"(
$count
,"
;
$line
.
=
"
$topic
->{category}->{__id__},"
;
$line
.
=
"
\"
$topic_name
\"
,"
;
$line
.
=
"
\"
$topic
->{description}
\"
,"
;
$line
.
=
"
\"
$topic
->{example}
\"
)"
;
if
(
$lines_in_accumulator
<
=
$insert_portion_size
&&
length
(
$line
)
+ length
(
$line_accumulator
)
<
$actual_max_line_length
)
{
if
(
$lines_in_accumulator
ne 0
)
{
$line_accumulator
.
=
","
;
}
$line_accumulator
.
=
$line
;
$lines_in_accumulator
++
;
}
else
{
if
(
length
(
$line
)
+ length
(
$header
)
>=
$actual_max_line_length
)
{
$cur_line
=
$topics
{
$topic_name
}
->
{
line_of_description
}
;
print_error
"too long record for topic
\"
$topic_name
\"
\n
"
.
" please decrease its description or example!
\n
"
;
}
else
{
print
"
$line_accumulator
;
\n
"
;
$line_accumulator
=
$header
.
$line
;
$lines_in_accumulator
=
1
;
}
}
$topics
{
$topic_name
}
->
{
__id__
}=
$count
;
$count
++
;
}
printf
";
\n\n
"
;
if
(
$lines_in_accumulator
ne 0
)
{
print
"
$line_accumulator
;
\n
"
;
}
printf
"
\n
"
;
}
my @keywords_names
=
keys
(
%keywords
)
;
...
...
scripts/mysql_install_db.sh
View file @
0a95918e
...
...
@@ -200,15 +200,28 @@ if test "$in_rpm" -eq 0 -a "$windows" -eq 0
then
echo
"Installing all prepared tables"
fi
if
(
$scriptdir
/mysql_create_system_tables
$create_option
$mdata
$hostname
$windows
mysqld_install_cmd_line
=
"
$mysqld
$defaults
$mysqld_opt
--bootstrap
\
--skip-grant-tables --basedir=
$basedir
--datadir=
$ldata
--skip-innodb
\
--skip-bdb
$args
"
if
$scriptdir
/mysql_create_system_tables
$create_option
$mdata
$hostname
$windows
\
|
eval
"
$mysqld_install_cmd_line
"
then
if
test
-n
"
$fill_help_tables
"
then
cat
$fill_help_tables
if
test
"
$in_rpm
"
-eq
0
-a
"
$windows
"
-eq
0
then
echo
"Fill help tables"
fi
if
!
(
echo
"use mysql;
"
cat
$fill_help_tables
)
|
eval
"
$mysqld_install_cmd_line
"
then
echo
""
echo
"WARNING: HELP FILES ARE NOT COMPLETELY INSTALLED!"
echo
"The
\"
HELP
\"
command might not work properly"
echo
""
fi
fi
)
|
eval
"
$mysqld
$defaults
$mysqld_opt
--bootstrap --skip-grant-tables
\
--basedir=
$basedir
--datadir=
$ldata
--skip-innodb --skip-bdb
$args
"
then
if
test
"
$in_rpm
"
=
0
-a
"
$windows
"
=
0
then
echo
""
...
...
@@ -250,7 +263,7 @@ then
fi
exit
0
else
echo
"Installation of
grant
tables failed!"
echo
"Installation of
system
tables failed!"
echo
echo
"Examine the logs in
$ldata
for more information."
echo
"You can also try to start the mysqld daemon with:"
...
...
sql/sql_parse.cc
View file @
0a95918e
...
...
@@ -1095,6 +1095,12 @@ extern "C" pthread_handler_decl(handle_bootstrap,arg)
while
(
fgets
(
buff
,
thd
->
net
.
max_packet
,
file
))
{
uint
length
=
(
uint
)
strlen
(
buff
);
if
(
buff
[
length
-
1
]
!=
'\n'
&&
!
feof
(
file
))
{
send_error
(
thd
,
ER_NET_PACKET_TOO_LARGE
,
NullS
);
thd
->
is_fatal_error
=
1
;
break
;
}
while
(
length
&&
(
my_isspace
(
thd
->
charset
(),
buff
[
length
-
1
])
||
buff
[
length
-
1
]
==
';'
))
length
--
;
...
...
tests/client_test.c
View file @
0a95918e
...
...
@@ -56,6 +56,8 @@ static unsigned int iter_count= 0;
static
time_t
start_time
,
end_time
;
static
double
total_time
;
const
char
*
default_dbug_option
=
"d:t:o,/tmp/client_test.trace"
;
#define myheader(str) \
{ \
fprintf(stdout,"\n\n#####################################\n"); \
...
...
@@ -91,7 +93,7 @@ if (r) \
assert(r != 0); \
}
#define
mystmt
(stmt,r) \
#define
check_execute
(stmt,r) \
{ \
if (r) \
mysterror(stmt,NULL); \
...
...
@@ -105,14 +107,14 @@ if (r) \
assert(r != 0);\
}
#define
mystmt_ini
t(stmt) \
#define
check_stm
t(stmt) \
{ \
if ( stmt == 0) \
myerror(NULL); \
assert(stmt != 0); \
}
#define
mystmt_ini
t_r(stmt) \
#define
check_stm
t_r(stmt) \
{ \
if (stmt == 0) \
myerror(NULL);\
...
...
@@ -430,10 +432,10 @@ uint my_process_stmt_result(MYSQL_STMT *stmt)
my_print_result_metadata
(
result
);
rc
=
mysql_bind_result
(
stmt
,
buffer
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_field_seek
(
result
,
0
);
while
(
mysql_fetch
(
stmt
)
==
0
)
...
...
@@ -481,10 +483,10 @@ uint my_stmt_result(const char *buff)
fprintf
(
stdout
,
"
\n\n
%s"
,
buff
);
stmt
=
mysql_simple_prepare
(
mysql
,
buff
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
row_count
=
my_process_stmt_result
(
stmt
);
mysql_stmt_close
(
stmt
);
...
...
@@ -520,9 +522,12 @@ static void verify_col_data(const char *table, const char *col,
fprintf
(
stdout
,
"
\n
*** ERROR: FAILED TO GET THE RESULT ***"
);
exit
(
1
);
}
if
(
strcmp
(
row
[
field
],
exp_data
))
{
fprintf
(
stdout
,
"
\n
obtained: `%s` (expected: `%s`)"
,
row
[
field
],
exp_data
);
assert
(
strcmp
(
row
[
field
],
exp_data
)
==
0
);
assert
(
0
);
}
mysql_free_result
(
result
);
}
...
...
@@ -620,7 +625,7 @@ static void execute_prepare_query(const char *query, ulonglong exp_count)
int
rc
;
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
myquery
(
rc
);
...
...
@@ -928,7 +933,7 @@ static void test_prepare_simple()
/* insert */
strmov
(
query
,
"INSERT INTO test_prepare_simple VALUES(?,?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
mysql_stmt_close
(
stmt
);
...
...
@@ -936,7 +941,7 @@ static void test_prepare_simple()
/* update */
strmov
(
query
,
"UPDATE test_prepare_simple SET id=? WHERE id=? AND name= ?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
3
);
mysql_stmt_close
(
stmt
);
...
...
@@ -944,18 +949,18 @@ static void test_prepare_simple()
/* delete */
strmov
(
query
,
"DELETE FROM test_prepare_simple WHERE id=10"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
0
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
/* delete */
strmov
(
query
,
"DELETE FROM test_prepare_simple WHERE id=?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
1
);
...
...
@@ -964,7 +969,7 @@ static void test_prepare_simple()
/* select */
strmov
(
query
,
"SELECT * FROM test_prepare_simple WHERE id=? AND name= ?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -1002,7 +1007,7 @@ static void test_prepare_field_result()
strmov
(
query
,
"SELECT int_c,var_c,date_c as date,ts_c,char_c FROM \
test_prepare_field_result as t1 WHERE int_c=?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
1
);
...
...
@@ -1050,11 +1055,11 @@ static void test_prepare_syntax()
strmov
(
query
,
"INSERT INTO test_prepare_syntax VALUES(?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t_r
(
stmt
);
check_stm
t_r
(
stmt
);
strmov
(
query
,
"SELECT id,name FROM test_prepare_syntax WHERE id=? AND WHERE"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t_r
(
stmt
);
check_stm
t_r
(
stmt
);
/* now fetch the results ..*/
rc
=
mysql_commit
(
mysql
);
...
...
@@ -1100,7 +1105,7 @@ static void test_prepare()
/* insert by prepare */
strxmov
(
query
,
"INSERT INTO my_prepare VALUES(?,?,?,?,?,?,?)"
,
NullS
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
7
);
...
...
@@ -1135,7 +1140,7 @@ static void test_prepare()
}
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
int_data
=
320
;
small_data
=
1867
;
...
...
@@ -1148,7 +1153,7 @@ static void test_prepare()
{
length
[
1
]
=
my_sprintf
(
str_data
,(
str_data
,
"MySQL%d"
,
int_data
));
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
int_data
+=
25
;
small_data
+=
10
;
big_data
+=
100
;
...
...
@@ -1166,14 +1171,14 @@ static void test_prepare()
assert
(
tiny_data
==
(
char
)
my_stmt_result
(
"SELECT * FROM my_prepare"
));
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM my_prepare"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
/* get the result */
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
o_int_data
=
320
;
o_small_data
=
1867
;
...
...
@@ -1187,7 +1192,7 @@ static void test_prepare()
len
=
my_sprintf
(
data
,
(
data
,
"MySQL%d"
,
o_int_data
));
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
"
);
...
...
@@ -1271,7 +1276,7 @@ static void test_double_compare()
strmov
(
query
,
"UPDATE test_double_compare SET col1=100 WHERE col1 = ? AND col2 = ? AND COL3 = ?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
3
);
...
...
@@ -1301,10 +1306,10 @@ static void test_double_compare()
strmov
(
real_data
,
"10.2"
);
double_data
=
34
.
5
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
verify_affected_rows
(
0
);
...
...
@@ -1352,11 +1357,11 @@ static void test_null()
/* insert by prepare, wrong column name */
strmov
(
query
,
"INSERT INTO test_null(col3,col2) VALUES(?,?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t_r
(
stmt
);
check_stm
t_r
(
stmt
);
strmov
(
query
,
"INSERT INTO test_null(col1,col2) VALUES(?,?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -1367,13 +1372,13 @@ static void test_null()
bind
[
1
]
=
bind
[
0
];
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
/* now, execute the prepared statement to insert 10 records.. */
for
(
nData
=
0
;
nData
<
10
;
nData
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
/* Re-bind with MYSQL_TYPE_NULL */
...
...
@@ -1382,12 +1387,12 @@ static void test_null()
bind
[
1
]
=
bind
[
0
];
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
for
(
nData
=
0
;
nData
<
10
;
nData
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
mysql_stmt_close
(
stmt
);
...
...
@@ -1408,13 +1413,13 @@ static void test_null()
bind
[
1
].
is_null
=
&
is_null
[
1
];
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_null"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
0
;
is_null
[
0
]
=
is_null
[
1
]
=
0
;
...
...
@@ -1551,13 +1556,13 @@ static void test_fetch_null()
assert
(
3
==
my_stmt_result
(
query
));
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
0
;
while
(
mysql_fetch
(
stmt
)
!=
MYSQL_NO_DATA
)
...
...
@@ -1590,12 +1595,12 @@ static void test_select_version()
myheader
(
"test_select_version"
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT @@version"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
0
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
my_process_stmt_result
(
stmt
);
mysql_stmt_close
(
stmt
);
...
...
@@ -1612,14 +1617,14 @@ static void test_select_show_table()
myheader
(
"test_select_show_table"
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SHOW TABLES FROM mysql"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
0
);
for
(
i
=
1
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
my_process_stmt_result
(
stmt
);
...
...
@@ -1707,10 +1712,10 @@ static void test_select_prepare()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_select"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
mysql_stmt_close
(
stmt
);
...
...
@@ -1737,10 +1742,10 @@ static void test_select_prepare()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_select"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
mysql_stmt_close
(
stmt
);
...
...
@@ -1792,7 +1797,7 @@ static void test_select()
strmov
(
query
,
"SELECT * FROM test_select WHERE id=? AND name=?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -1813,10 +1818,10 @@ static void test_select()
bind
[
0
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
my_process_stmt_result
(
stmt
)
==
1
);
...
...
@@ -1851,7 +1856,7 @@ session_id char(9) NOT NULL, \
strmov
(
query
,
"SELECT * FROM test_select WHERE session_id = ?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
1
);
...
...
@@ -1864,10 +1869,10 @@ session_id char(9) NOT NULL, \
bind
[
0
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
my_process_stmt_result
(
stmt
)
==
1
);
...
...
@@ -1880,10 +1885,10 @@ session_id char(9) NOT NULL, \
bind
[
0
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
my_process_stmt_result
(
stmt
)
==
0
);
...
...
@@ -1896,10 +1901,10 @@ session_id char(9) NOT NULL, \
bind
[
0
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
my_process_stmt_result
(
stmt
)
==
1
);
...
...
@@ -1929,7 +1934,7 @@ static void test_bug1180()
strmov
(
query
,
"SELECT * FROM test_select WHERE ?=
\"
1111
\"
and session_id =
\"
abc
\"
"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
1
);
...
...
@@ -1942,10 +1947,10 @@ static void test_bug1180()
bind
[
0
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
my_process_stmt_result
(
stmt
)
==
0
);
...
...
@@ -1958,10 +1963,10 @@ static void test_bug1180()
bind
[
0
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
my_process_stmt_result
(
stmt
)
==
1
);
...
...
@@ -1974,10 +1979,10 @@ static void test_bug1180()
bind
[
0
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
my_process_stmt_result
(
stmt
)
==
0
);
...
...
@@ -2009,7 +2014,7 @@ static void test_bug1644()
strmov
(
query
,
"INSERT INTO foo_dfr VALUES (?,?,?,? )"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
4
);
...
...
@@ -2025,20 +2030,20 @@ static void test_bug1644()
}
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
isnull
=
1
;
for
(
i
=
0
;
i
<
4
;
i
++
)
bind
[
i
].
is_null
=
&
isnull
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
isnull
=
0
;
num
=
88
;
...
...
@@ -2046,10 +2051,10 @@ static void test_bug1644()
bind
[
i
].
is_null
=
&
isnull
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
...
...
@@ -2107,43 +2112,43 @@ static void test_select_show()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"show columns from test_show"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
0
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
my_process_stmt_result
(
stmt
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"show tables from mysql like ?"
);
mystmt_ini
t_r
(
stmt
);
check_stm
t_r
(
stmt
);
strxmov
(
query
,
"show tables from "
,
current_db
,
" like
\'
test_show
\'
"
,
NullS
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
my_process_stmt_result
(
stmt
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"describe test_show"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
my_process_stmt_result
(
stmt
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"show keys from test_show"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
mysql_stmt_close
(
stmt
);
...
...
@@ -2192,7 +2197,7 @@ static void test_simple_update()
/* insert by prepare */
strmov
(
query
,
"UPDATE test_update SET col2=? WHERE col1=?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -2211,10 +2216,10 @@ static void test_simple_update()
bind
[
1
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
verify_affected_rows
(
1
);
mysql_stmt_close
(
stmt
);
...
...
@@ -2267,11 +2272,11 @@ static void test_long_data()
strmov
(
query
,
"INSERT INTO test_long_data(col1,col2) VALUES(?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t_r
(
stmt
);
check_stm
t_r
(
stmt
);
strmov
(
query
,
"INSERT INTO test_long_data(col1,col2,col3) VALUES(?,?,?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
3
);
...
...
@@ -2288,7 +2293,7 @@ static void test_long_data()
bind
[
2
]
=
bind
[
1
];
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
int_data
=
999
;
data
=
(
char
*
)
"Michael"
;
...
...
@@ -2297,14 +2302,14 @@ static void test_long_data()
rc
=
mysql_send_long_data
(
stmt
,
1
,
data
,
strlen
(
data
));
data
=
(
char
*
)
" 'Monty' Widenius"
;
rc
=
mysql_send_long_data
(
stmt
,
1
,
data
,
strlen
(
data
));
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_send_long_data
(
stmt
,
2
,
"Venu (venu@mysql.com)"
,
4
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
/* execute */
rc
=
mysql_execute
(
stmt
);
fprintf
(
stdout
,
" mysql_execute() returned %d
\n
"
,
rc
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
...
...
@@ -2359,7 +2364,7 @@ static void test_long_data_str()
strmov
(
query
,
"INSERT INTO test_long_data_str VALUES(?,?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -2378,7 +2383,7 @@ static void test_long_data_str()
bind
[
1
].
is_null
=
&
is_null
[
1
];
is_null
[
1
]
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
length
=
40
;
strmov
(
data
,
"MySQL AB"
);
...
...
@@ -2387,12 +2392,12 @@ static void test_long_data_str()
for
(
i
=
0
;
i
<
4
;
i
++
)
{
rc
=
mysql_send_long_data
(
stmt
,
1
,(
char
*
)
data
,
5
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
/* execute */
rc
=
mysql_execute
(
stmt
);
fprintf
(
stdout
,
" mysql_execute() returned %d
\n
"
,
rc
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
...
...
@@ -2416,6 +2421,9 @@ static void test_long_data_str()
while
(
i
--
)
strxmov
(
data
,
data
,
"MySQL"
,
NullS
);
verify_col_data
(
"test_long_data_str"
,
"longstr"
,
data
);
rc
=
mysql_query
(
mysql
,
"DROP TABLE test_long_data_str"
);
myquery
(
rc
);
}
...
...
@@ -2428,8 +2436,10 @@ static void test_long_data_str1()
int
rc
,
i
;
char
data
[
255
];
long
length
,
length1
;
ulong
max_blob_length
,
blob_length
;
MYSQL_RES
*
result
;
MYSQL_BIND
bind
[
2
];
MYSQL_FIELD
*
field
;
myheader
(
"test_long_data_str1"
);
...
...
@@ -2450,7 +2460,7 @@ static void test_long_data_str1()
strmov
(
query
,
"INSERT INTO test_long_data_str VALUES(?,?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -2465,23 +2475,23 @@ static void test_long_data_str1()
bind
[
1
].
buffer_type
=
FIELD_TYPE_BLOB
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
length
=
my_sprintf
(
data
,
(
data
,
"MySQL AB"
));
/* supply data in pieces */
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_send_long_data
(
stmt
,
0
,
data
,
length
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_send_long_data
(
stmt
,
1
,
data
,
2
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
/* execute */
rc
=
mysql_execute
(
stmt
);
fprintf
(
stdout
,
" mysql_execute() returned %d
\n
"
,
rc
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
...
...
@@ -2494,6 +2504,11 @@ static void test_long_data_str1()
/* get the result */
result
=
mysql_store_result
(
mysql
);
mysql_field_seek
(
result
,
1
);
field
=
mysql_fetch_field
(
result
);
max_blob_length
=
field
->
max_length
;
mytest
(
result
);
assert
(
1
==
my_process_result_set
(
result
));
...
...
@@ -2504,6 +2519,52 @@ static void test_long_data_str1()
my_sprintf
(
data
,(
data
,
"%d"
,
i
*
2
));
verify_col_data
(
"test_long_data_str"
,
"length(blb)"
,
data
);
/* Test length of field->max_length */
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * from test_long_data_str"
);
check_stmt
(
stmt
);
verify_param_count
(
stmt
,
0
);
rc
=
mysql_execute
(
stmt
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
check_execute
(
stmt
,
rc
);
result
=
mysql_get_metadata
(
stmt
);
field
=
mysql_fetch_fields
(
result
);
DBUG_ASSERT
(
field
->
max_length
==
max_blob_length
);
/* Fetch results into a data buffer that is smaller than data */
bzero
((
char
*
)
bind
,
sizeof
(
*
bind
));
bind
[
0
].
buffer_type
=
MYSQL_TYPE_BLOB
;
bind
[
0
].
buffer
=
(
char
*
)
&
data
;
/* this buffer won't be altered */
bind
[
0
].
buffer_length
=
16
;
bind
[
0
].
length
=
&
blob_length
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
data
[
16
]
=
0
;
DBUG_ASSERT
((
mysql_fetch
(
stmt
)
==
0
));
DBUG_ASSERT
(
strlen
(
data
)
==
16
);
DBUG_ASSERT
(
blob_length
==
max_blob_length
);
/* Fetch all data */
bzero
((
char
*
)
(
bind
+
1
),
sizeof
(
*
bind
));
bind
[
1
].
buffer_type
=
MYSQL_TYPE_BLOB
;
bind
[
1
].
buffer
=
(
char
*
)
&
data
;
/* this buffer won't be altered */
bind
[
1
].
buffer_length
=
sizeof
(
data
);
bind
[
1
].
length
=
&
blob_length
;
bzero
(
data
,
sizeof
(
data
));
mysql_stmt_fetch_column
(
stmt
,
bind
+
1
,
0
,
0
);
DBUG_ASSERT
(
strlen
(
data
)
==
max_blob_length
);
mysql_free_result
(
result
);
mysql_stmt_close
(
stmt
);
/* Drop created table */
rc
=
mysql_query
(
mysql
,
"DROP TABLE test_long_data_str"
);
myquery
(
rc
);
}
...
...
@@ -2539,7 +2600,7 @@ static void test_long_data_bin()
strmov
(
query
,
"INSERT INTO test_long_data_bin VALUES(?,?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -2555,7 +2616,7 @@ static void test_long_data_bin()
bind
[
1
].
length
=
0
;
/* Will not be used */
bind
[
1
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
length
=
10
;
strmov
(
data
,
"MySQL AB"
);
...
...
@@ -2566,13 +2627,13 @@ static void test_long_data_bin()
for
(
i
=
0
;
i
<
100
;
i
++
)
{
rc
=
mysql_send_long_data
(
stmt
,
1
,(
char
*
)
data
,
4
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
}
/* execute */
rc
=
mysql_execute
(
stmt
);
fprintf
(
stdout
,
" mysql_execute() returned %d
\n
"
,
rc
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
...
...
@@ -2634,7 +2695,7 @@ static void test_simple_delete()
/* insert by prepare */
strmov
(
query
,
"DELETE FROM test_simple_delete WHERE col1=? AND col2=? AND col3=100"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -2654,10 +2715,10 @@ static void test_simple_delete()
bind
[
0
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
verify_affected_rows
(
1
);
...
...
@@ -2714,7 +2775,7 @@ static void test_update()
strmov
(
query
,
"INSERT INTO test_update(col2,col3) VALUES(?,?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -2733,18 +2794,18 @@ static void test_update()
bind
[
1
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
nData
=
100
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
verify_affected_rows
(
1
);
mysql_stmt_close
(
stmt
);
strmov
(
query
,
"UPDATE test_update SET col2=? WHERE col3=?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
nData
=
100
;
...
...
@@ -2761,10 +2822,10 @@ static void test_update()
bind
[
1
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
verify_affected_rows
(
1
);
mysql_stmt_close
(
stmt
);
...
...
@@ -2810,12 +2871,12 @@ static void test_prepare_noparam()
/* insert by prepare */
strmov
(
query
,
"INSERT INTO my_prepare VALUES(10,'venu')"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
0
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
...
...
@@ -2889,16 +2950,16 @@ static void test_bind_result()
bind
[
1
].
is_null
=
&
is_null
[
1
];
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_bind_result"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 1: %d,%s(%lu)"
,
nData
,
szData
,
length1
);
assert
(
nData
==
10
);
...
...
@@ -2906,7 +2967,7 @@ static void test_bind_result()
assert
(
length1
==
4
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 2: %d,%s(%lu)"
,
nData
,
szData
,
length1
);
assert
(
nData
==
20
);
...
...
@@ -2915,7 +2976,7 @@ static void test_bind_result()
length
=
99
;
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
if
(
is_null
[
0
])
fprintf
(
stdout
,
"
\n
row 3: NULL,%s(%lu)"
,
szData
,
length1
);
...
...
@@ -3010,16 +3071,16 @@ static void test_bind_result_ext()
bind
[
7
].
buffer_length
=
sizeof
(
bData
);
stmt
=
mysql_simple_prepare
(
mysql
,
"select * from test_bind_result"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data (tiny) : %d"
,
t_data
);
fprintf
(
stdout
,
"
\n
data (short) : %d"
,
s_data
);
...
...
@@ -3137,16 +3198,16 @@ static void test_bind_result_ext1()
}
stmt
=
mysql_simple_prepare
(
mysql
,
"select * from test_bind_result"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data (tiny) : %s(%lu)"
,
t_data
,
length
[
0
]);
fprintf
(
stdout
,
"
\n
data (short) : %f(%lu)"
,
s_data
,
length
[
1
]);
...
...
@@ -3197,7 +3258,7 @@ static void bind_fetch(int row_count)
my_bool
is_null
[
7
];
stmt
=
mysql_simple_prepare
(
mysql
,
"INSERT INTO test_bind_fetch VALUES(?,?,?,?,?,?,?)"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
7
);
...
...
@@ -3209,7 +3270,7 @@ static void bind_fetch(int row_count)
bind
[
i
].
is_null
=
0
;
}
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
while
(
count
--
)
{
...
...
@@ -3220,7 +3281,7 @@ static void bind_fetch(int row_count)
rc
+=
12
;
}
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
rc
=
mysql_commit
(
mysql
);
...
...
@@ -3257,18 +3318,18 @@ static void bind_fetch(int row_count)
bind
[
6
].
buffer_length
=
sizeof
(
s_data
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
while
(
row_count
--
)
{
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
"
);
fprintf
(
stdout
,
"
\n
tiny : %ld(%lu)"
,
data
[
0
],
length
[
0
]);
...
...
@@ -3402,17 +3463,17 @@ static void test_fetch_date()
assert
(
1
==
my_stmt_result
(
"SELECT * FROM test_bind_result"
));
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_bind_result"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
ts_4
[
0
]
=
'\0'
;
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
date : %s(%lu)"
,
date
,
d_length
);
fprintf
(
stdout
,
"
\n
time : %s(%lu)"
,
time
,
t_length
);
...
...
@@ -3730,7 +3791,7 @@ static void test_prepare_ext()
/* insert by prepare - all integers */
strmov
(
query
,(
char
*
)
"INSERT INTO test_prepare_ext(c1,c2,c3,c4,c5,c6) VALUES(?,?,?,?,?,?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
6
);
...
...
@@ -3766,7 +3827,7 @@ static void test_prepare_ext()
}
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
/*
* integer to integer
...
...
@@ -3774,7 +3835,7 @@ static void test_prepare_ext()
for
(
nData
=
0
;
nData
<
10
;
nData
++
,
tData
++
,
sData
++
,
bData
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
mysql_stmt_close
(
stmt
);
...
...
@@ -3783,11 +3844,11 @@ static void test_prepare_ext()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT c1,c2,c3,c4,c5,c6 FROM test_prepare_ext"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
/* get the result */
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
nData
==
(
int
)
my_process_stmt_result
(
stmt
));
...
...
@@ -3929,7 +3990,7 @@ static void test_insert()
/* insert by prepare */
stmt
=
mysql_simple_prepare
(
mysql
,
"INSERT INTO test_prep_insert VALUES(?,?)"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -3947,14 +4008,14 @@ static void test_insert()
bind
[
1
].
length
=
&
length
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
/* now, execute the prepared statement to insert 10 records.. */
for
(
tiny_data
=
0
;
tiny_data
<
3
;
tiny_data
++
)
{
length
=
my_sprintf
(
str_data
,
(
str_data
,
"MySQL%d"
,
tiny_data
));
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
mysql_stmt_close
(
stmt
);
...
...
@@ -4001,7 +4062,7 @@ static void test_prepare_resultset()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_prepare_resultset"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
0
);
...
...
@@ -4114,25 +4175,25 @@ static void test_stmt_close()
strmov
(
query
,
"DO
\"
nothing
\"
"
);
stmt1
=
mysql_simple_prepare
(
lmysql
,
query
);
mystmt_ini
t
(
stmt1
);
check_stm
t
(
stmt1
);
verify_param_count
(
stmt1
,
0
);
strmov
(
query
,
"INSERT INTO test_stmt_close(id) VALUES(?)"
);
stmt_x
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt_x
);
check_stm
t
(
stmt_x
);
verify_param_count
(
stmt_x
,
1
);
strmov
(
query
,
"UPDATE test_stmt_close SET id=? WHERE id=?"
);
stmt3
=
mysql_simple_prepare
(
lmysql
,
query
);
mystmt_ini
t
(
stmt3
);
check_stm
t
(
stmt3
);
verify_param_count
(
stmt3
,
2
);
strmov
(
query
,
"SELECT * FROM test_stmt_close WHERE id=?"
);
stmt2
=
mysql_simple_prepare
(
lmysql
,
query
);
mystmt_ini
t
(
stmt2
);
check_stm
t
(
stmt2
);
verify_param_count
(
stmt2
,
1
);
...
...
@@ -4160,10 +4221,10 @@ static void test_stmt_close()
bind
[
0
].
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt_x
,
bind
);
mystmt
(
stmt_x
,
rc
);
check_execute
(
stmt_x
,
rc
);
rc
=
mysql_execute
(
stmt_x
);
mystmt
(
stmt_x
,
rc
);
check_execute
(
stmt_x
,
rc
);
verify_st_affected_rows
(
stmt_x
,
1
);
...
...
@@ -4199,7 +4260,7 @@ static void test_set_variable()
mysql_autocommit
(
mysql
,
TRUE
);
stmt1
=
mysql_simple_prepare
(
mysql
,
"show variables like 'max_error_count'"
);
mystmt_ini
t
(
stmt1
);
check_stm
t
(
stmt1
);
get_bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
get_bind
[
0
].
buffer
=
(
char
*
)
var
;
...
...
@@ -4214,13 +4275,13 @@ static void test_set_variable()
get_bind
[
1
].
length
=
0
;
rc
=
mysql_execute
(
stmt1
);
mystmt
(
stmt1
,
rc
);
check_execute
(
stmt1
,
rc
);
rc
=
mysql_bind_result
(
stmt1
,
get_bind
);
mystmt
(
stmt1
,
rc
);
check_execute
(
stmt1
,
rc
);
rc
=
mysql_fetch
(
stmt1
);
mystmt
(
stmt1
,
rc
);
check_execute
(
stmt1
,
rc
);
fprintf
(
stdout
,
"
\n
max_error_count(default): %d"
,
get_count
);
def_count
=
get_count
;
...
...
@@ -4230,7 +4291,7 @@ static void test_set_variable()
assert
(
rc
==
MYSQL_NO_DATA
);
stmt
=
mysql_simple_prepare
(
mysql
,
"set max_error_count=?"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
set_bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
set_bind
[
0
].
buffer
=
(
char
*
)
&
set_count
;
...
...
@@ -4238,19 +4299,19 @@ static void test_set_variable()
set_bind
[
0
].
length
=
0
;
rc
=
mysql_bind_param
(
stmt
,
set_bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
set_count
=
31
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_commit
(
mysql
);
rc
=
mysql_execute
(
stmt1
);
mystmt
(
stmt1
,
rc
);
check_execute
(
stmt1
,
rc
);
rc
=
mysql_fetch
(
stmt1
);
mystmt
(
stmt1
,
rc
);
check_execute
(
stmt1
,
rc
);
fprintf
(
stdout
,
"
\n
max_error_count : %d"
,
get_count
);
assert
(
get_count
==
set_count
);
...
...
@@ -4261,13 +4322,13 @@ static void test_set_variable()
/* restore back to default */
set_count
=
def_count
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt1
);
mystmt
(
stmt1
,
rc
);
check_execute
(
stmt1
,
rc
);
rc
=
mysql_fetch
(
stmt1
);
mystmt
(
stmt1
,
rc
);
check_execute
(
stmt1
,
rc
);
fprintf
(
stdout
,
"
\n
max_error_count(default): %d"
,
get_count
);
assert
(
get_count
==
set_count
);
...
...
@@ -4305,7 +4366,7 @@ static void test_insert_meta()
strmov
(
query
,
"INSERT INTO test_prep_insert VALUES(10,'venu1','test')"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
0
);
...
...
@@ -4316,7 +4377,7 @@ static void test_insert_meta()
strmov
(
query
,
"INSERT INTO test_prep_insert VALUES(?,'venu',?)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -4368,7 +4429,7 @@ static void test_update_meta()
strmov
(
query
,
"UPDATE test_prep_update SET col1=10, col2='venu1' WHERE col3='test'"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
0
);
...
...
@@ -4379,7 +4440,7 @@ static void test_update_meta()
strmov
(
query
,
"UPDATE test_prep_update SET col1=?, col2='venu' WHERE col3=?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -4435,7 +4496,7 @@ static void test_select_meta()
strmov
(
query
,
"SELECT * FROM test_prep_select WHERE col1=10"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
0
);
...
...
@@ -4444,7 +4505,7 @@ static void test_select_meta()
strmov
(
query
,
"SELECT col1, col3 from test_prep_select WHERE col1=? AND col3='test' AND col2= ?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
2
);
...
...
@@ -4579,10 +4640,10 @@ static void test_multi_stmt()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_multi_table WHERE id = ?"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
stmt2
=
mysql_simple_prepare
(
mysql
,
"UPDATE test_multi_table SET name='updated' WHERE id=10"
);
mystmt_ini
t
(
stmt2
);
check_stm
t
(
stmt2
);
verify_param_count
(
stmt
,
1
);
...
...
@@ -4601,18 +4662,18 @@ static void test_multi_stmt()
bind
[
1
].
is_null
=
&
is_null
[
1
];
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
id
=
10
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
id
=
999
;
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
int_data: %d(%lu)"
,
id
,
length
[
0
]);
fprintf
(
stdout
,
"
\n
str_data: %s(%lu)"
,
name
,
length
[
1
]);
...
...
@@ -4624,23 +4685,23 @@ static void test_multi_stmt()
/* alter the table schema now */
stmt1
=
mysql_simple_prepare
(
mysql
,
"DELETE FROM test_multi_table WHERE id = ? AND name=?"
);
mystmt_ini
t
(
stmt1
);
check_stm
t
(
stmt1
);
verify_param_count
(
stmt1
,
2
);
rc
=
mysql_bind_param
(
stmt1
,
bind
);
mystmt
(
stmt1
,
rc
);
check_execute
(
stmt1
,
rc
);
rc
=
mysql_execute
(
stmt2
);
mystmt
(
stmt2
,
rc
);
check_execute
(
stmt2
,
rc
);
verify_st_affected_rows
(
stmt2
,
1
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
int_data: %d(%lu)"
,
id
,
length
[
0
]);
fprintf
(
stdout
,
"
\n
str_data: %s(%lu)"
,
name
,
length
[
1
]);
...
...
@@ -4651,14 +4712,14 @@ static void test_multi_stmt()
assert
(
rc
==
MYSQL_NO_DATA
);
rc
=
mysql_execute
(
stmt1
);
mystmt
(
stmt1
,
rc
);
check_execute
(
stmt1
,
rc
);
verify_st_affected_rows
(
stmt1
,
1
);
mysql_stmt_close
(
stmt1
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
assert
(
rc
==
MYSQL_NO_DATA
);
...
...
@@ -4850,7 +4911,7 @@ static void test_prepare_alter()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"INSERT INTO test_prep_alter VALUES(?,'monty')"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
1
);
...
...
@@ -4862,18 +4923,18 @@ static void test_prepare_alter()
bind
[
0
].
is_null
=
&
is_null
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
id
=
30
;
length
=
0
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
if
(
thread_query
((
char
*
)
"ALTER TABLE test_prep_alter change id id_new varchar(20)"
))
exit
(
0
);
is_null
=
1
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
4
==
my_stmt_result
(
"SELECT * FROM test_prep_alter"
));
...
...
@@ -5034,7 +5095,7 @@ static void test_prepare_multi_statements()
}
strmov
(
query
,
"select 1; select 'another value'"
);
stmt
=
mysql_simple_prepare
(
mysql_local
,
query
);
mystmt_ini
t_r
(
stmt
);
check_stm
t_r
(
stmt
);
mysql_close
(
mysql_local
);
}
...
...
@@ -5089,19 +5150,19 @@ static void test_store_result()
length1
=
0
;
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_store_result"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 1: %ld,%s(%lu)"
,
nData
,
szData
,
length1
);
assert
(
nData
==
10
);
...
...
@@ -5109,7 +5170,7 @@ static void test_store_result()
assert
(
length1
==
4
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 2: %ld,%s(%lu)"
,
nData
,
szData
,
length1
);
assert
(
nData
==
20
);
...
...
@@ -5118,7 +5179,7 @@ static void test_store_result()
length
=
99
;
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
if
(
is_null
[
0
])
fprintf
(
stdout
,
"
\n
row 3: NULL,%s(%lu)"
,
szData
,
length1
);
...
...
@@ -5130,13 +5191,13 @@ static void test_store_result()
assert
(
rc
==
MYSQL_NO_DATA
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 1: %ld,%s(%lu)"
,
nData
,
szData
,
length1
);
assert
(
nData
==
10
);
...
...
@@ -5144,7 +5205,7 @@ static void test_store_result()
assert
(
length1
==
4
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 2: %ld,%s(%lu)"
,
nData
,
szData
,
length1
);
assert
(
nData
==
20
);
...
...
@@ -5153,7 +5214,7 @@ static void test_store_result()
length
=
99
;
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
if
(
is_null
[
0
])
fprintf
(
stdout
,
"
\n
row 3: NULL,%s(%lu)"
,
szData
,
length1
);
...
...
@@ -5200,13 +5261,13 @@ static void test_store_result1()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_store_result"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
0
;
while
(
mysql_fetch
(
stmt
)
!=
MYSQL_NO_DATA
)
...
...
@@ -5215,10 +5276,10 @@ static void test_store_result1()
assert
(
rc
==
3
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
0
;
while
(
mysql_fetch
(
stmt
)
!=
MYSQL_NO_DATA
)
...
...
@@ -5271,24 +5332,24 @@ static void test_store_result2()
strmov
((
char
*
)
query
,
"SELECT col1 FROM test_store_result where col1= ?"
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
nData
=
10
;
length
=
0
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
nData
=
0
;
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 1: %d"
,
nData
);
assert
(
nData
==
10
);
...
...
@@ -5298,14 +5359,14 @@ static void test_store_result2()
nData
=
20
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
nData
=
0
;
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 1: %d"
,
nData
);
assert
(
nData
==
20
);
...
...
@@ -5363,23 +5424,23 @@ static void test_subselect()
bind
[
0
].
is_null
=
0
;
stmt
=
mysql_simple_prepare
(
mysql
,
"INSERT INTO test_sub2(id) SELECT * FROM test_sub1 WHERE id=?"
,
100
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
id
=
2
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
verify_st_affected_rows
(
stmt
,
1
);
id
=
9
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
verify_st_affected_rows
(
stmt
,
0
);
...
...
@@ -5392,20 +5453,20 @@ static void test_subselect()
assert
(
1
==
my_stmt_result
(
"SELECT ROW(1,7) IN (select id, id1 from test_sub2 WHERE id1=7)"
));
stmt
=
mysql_simple_prepare
(
mysql
,
query
,
150
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
id
=
7
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 1: %d"
,
id
);
assert
(
id
==
1
);
...
...
@@ -5415,10 +5476,10 @@ static void test_subselect()
id
=
8
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 1: %d"
,
id
);
assert
(
id
==
0
);
...
...
@@ -5446,7 +5507,7 @@ static void test_bind_date_conv(uint row_count)
uint
year
,
month
,
day
,
hour
,
minute
,
sec
;
stmt
=
mysql_simple_prepare
(
mysql
,
"INSERT INTO test_date VALUES(?,?,?,?)"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
4
);
...
...
@@ -5475,7 +5536,7 @@ static void test_bind_date_conv(uint row_count)
}
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
for
(
count
=
0
;
count
<
row_count
;
count
++
)
{
...
...
@@ -5491,7 +5552,7 @@ static void test_bind_date_conv(uint row_count)
tm
[
i
].
second
=
sec
+
count
;
}
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
rc
=
mysql_commit
(
mysql
);
...
...
@@ -5505,18 +5566,18 @@ static void test_bind_date_conv(uint row_count)
myquery
(
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
for
(
count
=
0
;
count
<
row_count
;
count
++
)
{
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
"
);
for
(
i
=
0
;
i
<
array_elements
(
bind
);
i
++
)
...
...
@@ -5697,25 +5758,25 @@ static void test_pure_coverage()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"insert into test_pure(c67788) values(10)"
);
mystmt_ini
t_r
(
stmt
);
check_stm
t_r
(
stmt
);
/* Query without params and result should allow to bind 0 arrays */
stmt
=
mysql_simple_prepare
(
mysql
,
"insert into test_pure(c2) values(10)"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_param
(
stmt
,
(
MYSQL_BIND
*
)
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
(
MYSQL_BIND
*
)
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"insert into test_pure(c2) values(?)"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
bind
[
0
].
length
=
&
length
;
bind
[
0
].
is_null
=
0
;
...
...
@@ -5727,25 +5788,25 @@ static void test_pure_coverage()
bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"select * from test_pure"
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_GEOMETRY
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt_r
(
stmt
,
rc
);
/* unsupported buffer type */
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt_r
(
stmt
,
rc
);
/* commands out of sync */
...
...
@@ -5782,10 +5843,10 @@ static void test_buffers()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"select str from test_buffer"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
bzero
(
buffer
,
20
);
/* Avoid overruns in printf() */
...
...
@@ -5796,14 +5857,14 @@ static void test_buffers()
bind
[
0
].
buffer
=
(
char
*
)
buffer
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
buffer
[
1
]
=
'X'
;
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s (%lu)"
,
buffer
,
length
);
assert
(
buffer
[
0
]
==
'M'
);
assert
(
buffer
[
1
]
==
'X'
);
...
...
@@ -5811,30 +5872,30 @@ static void test_buffers()
bind
[
0
].
buffer_length
=
8
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
/* re-bind */
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s (%lu)"
,
buffer
,
length
);
assert
(
strncmp
(
buffer
,
"Database"
,
8
)
==
0
);
assert
(
length
==
8
);
bind
[
0
].
buffer_length
=
12
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
/* re-bind */
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s (%lu)"
,
buffer
,
length
);
assert
(
strcmp
(
buffer
,
"Open-Source"
)
==
0
);
assert
(
length
==
11
);
bind
[
0
].
buffer_length
=
6
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
/* re-bind */
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s (%lu)"
,
buffer
,
length
);
assert
(
strncmp
(
buffer
,
"Popula"
,
6
)
==
0
);
assert
(
length
==
7
);
...
...
@@ -5860,7 +5921,7 @@ static void test_open_direct()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"INSERT INTO test_open_direct values(10,'mysql')"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_open_direct"
);
myquery
(
rc
);
...
...
@@ -5872,7 +5933,7 @@ static void test_open_direct()
mysql_free_result
(
result
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
verify_st_affected_rows
(
stmt
,
1
);
...
...
@@ -5886,7 +5947,7 @@ static void test_open_direct()
mysql_free_result
(
result
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
verify_st_affected_rows
(
stmt
,
1
);
...
...
@@ -5903,41 +5964,41 @@ static void test_open_direct()
/* run a direct query in the middle of a fetch */
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_open_direct"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_query
(
mysql
,
"INSERT INTO test_open_direct(id) VALUES(20)"
);
myquery_r
(
rc
);
rc
=
mysql_stmt_close
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_query
(
mysql
,
"INSERT INTO test_open_direct(id) VALUES(20)"
);
myquery
(
rc
);
/* run a direct query with store result */
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_open_direct"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_query
(
mysql
,
"drop table test_open_direct"
);
myquery
(
rc
);
rc
=
mysql_stmt_close
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
/*
...
...
@@ -5954,10 +6015,10 @@ static void test_fetch_nobuffs()
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT DATABASE(), CURRENT_USER(), \
CURRENT_DATE(), CURRENT_TIME()"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
0
;
while
(
mysql_fetch
(
stmt
)
!=
MYSQL_NO_DATA
)
...
...
@@ -5977,10 +6038,10 @@ static void test_fetch_nobuffs()
bind
[
3
].
buffer
=
(
char
*
)
str
[
3
];
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
0
;
while
(
mysql_fetch
(
stmt
)
!=
MYSQL_NO_DATA
)
...
...
@@ -6027,10 +6088,10 @@ static void test_ushort_bug()
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_ushort"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_SHORT
;
bind
[
0
].
buffer
=
(
char
*
)
&
short_value
;
...
...
@@ -6053,10 +6114,10 @@ static void test_ushort_bug()
bind
[
3
].
length
=
&
t_length
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
ushort : %d (%ld)"
,
short_value
,
s_length
);
fprintf
(
stdout
,
"
\n
ulong : %ld (%ld)"
,
long_value
,
l_length
);
...
...
@@ -6111,10 +6172,10 @@ static void test_sshort_bug()
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_sshort"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_SHORT
;
bind
[
0
].
buffer
=
(
char
*
)
&
short_value
;
...
...
@@ -6137,10 +6198,10 @@ static void test_sshort_bug()
bind
[
3
].
length
=
&
t_length
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
sshort : %d (%ld)"
,
short_value
,
s_length
);
fprintf
(
stdout
,
"
\n
slong : %ld (%ld)"
,
long_value
,
l_length
);
...
...
@@ -6195,10 +6256,10 @@ static void test_stiny_bug()
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_stiny"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_SHORT
;
bind
[
0
].
buffer
=
(
char
*
)
&
short_value
;
...
...
@@ -6221,10 +6282,10 @@ static void test_stiny_bug()
bind
[
3
].
length
=
&
t_length
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
sshort : %d (%ld)"
,
short_value
,
s_length
);
fprintf
(
stdout
,
"
\n
slong : %ld (%ld)"
,
long_value
,
l_length
);
...
...
@@ -6280,10 +6341,10 @@ static void test_field_misc()
mysql_free_result
(
result
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT @@autocommit"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
result
=
mysql_get_metadata
(
stmt
);
mytest
(
result
);
...
...
@@ -6300,10 +6361,10 @@ static void test_field_misc()
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT @@table_type"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
bind
[
0
].
buffer
=
table_type
;
...
...
@@ -6312,10 +6373,10 @@ static void test_field_misc()
bind
[
0
].
buffer_length
=
NAME_LEN
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
default table type: %s(%ld)"
,
table_type
,
type_length
);
rc
=
mysql_fetch
(
stmt
);
...
...
@@ -6324,13 +6385,13 @@ static void test_field_misc()
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT @@table_type"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
result
=
mysql_get_metadata
(
stmt
);
mytest
(
result
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
...
...
@@ -6344,13 +6405,13 @@ static void test_field_misc()
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT @@max_error_count"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
result
=
mysql_get_metadata
(
stmt
);
mytest
(
result
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
...
...
@@ -6364,13 +6425,13 @@ static void test_field_misc()
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT @@max_allowed_packet"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
result
=
mysql_get_metadata
(
stmt
);
mytest
(
result
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
...
...
@@ -6384,13 +6445,13 @@ static void test_field_misc()
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT @@sql_warnings"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
result
=
mysql_get_metadata
(
stmt
);
mytest
(
result
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
...
...
@@ -6445,10 +6506,10 @@ static void test_set_option()
fprintf
(
stdout
,
"
\n
with SQL_SELECT_LIMIT=2 (prepare)"
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_limit"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
2
==
my_process_stmt_result
(
stmt
));
...
...
@@ -6460,10 +6521,10 @@ static void test_set_option()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_limit"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
4
==
my_process_stmt_result
(
stmt
));
...
...
@@ -6544,7 +6605,7 @@ static void test_prepare_grant()
myquery_r
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"DELETE FROM test_grant"
);
mystmt_ini
t_r
(
stmt
);
check_stm
t_r
(
stmt
);
assert
(
4
==
my_stmt_result
(
"SELECT * FROM test_grant"
));
...
...
@@ -6590,10 +6651,10 @@ static void test_frm_bug()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"show variables like 'datadir'"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
bind
[
0
].
buffer
=
data_dir
;
...
...
@@ -6603,10 +6664,10 @@ static void test_frm_bug()
bind
[
1
]
=
bind
[
0
];
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data directory: %s"
,
data_dir
);
...
...
@@ -6673,7 +6734,7 @@ static void test_decimal_bug()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"select c1 from test_decimal_bug where c1= ?"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
bind
[
0
].
buffer
=
(
char
*
)
data
;
...
...
@@ -6683,18 +6744,18 @@ static void test_decimal_bug()
is_null
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
strcpy
(
data
,
"8.0"
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
data
[
0
]
=
0
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s"
,
data
);
assert
(
strcmp
(
data
,
"8.00"
)
==
0
);
...
...
@@ -6704,14 +6765,14 @@ static void test_decimal_bug()
strcpy
(
data
,
"5.61"
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
data
[
0
]
=
0
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s"
,
data
);
assert
(
strcmp
(
data
,
"5.61"
)
==
0
);
...
...
@@ -6721,21 +6782,21 @@ static void test_decimal_bug()
is_null
=
1
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
assert
(
rc
==
MYSQL_NO_DATA
);
strcpy
(
data
,
"10.22"
);
is_null
=
0
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
data
[
0
]
=
0
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
data: %s"
,
data
);
assert
(
strcmp
(
data
,
"10.22"
)
==
0
);
...
...
@@ -6769,10 +6830,10 @@ static void test_explain_bug()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"explain test_explain"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
2
==
my_process_stmt_result
(
stmt
));
...
...
@@ -6805,10 +6866,10 @@ static void test_explain_bug()
mysql_stmt_close
(
stmt
);
stmt
=
mysql_simple_prepare
(
mysql
,
"explain select id, name FROM test_explain"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
...
...
@@ -7060,7 +7121,7 @@ static void test_logs()
length
=
(
ulong
)(
strmov
((
char
*
)
data
,
"INSERT INTO test_logs VALUES(?,?)"
)
-
data
);
stmt
=
mysql_prepare
(
mysql
,
data
,
length
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_SHORT
;
bind
[
0
].
buffer
=
(
char
*
)
&
id
;
...
...
@@ -7077,61 +7138,61 @@ static void test_logs()
length
=
(
ulong
)(
strmov
((
char
*
)
data
,
"MySQL - Open Source Database"
)
-
data
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
strmov
((
char
*
)
data
,
"'"
);
length
=
1
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
strmov
((
char
*
)
data
,
"
\"
"
);
length
=
1
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
length
=
(
ulong
)(
strmov
((
char
*
)
data
,
"my
\'
sql
\'
"
)
-
data
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
length
=
(
ulong
)(
strmov
((
char
*
)
data
,
"my
\"
sql
\"
"
)
-
data
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
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_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
length
=
(
ulong
)(
strmov
((
char
*
)
data
,
"SELECT * FROM test_logs WHERE id=?"
)
-
data
);
stmt
=
mysql_prepare
(
mysql
,
data
,
length
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
bind
[
1
].
buffer_length
=
255
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
id : %d"
,
id
);
fprintf
(
stdout
,
"
\n
name : %s(%ld)"
,
data
,
length
);
...
...
@@ -7141,7 +7202,7 @@ static void test_logs()
assert
(
strcmp
(
data
,
"MySQL - Open Source"
)
==
0
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
name : %s(%ld)"
,
data
,
length
);
...
...
@@ -7149,7 +7210,7 @@ static void test_logs()
assert
(
strcmp
(
data
,
"'"
)
==
0
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
name : %s(%ld)"
,
data
,
length
);
...
...
@@ -7157,7 +7218,7 @@ static void test_logs()
assert
(
strcmp
(
data
,
"
\"
"
)
==
0
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
name : %s(%ld)"
,
data
,
length
);
...
...
@@ -7165,7 +7226,7 @@ static void test_logs()
assert
(
strcmp
(
data
,
"my
\'
sql
\'
"
)
==
0
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
name : %s(%ld)"
,
data
,
length
);
...
...
@@ -7216,29 +7277,29 @@ static void test_nstmts()
length
=
(
long
)(
strmov
(
query
,
"insert into test_nstmts values(?)"
)
-
query
);
stmt
=
mysql_prepare
(
mysql
,
query
,
length
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
}
stmt
=
mysql_simple_prepare
(
mysql
,
" select count(*) from test_nstmts"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
i
=
0
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
total rows: %d"
,
i
);
assert
(
i
==
total_stmts
);
...
...
@@ -7275,7 +7336,7 @@ static void test_fetch_seek()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"select * from test_seek"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
bind
[
0
].
buffer
=
(
char
*
)
&
c1
;
...
...
@@ -7294,16 +7355,16 @@ static void test_fetch_seek()
bind
[
2
].
buffer_length
=
sizeof
(
c3
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 0: %ld,%s,%s"
,
c1
,
c2
,
c3
);
...
...
@@ -7312,32 +7373,32 @@ static void test_fetch_seek()
row
=
mysql_stmt_row_seek
(
stmt
,
row
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
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
);
check_execute
(
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
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 0: %ld,%s,%s"
,
c1
,
c2
,
c3
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
assert
(
rc
==
MYSQL_NO_DATA
);
...
...
@@ -7370,7 +7431,7 @@ static void test_fetch_offset()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"select * from test_column"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
bind
[
0
].
buffer
=
(
char
*
)
data
;
...
...
@@ -7379,43 +7440,43 @@ static void test_fetch_offset()
bind
[
0
].
length
=
&
length
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
0
);
mystmt_r
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
data
[
0
]
=
'\0'
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 1: %s (%ld)"
,
data
,
length
);
assert
(
strncmp
(
data
,
"abcd"
,
4
)
==
0
&&
length
==
10
);
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
5
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 1: %s (%ld)"
,
data
,
length
);
assert
(
strncmp
(
data
,
"fg"
,
2
)
==
0
&&
length
==
10
);
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
9
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 0: %s (%ld)"
,
data
,
length
);
assert
(
strncmp
(
data
,
"j"
,
1
)
==
0
&&
length
==
10
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
is_null
=
0
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
is_null
==
1
);
...
...
@@ -7450,7 +7511,7 @@ static void test_fetch_column()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"select * from test_column order by c2 desc"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
bind
[
0
].
buffer
=
(
char
*
)
&
bc1
;
...
...
@@ -7464,19 +7525,19 @@ static void test_fetch_column()
bind
[
1
].
length
=
&
bl2
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch_column
(
stmt
,
bind
,
1
,
0
);
/* No-op at this point */
mystmt_r
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 0: %d,%s"
,
bc1
,
bc2
);
...
...
@@ -7488,13 +7549,13 @@ static void test_fetch_column()
bind
[
0
].
length
=
&
l2
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
1
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 1: %s(%ld)"
,
c2
,
l2
);
assert
(
strncmp
(
c2
,
"venu"
,
4
)
==
0
&&
l2
==
4
);
c2
[
0
]
=
'\0'
;
l2
=
0
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
1
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 1: %s(%ld)"
,
c2
,
l2
);
assert
(
strcmp
(
c2
,
"venu"
)
==
0
&&
l2
==
4
);
...
...
@@ -7506,12 +7567,12 @@ static void test_fetch_column()
bind
[
0
].
length
=
&
l1
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 0: %d(%ld)"
,
c1
,
l1
);
assert
(
c1
==
1
&&
l1
==
4
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
row 1: %d,%s"
,
bc1
,
bc2
);
...
...
@@ -7523,13 +7584,13 @@ static void test_fetch_column()
bind
[
0
].
length
=
&
l2
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
1
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 1: %s(%ld)"
,
c2
,
l2
);
assert
(
strncmp
(
c2
,
"mysq"
,
4
)
==
0
&&
l2
==
5
);
c2
[
0
]
=
'\0'
;
l2
=
0
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
1
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 1: %si(%ld)"
,
c2
,
l2
);
assert
(
strcmp
(
c2
,
"mysql"
)
==
0
&&
l2
==
5
);
...
...
@@ -7541,7 +7602,7 @@ static void test_fetch_column()
bind
[
0
].
length
=
&
l1
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 0: %d(%ld)"
,
c1
,
l1
);
assert
(
c1
==
2
&&
l1
==
4
);
...
...
@@ -7634,10 +7695,10 @@ static void test_mem_overun()
assert
(
1
==
my_process_result
(
mysql
));
stmt
=
mysql_simple_prepare
(
mysql
,
"select * from t_mem_overun"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
field_res
=
mysql_get_metadata
(
stmt
);
mytest
(
field_res
);
...
...
@@ -7646,10 +7707,10 @@ static void test_mem_overun()
assert
(
1000
==
mysql_num_fields
(
field_res
));
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
assert
(
rc
==
MYSQL_NO_DATA
);
...
...
@@ -7682,7 +7743,7 @@ static void test_free_result()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"select * from test_free_result"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
bind
[
0
].
buffer
=
(
char
*
)
&
bc1
;
...
...
@@ -7691,13 +7752,13 @@ static void test_free_result()
bind
[
0
].
length
=
&
bl1
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
c2
[
0
]
=
'\0'
;
l2
=
0
;
bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
...
...
@@ -7707,12 +7768,12 @@ static void test_free_result()
bind
[
0
].
length
=
&
l2
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 0: %s(%ld)"
,
c2
,
l2
);
assert
(
strncmp
(
c2
,
"1"
,
1
)
==
0
&&
l2
==
1
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
c1
=
0
,
l2
=
0
;
bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
...
...
@@ -7722,7 +7783,7 @@ static void test_free_result()
bind
[
0
].
length
=
&
l2
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 0: %d(%ld)"
,
c1
,
l2
);
assert
(
c1
==
2
&&
l2
==
4
);
...
...
@@ -7730,7 +7791,7 @@ static void test_free_result()
myquery_r
(
rc
);
/* error should be, COMMANDS OUT OF SYNC */
rc
=
mysql_stmt_free_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_query
(
mysql
,
"drop table test_free_result"
);
myquery
(
rc
);
/* should be successful */
...
...
@@ -7761,7 +7822,7 @@ static void test_free_store_result()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"select * from test_free_result"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
bind
[
0
].
buffer
=
(
char
*
)
&
bc1
;
...
...
@@ -7770,16 +7831,16 @@ static void test_free_store_result()
bind
[
0
].
length
=
&
bl1
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
c2
[
0
]
=
'\0'
;
l2
=
0
;
bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
...
...
@@ -7789,12 +7850,12 @@ static void test_free_store_result()
bind
[
0
].
length
=
&
l2
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 1: %s(%ld)"
,
c2
,
l2
);
assert
(
strncmp
(
c2
,
"1"
,
1
)
==
0
&&
l2
==
1
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
c1
=
0
,
l2
=
0
;
bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
...
...
@@ -7804,12 +7865,12 @@ static void test_free_store_result()
bind
[
0
].
length
=
&
l2
;
rc
=
mysql_fetch_column
(
stmt
,
bind
,
0
,
0
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
col 0: %d(%ld)"
,
c1
,
l2
);
assert
(
c1
==
2
&&
l2
==
4
);
rc
=
mysql_stmt_free_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_query
(
mysql
,
"drop table test_free_result"
);
myquery
(
rc
);
...
...
@@ -7848,7 +7909,7 @@ static void test_sqlmode()
strcpy
(
query
,
"INSERT INTO test_piping VALUES(?||?)"
);
fprintf
(
stdout
,
"
\n
query: %s"
,
query
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
fprintf
(
stdout
,
"
\n
total parameters: %ld"
,
mysql_param_count
(
stmt
));
...
...
@@ -7865,11 +7926,11 @@ static void test_sqlmode()
bind
[
1
].
length
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
strcpy
(
c1
,
"My"
);
strcpy
(
c2
,
"SQL"
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
verify_col_data
(
"test_piping"
,
"name"
,
"MySQL"
);
...
...
@@ -7880,7 +7941,7 @@ static void test_sqlmode()
strcpy
(
query
,
"SELECT connection_id ()"
);
fprintf
(
stdout
,
"
\n
query: %s"
,
query
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t_r
(
stmt
);
check_stm
t_r
(
stmt
);
/* ANSI */
strcpy
(
query
,
"SET SQL_MODE=
\"
ANSI
\"
"
);
...
...
@@ -7891,15 +7952,15 @@ static void test_sqlmode()
strcpy
(
query
,
"INSERT INTO test_piping VALUES(?||?)"
);
fprintf
(
stdout
,
"
\n
query: %s"
,
query
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
fprintf
(
stdout
,
"
\n
total parameters: %ld"
,
mysql_param_count
(
stmt
));
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
strcpy
(
c1
,
"My"
);
strcpy
(
c2
,
"SQL"
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
verify_col_data
(
"test_piping"
,
"name"
,
"MySQL"
);
...
...
@@ -7908,13 +7969,13 @@ static void test_sqlmode()
strcpy
(
query
,
"SELECT connection_id ()"
);
fprintf
(
stdout
,
"
\n
query: %s"
,
query
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
assert
(
rc
==
MYSQL_NO_DATA
);
...
...
@@ -7931,13 +7992,13 @@ static void test_sqlmode()
strcpy
(
query
,
"SELECT connection_id ()"
);
fprintf
(
stdout
,
"
\n
query: %s"
,
query
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
assert
(
rc
==
MYSQL_NO_DATA
);
...
...
@@ -7972,7 +8033,7 @@ static void test_ts()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"INSERT INTO test_ts VALUES(?,?,?),(?,?,?)"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
ts
.
year
=
2003
;
ts
.
month
=
07
;
...
...
@@ -8000,10 +8061,10 @@ static void test_ts()
bind
[
5
]
=
bind
[
4
]
=
bind
[
3
];
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
mysql_stmt_close
(
stmt
);
...
...
@@ -8012,13 +8073,13 @@ static void test_ts()
verify_col_data
(
"test_ts"
,
"c"
,
"2003-07-12 21:07:46"
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM test_ts"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
prep_res
=
mysql_get_metadata
(
stmt
);
mytest
(
prep_res
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
2
==
my_process_stmt_result
(
stmt
));
field_count
=
mysql_num_fields
(
prep_res
);
...
...
@@ -8035,13 +8096,13 @@ static void test_ts()
fprintf
(
stdout
,
"
\n
%s"
,
query
);
stmt
=
mysql_prepare
(
mysql
,
query
,
length
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
while
(
mysql_fetch
(
stmt
)
==
0
)
row_count
++
;
...
...
@@ -8083,7 +8144,7 @@ static void test_bug1500()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT i FROM test_bg1500 WHERE i IN (?,?,?)"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
3
);
bind
[
0
].
buffer
=
(
char
*
)
int_data
;
...
...
@@ -8096,10 +8157,10 @@ static void test_bug1500()
bind
[
2
].
buffer
=
(
char
*
)(
int_data
+
2
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
...
...
@@ -8121,7 +8182,7 @@ static void test_bug1500()
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT s FROM test_bg1500 WHERE MATCH (s) AGAINST (?)"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
1
);
...
...
@@ -8133,10 +8194,10 @@ static void test_bug1500()
bind
[
0
].
length
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
...
...
@@ -8149,7 +8210,7 @@ static void test_bug1500()
/* This should work too */
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT s FROM test_bg1500 WHERE MATCH (s) AGAINST (CONCAT(?,'digger'))"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
verify_param_count
(
stmt
,
1
);
...
...
@@ -8161,10 +8222,10 @@ static void test_bug1500()
bind
[
0
].
length
=
0
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
...
...
@@ -8186,7 +8247,7 @@ static void test_bug1946()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
query
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_real_query
(
mysql
,
query
,
strlen
(
query
));
assert
(
rc
!=
0
);
fprintf
(
stdout
,
"Got error (as expected):
\n
"
);
...
...
@@ -8246,11 +8307,11 @@ static void test_bug2247()
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
insert
,
strlen
(
insert
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
for
(
i
=
0
;
i
<
NUM_ROWS
;
++
i
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
}
exp_count
=
mysql_stmt_affected_rows
(
stmt
);
assert
(
exp_count
==
1
);
...
...
@@ -8278,12 +8339,12 @@ static void test_bug2247()
/* check that mysql_stmt_store_result modifies mysql_stmt_affected_rows */
stmt
=
mysql_prepare
(
mysql
,
select
,
strlen
(
select
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
exp_count
=
mysql_stmt_affected_rows
(
stmt
);
assert
(
exp_count
==
NUM_ROWS
);
...
...
@@ -8319,11 +8380,11 @@ static void test_subqueries()
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
5
==
my_process_stmt_result
(
stmt
));
}
mysql_stmt_close
(
stmt
);
...
...
@@ -8368,9 +8429,9 @@ static void test_distinct()
for
(
i
=
0
;
i
<
3
;
i
++
)
{
stmt
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
5
==
my_process_stmt_result
(
stmt
));
mysql_stmt_close
(
stmt
);
}
...
...
@@ -8399,7 +8460,7 @@ static void test_bug2248()
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
query1
,
strlen
(
query1
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
/* This should not hang */
rc
=
mysql_fetch
(
stmt
);
...
...
@@ -8412,10 +8473,10 @@ static void test_bug2248()
mysql_stmt_close
(
stmt
);
stmt
=
mysql_prepare
(
mysql
,
query2
,
strlen
(
query2
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
/* This too should not hang but should return proper error */
rc
=
mysql_fetch
(
stmt
);
...
...
@@ -8423,7 +8484,7 @@ static void test_bug2248()
/* This too should not hang but should not bark */
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
/* This should return proper error */
rc
=
mysql_fetch
(
stmt
);
...
...
@@ -8455,11 +8516,11 @@ static void test_subqueries_ref()
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
}
mysql_stmt_close
(
stmt
);
...
...
@@ -8509,10 +8570,10 @@ static void test_union()
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT t1.name FROM t1 UNION "
"SELECT t2.name FROM t2"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_stmt_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
20
==
my_process_stmt_result
(
stmt
));
mysql_stmt_close
(
stmt
);
...
...
@@ -8538,13 +8599,13 @@ static void test_bug3117()
myquery
(
rc
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT LAST_INSERT_ID()"
);
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_query
(
mysql
,
"INSERT INTO t1 VALUES (NULL)"
);
myquery
(
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
buffer
.
buffer_type
=
MYSQL_TYPE_LONGLONG
;
buffer
.
buffer_length
=
sizeof
(
lii
);
...
...
@@ -8553,13 +8614,13 @@ static void test_bug3117()
buffer
.
is_null
=
&
is_null
;
rc
=
mysql_bind_result
(
stmt
,
&
buffer
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_store_result
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
is_null
==
0
&&
lii
==
1
);
fprintf
(
stdout
,
"
\n\t
LAST_INSERT_ID() = 1 ok
\n
"
);
...
...
@@ -8568,10 +8629,10 @@ static void test_bug3117()
myquery
(
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
is_null
==
0
&&
lii
==
2
);
fprintf
(
stdout
,
"
\t
LAST_INSERT_ID() = 2 ok
\n
"
);
...
...
@@ -8619,11 +8680,11 @@ static void test_join()
for
(
j
=
0
;
j
<
9
;
j
++
)
{
stmt
=
mysql_prepare
(
mysql
,
query
[
j
],
strlen
(
query
[
j
]));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
5
==
my_process_stmt_result
(
stmt
));
}
mysql_stmt_close
(
stmt
);
...
...
@@ -8666,11 +8727,11 @@ static void test_selecttmp()
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
3
==
my_process_stmt_result
(
stmt
));
}
mysql_stmt_close
(
stmt
);
...
...
@@ -8701,47 +8762,47 @@ static void test_create_drop()
query
=
(
char
*
)
"create table t1 (a int)"
;
stmt_create
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_create
);
check_stm
t
(
stmt_create
);
query
=
(
char
*
)
"drop table t1"
;
stmt_drop
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_drop
);
check_stm
t
(
stmt_drop
);
query
=
(
char
*
)
"select a in (select a from t2) from t1"
;
stmt_select
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_select
);
check_stm
t
(
stmt_select
);
rc
=
mysql_query
(
mysql
,
"DROP TABLE t1"
);
myquery
(
rc
);
query
=
(
char
*
)
"create table t1 select a from t2"
;
stmt_create_select
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_create_select
);
check_stm
t
(
stmt_create_select
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt_create
);
mystmt
(
stmt_create
,
rc
);
check_execute
(
stmt_create
,
rc
);
fprintf
(
stdout
,
"created %i
\n
"
,
i
);
rc
=
mysql_execute
(
stmt_select
);
mystmt
(
stmt_select
,
rc
);
check_execute
(
stmt_select
,
rc
);
assert
(
0
==
my_process_stmt_result
(
stmt_select
));
rc
=
mysql_execute
(
stmt_drop
);
mystmt
(
stmt_drop
,
rc
);
check_execute
(
stmt_drop
,
rc
);
fprintf
(
stdout
,
"droped %i
\n
"
,
i
);
rc
=
mysql_execute
(
stmt_create_select
);
mystmt
(
stmt_create
,
rc
);
check_execute
(
stmt_create
,
rc
);
fprintf
(
stdout
,
"created select %i
\n
"
,
i
);
rc
=
mysql_execute
(
stmt_select
);
mystmt
(
stmt_select
,
rc
);
check_execute
(
stmt_select
,
rc
);
assert
(
3
==
my_process_stmt_result
(
stmt_select
));
rc
=
mysql_execute
(
stmt_drop
);
mystmt
(
stmt_drop
,
rc
);
check_execute
(
stmt_drop
,
rc
);
fprintf
(
stdout
,
"droped %i
\n
"
,
i
);
}
...
...
@@ -8766,7 +8827,7 @@ static void test_rename()
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
rc
=
mysql_query
(
mysql
,
"create table t1 (a int)"
);
myquery
(
rc
);
...
...
@@ -8779,7 +8840,7 @@ static void test_rename()
myquery
(
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"rename with t3
\n
"
);
rc
=
mysql_execute
(
stmt
);
...
...
@@ -8790,7 +8851,7 @@ static void test_rename()
myquery
(
rc
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
fprintf
(
stdout
,
"rename reverted
\n
"
);
mysql_stmt_close
(
stmt
);
...
...
@@ -8815,19 +8876,19 @@ static void test_do_set()
query
=
(
char
*
)
"do @var:=(1 in (select * from t1))"
;
stmt_do
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_do
);
check_stm
t
(
stmt_do
);
query
=
(
char
*
)
"set @var=(1 in (select * from t1))"
;
stmt_set
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_set
);
check_stm
t
(
stmt_set
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt_do
);
mystmt
(
stmt_do
,
rc
);
check_execute
(
stmt_do
,
rc
);
fprintf
(
stdout
,
"do %i
\n
"
,
i
);
rc
=
mysql_execute
(
stmt_set
);
mystmt
(
stmt_set
,
rc
);
check_execute
(
stmt_set
,
rc
);
fprintf
(
stdout
,
"set %i
\n
"
,
i
);
}
...
...
@@ -8867,39 +8928,39 @@ static void test_multi()
query
=
(
char
*
)
"delete t1,t2 from t1,t2 where t1.a=t2.a and t1.b=10"
;
stmt_delete
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_delete
);
check_stm
t
(
stmt_delete
);
query
=
(
char
*
)
"update t1,t2 set t1.b=10,t2.b=10 where t1.a=t2.a and t1.b=?"
;
stmt_update
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_update
);
check_stm
t
(
stmt_update
);
query
=
(
char
*
)
"select * from t1"
;
stmt_select1
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_select1
);
check_stm
t
(
stmt_select1
);
query
=
(
char
*
)
"select * from t2"
;
stmt_select2
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_select2
);
check_stm
t
(
stmt_select2
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_bind_param
(
stmt_update
,
bind
);
mystmt
(
stmt_update
,
rc
);
check_execute
(
stmt_update
,
rc
);
rc
=
mysql_execute
(
stmt_update
);
mystmt
(
stmt_update
,
rc
);
check_execute
(
stmt_update
,
rc
);
fprintf
(
stdout
,
"update %ld
\n
"
,
param
);
rc
=
mysql_execute
(
stmt_delete
);
mystmt
(
stmt_delete
,
rc
);
check_execute
(
stmt_delete
,
rc
);
fprintf
(
stdout
,
"delete %ld
\n
"
,
param
);
rc
=
mysql_execute
(
stmt_select1
);
mystmt
(
stmt_select1
,
rc
);
check_execute
(
stmt_select1
,
rc
);
assert
((
uint
)(
3
-
param
)
==
my_process_stmt_result
(
stmt_select1
));
rc
=
mysql_execute
(
stmt_select2
);
mystmt
(
stmt_select2
,
rc
);
check_execute
(
stmt_select2
,
rc
);
assert
((
uint
)(
3
-
param
)
==
my_process_stmt_result
(
stmt_select2
));
param
++
;
...
...
@@ -8936,20 +8997,20 @@ static void test_insert_select()
query
=
(
char
*
)
"insert into t1 select a from t2"
;
stmt_insert
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_insert
);
check_stm
t
(
stmt_insert
);
query
=
(
char
*
)
"select * from t1"
;
stmt_select
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_select
);
check_stm
t
(
stmt_select
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt_insert
);
mystmt
(
stmt_insert
,
rc
);
check_execute
(
stmt_insert
,
rc
);
fprintf
(
stdout
,
"insert %u
\n
"
,
i
);
rc
=
mysql_execute
(
stmt_select
);
mystmt
(
stmt_select
,
rc
);
check_execute
(
stmt_select
,
rc
);
assert
((
i
+
1
)
==
my_process_stmt_result
(
stmt_select
));
}
...
...
@@ -8982,7 +9043,7 @@ static void test_bind_nagative()
query
=
(
char
*
)
"INSERT INTO t1 VALUES (?)"
;
stmt_insert
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt_insert
);
check_stm
t
(
stmt_insert
);
/* bind parameters */
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
...
...
@@ -8991,11 +9052,11 @@ static void test_bind_nagative()
bind
[
0
].
is_null
=
(
char
*
)
&
my_null
;
rc
=
mysql_bind_param
(
stmt_insert
,
bind
);
mystmt
(
stmt_insert
,
rc
);
check_execute
(
stmt_insert
,
rc
);
my_val
=
-
1
;
rc
=
mysql_execute
(
stmt_insert
);
mystmt
(
stmt_insert
,
rc
);
check_execute
(
stmt_insert
,
rc
);
mysql_stmt_close
(
stmt_insert
);
rc
=
mysql_query
(
mysql
,
"drop table t1"
);
...
...
@@ -9026,7 +9087,7 @@ TYPE=InnoDB DEFAULT CHARSET=utf8");
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
bind
[
0
].
buffer
=
(
char
*
)
&
my_val
;
...
...
@@ -9034,12 +9095,12 @@ TYPE=InnoDB DEFAULT CHARSET=utf8");
bind
[
0
].
is_null
=
(
char
*
)
&
my_null
;
my_val
=
1
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
}
mysql_stmt_close
(
stmt
);
...
...
@@ -9086,12 +9147,12 @@ static void test_xjoin()
myquery
(
rc
);
stmt
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_ini
t
(
stmt
);
check_stm
t
(
stmt
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
check_execute
(
stmt
,
rc
);
assert
(
1
==
my_process_stmt_result
(
stmt
));
}
mysql_stmt_close
(
stmt
);
...
...
@@ -9276,6 +9337,8 @@ static struct my_option client_test_long_options[] =
0
,
0
,
0
,
0
,
0
},
{
"database"
,
'D'
,
"Database to use"
,
(
char
**
)
&
opt_db
,
(
char
**
)
&
opt_db
,
0
,
GET_STR_ALLOC
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"debug"
,
'#'
,
"Output debug log"
,
(
gptr
*
)
&
default_dbug_option
,
(
gptr
*
)
&
default_dbug_option
,
0
,
GET_STR
,
OPT_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"host"
,
'h'
,
"Connect to host"
,
(
char
**
)
&
opt_host
,
(
char
**
)
&
opt_host
,
0
,
GET_STR_ALLOC
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"password"
,
'p'
,
...
...
@@ -9329,6 +9392,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
char
*
argument
)
{
switch
(
optid
)
{
case
'#'
:
DBUG_PUSH
(
argument
?
argument
:
default_dbug_option
);
break
;
case
'p'
:
if
(
argument
)
{
...
...
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