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
545c9dff
Commit
545c9dff
authored
Jan 30, 2003
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge conflict
parents
7ae7275c
dca8b8a6
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
169 additions
and
83 deletions
+169
-83
libmysql/errmsg.c
libmysql/errmsg.c
+3
-3
libmysql/libmysql.c
libmysql/libmysql.c
+35
-5
sql/sql_class.h
sql/sql_class.h
+1
-0
sql/sql_prepare.cc
sql/sql_prepare.cc
+9
-13
tests/client_test.c
tests/client_test.c
+121
-62
No files found.
libmysql/errmsg.c
View file @
545c9dff
...
...
@@ -59,7 +59,7 @@ const char *client_errors[]=
"No parameters exists in the statement"
,
"Invalid parameter number"
,
"Can't send long data for non string or binary data types (parameter: %d)"
,
"Using un supported
parameter type: %d (parameter: %d)"
"Using un supported
buffer type: %d (parameter: %d)"
,
"Shared memory (%lu)"
,
"Can't open shared memory. Request event don't create (%lu)"
,
"Can't open shared memory. Answer event don't create (%lu)"
,
...
...
@@ -114,7 +114,7 @@ const char *client_errors[]=
"No parameters exists in the statement"
,
"Invalid parameter number"
,
"Can't send long data for non string or binary data types (parameter: %d)"
,
"Using un supported
parameter type: %d (parameter: %d)"
"Using un supported
buffer type: %d (parameter: %d)"
,
"Shared memory (%lu)"
,
"Can't open shared memory. Request event don't create (%lu)"
,
"Can't open shared memory. Answer event don't create (%lu)"
,
...
...
@@ -167,7 +167,7 @@ const char *client_errors[]=
"No parameters exists in the statement"
,
"Invalid parameter number"
,
"Can't send long data for non string or binary data types (parameter: %d)"
,
"Using un supported
parameter type: %d (parameter: %d)"
"Using un supported
buffer type: %d (parameter: %d)"
,
"Shared memory (%lu)"
,
"Can't open shared memory. Request event don't create (%lu)"
,
"Can't open shared memory. Answer event don't create (%lu)"
,
...
...
libmysql/libmysql.c
View file @
545c9dff
...
...
@@ -3925,6 +3925,28 @@ mysql_prepare(MYSQL *mysql, const char *query, ulong length)
DBUG_RETURN
(
stmt
);
}
/*
Get the execute query meta information for non-select
statements (on demand).
*/
unsigned
int
alloc_stmt_fields
(
MYSQL_STMT
*
stmt
)
{
MYSQL_FIELD
*
fields
;
if
(
!
stmt
->
mysql
->
field_count
)
return
0
;
stmt
->
field_count
=
stmt
->
mysql
->
field_count
;
fields
=
stmt
->
mysql
->
fields
;
if
(
!
(
stmt
->
fields
=
(
MYSQL_FIELD
*
)
alloc_root
(
&
stmt
->
mem_root
,
sizeof
(
fields
)))
||
!
(
stmt
->
bind
=
(
MYSQL_BIND
*
)
alloc_root
(
&
stmt
->
mem_root
,
sizeof
(
MYSQL_BIND
)
*
stmt
->
field_count
)))
return
0
;
memcpy
((
char
*
)
stmt
->
fields
,
(
char
*
)
fields
,
sizeof
(
fields
));
return
stmt
->
field_count
;
}
/*
Returns prepared meta information in the form of resultset
...
...
@@ -3938,8 +3960,10 @@ mysql_prepare_result(MYSQL_STMT *stmt)
DBUG_ENTER
(
"mysql_prepare_result"
);
if
(
!
stmt
->
field_count
||
!
stmt
->
fields
)
DBUG_RETURN
(
0
);
{
if
(
!
alloc_stmt_fields
(
stmt
))
DBUG_RETURN
(
0
);
}
if
(
!
(
result
=
(
MYSQL_RES
*
)
my_malloc
(
sizeof
(
*
result
)
+
sizeof
(
ulong
)
*
stmt
->
field_count
,
MYF
(
MY_WME
|
MY_ZEROFILL
))))
...
...
@@ -4436,7 +4460,7 @@ my_bool STDCALL mysql_bind_param(MYSQL_STMT *stmt, MYSQL_BIND * bind)
default:
sprintf
(
stmt
->
last_error
,
ER
(
stmt
->
last_errno
=
CR_UNSUPPORTED_PARAM_TYPE
),
param
->
buffer_type
,
param
->
param_number
);
param
->
buffer_type
,
count
);
DBUG_RETURN
(
1
);
}
}
...
...
@@ -4984,6 +5008,7 @@ my_bool STDCALL mysql_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
{
MYSQL_BIND
*
param
,
*
end
;
ulong
bind_count
;
uint
param_count
=
0
;
DBUG_ENTER
(
"mysql_bind_result"
);
DBUG_ASSERT
(
stmt
!=
0
);
...
...
@@ -4999,7 +5024,10 @@ my_bool STDCALL mysql_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
DBUG_RETURN
(
1
);
}
#endif
bind_count
=
stmt
->
field_count
;
if
(
!
(
bind_count
=
stmt
->
field_count
)
&&
!
(
bind_count
=
alloc_stmt_fields
(
stmt
)))
DBUG_RETURN
(
0
);
memcpy
((
char
*
)
stmt
->
bind
,
(
char
*
)
bind
,
sizeof
(
MYSQL_BIND
)
*
bind_count
);
...
...
@@ -5015,6 +5043,7 @@ my_bool STDCALL mysql_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
if
(
!
param
->
length
)
param
->
length
=
&
param
->
buffer_length
;
param
->
param_number
=
param_count
++
;
/* Setup data copy functions for the different supported types */
switch
(
param
->
buffer_type
)
{
case
MYSQL_TYPE_TINY
:
...
...
@@ -5066,7 +5095,7 @@ my_bool STDCALL mysql_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
default:
sprintf
(
stmt
->
last_error
,
ER
(
stmt
->
last_errno
=
CR_UNSUPPORTED_PARAM_TYPE
),
param
->
buffer_type
,
param
->
param_number
);
param
->
buffer_type
,
param
_count
);
DBUG_RETURN
(
1
);
}
}
...
...
@@ -5303,6 +5332,7 @@ static my_bool stmt_close(MYSQL_STMT *stmt, my_bool skip_list)
free_root
(
&
stmt
->
mem_root
,
MYF
(
0
));
if
(
!
skip_list
)
stmt
->
mysql
->
stmts
=
list_delete
(
stmt
->
mysql
->
stmts
,
&
stmt
->
list
);
stmt
->
mysql
->
status
=
MYSQL_STATUS_READY
;
my_free
((
gptr
)
stmt
,
MYF
(
MY_WME
));
DBUG_RETURN
(
error
);
}
...
...
sql/sql_class.h
View file @
545c9dff
...
...
@@ -327,6 +327,7 @@ class MYSQL_ERROR: public Sql_alloc
typedef
struct
st_prep_stmt
{
THD
*
thd
;
LEX
lex
;
Item_param
**
param
;
Item
*
free_list
;
MEM_ROOT
mem_root
;
...
...
sql/sql_prepare.cc
View file @
545c9dff
...
...
@@ -684,6 +684,7 @@ static bool init_param_items(PREP_STMT *stmt)
List
<
Item
>
&
params
=
stmt
->
thd
->
lex
.
param_list
;
Item_param
**
to
;
stmt
->
lex
=
stmt
->
thd
->
lex
;
if
(
!
stmt
->
param_count
)
stmt
->
param
=
(
Item_param
**
)
0
;
else
...
...
@@ -705,7 +706,7 @@ static bool init_param_items(PREP_STMT *stmt)
static
void
init_stmt_execute
(
PREP_STMT
*
stmt
)
{
THD
*
thd
=
stmt
->
thd
;
TABLE_LIST
*
tables
=
(
TABLE_LIST
*
)
thd
->
lex
.
select_lex
.
table_list
.
first
;
TABLE_LIST
*
tables
=
(
TABLE_LIST
*
)
thd
->
lex
.
select_lex
.
table_list
.
first
;
/*
TODO: When the new table structure is ready, then have a status bit
...
...
@@ -713,7 +714,7 @@ static void init_stmt_execute(PREP_STMT *stmt)
and open the tables back.
*/
if
(
tables
)
tables
->
table
=
0
;
//safety - nasty init
tables
->
table
=
0
;
//safety - nasty init
}
/*
...
...
@@ -796,10 +797,8 @@ void mysql_stmt_execute(THD *thd, char *packet)
DBUG_VOID_RETURN
;
}
if
(
my_pthread_setspecific_ptr
(
THR_THD
,
stmt
->
thd
)
||
my_pthread_setspecific_ptr
(
THR_MALLOC
,
&
stmt
->
thd
->
mem_root
))
DBUG_VOID_RETURN
;
LEX
thd_lex
=
thd
->
lex
;
thd
->
lex
=
stmt
->
lex
;
init_stmt_execute
(
stmt
);
if
(
stmt
->
param_count
&&
setup_params_data
(
stmt
))
...
...
@@ -814,17 +813,14 @@ void mysql_stmt_execute(THD *thd, char *packet)
mysql_delete(), mysql_update() and mysql_select() to not to
have re-check on setup_* and other things ..
*/
THD
*
cur_thd
=
stmt
->
thd
;
cur_thd
->
protocol
=
&
cur_thd
->
protocol_prep
;
// Switch to binary protocol
mysql_execute_command
(
cur_thd
);
cur_thd
->
protocol
=
&
cur_thd
->
protocol_simple
;
// Use normal protocol
thd
->
protocol
=
&
thd
->
protocol_prep
;
// Switch to binary protocol
mysql_execute_command
(
thd
);
thd
->
protocol
=
&
thd
->
protocol_simple
;
// Use normal protocol
if
(
!
(
specialflag
&
SPECIAL_NO_PRIOR
))
my_pthread_setprio
(
pthread_self
(),
WAIT_PRIOR
);
my_pthread_setspecific_ptr
(
THR_THD
,
thd
);
my_pthread_setspecific_ptr
(
THR_MALLOC
,
&
thd
->
mem_root
);
thd
->
lex
=
thd_lex
;
DBUG_VOID_RETURN
;
}
...
...
tests/client_test.c
View file @
545c9dff
...
...
@@ -180,10 +180,10 @@ static void client_connect()
/* set AUTOCOMMIT to ON*/
mysql_autocommit
(
mysql
,
TRUE
);
fprintf
(
stdout
,
"
\n
Creating a test database '%s' ..."
,
current_db
);
s
printf
(
buff
,
"CREATE DATABASE IF NOT EXISTS %s"
,
current_db
);
s
trxmov
(
buff
,
"CREATE DATABASE IF NOT EXISTS "
,
current_db
,
NullS
);
rc
=
mysql_query
(
mysql
,
buff
);
myquery
(
rc
);
s
printf
(
buff
,
"USE %s"
,
current_db
);
s
trxmov
(
buff
,
"USE "
,
current_db
,
NullS
);
rc
=
mysql_query
(
mysql
,
buff
);
myquery
(
rc
);
...
...
@@ -201,7 +201,7 @@ static void client_disconnect()
{
char
buff
[
255
];
fprintf
(
stdout
,
"
\n
droping the test database '%s' ..."
,
current_db
);
s
printf
(
buff
,
"DROP DATABASE IF EXISTS %s"
,
current_db
);
s
trxmov
(
buff
,
"DROP DATABASE IF EXISTS "
,
current_db
,
NullS
);
mysql_query
(
mysql
,
buff
);
fprintf
(
stdout
,
" OK"
);
fprintf
(
stdout
,
"
\n
closing the connection ..."
);
...
...
@@ -464,8 +464,7 @@ static void verify_col_data(const char *table, const char *col,
if
(
table
&&
col
)
{
sprintf
(
query
,
"SELECT %s FROM %s LIMIT 1"
,
col
,
table
);
strxmov
(
query
,
"SELECT "
,
col
,
" FROM "
,
table
,
" LIMIT 1"
,
NullS
);
fprintf
(
stdout
,
"
\n
%s"
,
query
);
rc
=
mysql_query
(
mysql
,
query
);
myquery
(
rc
);
...
...
@@ -1877,7 +1876,7 @@ static void test_long_data_str()
mystmt
(
stmt
,
rc
);
length
=
40
;
s
printf
(
data
,
"MySQL AB"
);
s
trmov
(
data
,
"MySQL AB"
);
/* supply data in pieces */
for
(
i
=
0
;
i
<
4
;
i
++
)
...
...
@@ -1906,11 +1905,11 @@ static void test_long_data_str()
myassert
(
1
==
my_process_result_set
(
result
));
mysql_free_result
(
result
);
sprintf
(
data
,
"%d"
,
i
*
5
);
my_sprintf
(
data
,(
data
,
"%d"
,
i
*
5
)
);
verify_col_data
(
"test_long_data_str"
,
"LENGTH(longstr)"
,
data
);
data
[
0
]
=
'\0'
;
while
(
i
--
)
s
printf
(
data
,
"%s%s"
,
data
,
"MySQL"
);
s
trxmov
(
data
,
data
,
"MySQL"
,
NullS
);
verify_col_data
(
"test_long_data_str"
,
"longstr"
,
data
);
}
...
...
@@ -1995,10 +1994,10 @@ static void test_long_data_str1()
myassert
(
1
==
my_process_result_set
(
result
));
mysql_free_result
(
result
);
sprintf
(
data
,
"%ld"
,(
long
)
i
*
length
);
my_sprintf
(
data
,(
data
,
"%ld"
,(
long
)
i
*
length
)
);
verify_col_data
(
"test_long_data_str"
,
"length(longstr)"
,
data
);
sprintf
(
data
,
"%d"
,
i
*
2
);
my_sprintf
(
data
,(
data
,
"%d"
,
i
*
2
)
);
verify_col_data
(
"test_long_data_str"
,
"length(blb)"
,
data
);
}
...
...
@@ -2052,7 +2051,7 @@ static void test_long_data_bin()
mystmt
(
stmt
,
rc
);
length
=
10
;
s
printf
(
data
,
"MySQL AB"
);
s
trmov
(
data
,
"MySQL AB"
);
/* supply data in pieces */
{
...
...
@@ -2408,8 +2407,6 @@ static void test_bind_result()
if
(
is_null
[
0
])
fprintf
(
stdout
,
"
\n
row 3: NULL,%s(%lu)"
,
szData
,
length1
);
else
fprintf
(
stdout
,
"
\n
row 3: %d,%s(%lu)"
,
nData
,
szData
,
length1
);
myassert
(
is_null
[
0
]);
myassert
(
strcmp
(
szData
,
"monty"
)
==
0
);
myassert
(
length1
==
5
);
...
...
@@ -3660,64 +3657,98 @@ static void test_stmt_close()
*********************************************************/
static
void
test_set_variable
()
{
MYSQL_STMT
*
stmt
;
int
rc
,
select_limit
=
88
;
char
query
[
200
]
;
MYSQL_BIND
bind
[
1
]
;
MYSQL_RES
*
result
;
MYSQL_STMT
*
stmt
,
*
stmt1
;
int
rc
;
int
set_count
,
def_count
,
get_count
;
ulong
length
;
char
var
[
NAME_LEN
+
1
]
;
MYSQL_BIND
set_bind
[
1
],
get_bind
[
2
];
myheader
(
"test_set_variable"
);
rc
=
mysql_autocommit
(
mysql
,
TRUE
);
myquery
(
rc
);
mysql_autocommit
(
mysql
,
TRUE
);
stmt1
=
mysql_prepare
(
mysql
,
"show variables like 'max_error_count'"
,
50
);
mystmt_init
(
stmt1
);
strmov
(
query
,
"SET GLOBAL delayed_insert_limit=?"
);
stmt
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
));
mystmt_init
(
stmt
);
get_bind
[
0
].
buffer_type
=
MYSQL_TYPE_STRING
;
get_bind
[
0
].
buffer
=
(
char
*
)
var
;
get_bind
[
0
].
is_null
=
0
;
get_bind
[
0
].
length
=
&
length
;
get_bind
[
0
].
buffer_length
=
(
int
)
NAME_LEN
;
length
=
NAME_LEN
;
verify_param_count
(
stmt
,
1
);
get_bind
[
1
].
buffer_type
=
MYSQL_TYPE_LONG
;
get_bind
[
1
].
buffer
=
(
char
*
)
&
get_count
;
get_bind
[
1
].
is_null
=
0
;
get_bind
[
1
].
length
=
0
;
result
=
mysql_param_result
(
stmt
);
mytest_r
(
result
);
rc
=
mysql_execute
(
stmt1
);
mystmt
(
stmt1
,
rc
);
rc
=
mysql_bind_result
(
stmt1
,
get_bind
);
mystmt
(
stmt1
,
rc
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
bind
[
0
].
buffer
=
(
char
*
)
&
select_limit
;
bind
[
0
].
is_null
=
0
;
rc
=
mysql_fetch
(
stmt1
);
mystmt
(
stmt1
,
rc
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
)
;
fprintf
(
stdout
,
"
\n
max_error_count(default): %d"
,
get_count
);
def_count
=
get_count
;
myassert
(
strcmp
(
var
,
"max_error_count"
)
==
0
);
rc
=
mysql_fetch
(
stmt1
);
myassert
(
rc
==
MYSQL_NO_DATA
);
stmt
=
mysql_prepare
(
mysql
,
"set max_error_count=?"
,
50
);
mystmt_init
(
stmt
);
set_bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
set_bind
[
0
].
buffer
=
(
char
*
)
&
set_count
;
set_bind
[
0
].
is_null
=
0
;
set_bind
[
0
].
length
=
0
;
rc
=
mysql_bind_param
(
stmt
,
set_bind
);
mystmt
(
stmt
,
rc
);
set_count
=
31
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
mysql_store_result
(
mysql
);
strmov
(
query
,
"show variables like 'delayed_insert_limit'"
);
rc
=
mysql_query
(
mysql
,
query
);
myquery
(
rc
);
mysql_commit
(
mysql
);
verify_col_data
(
NullS
,
NullS
,
"88"
);
rc
=
mysql_execute
(
stmt1
);
mystmt
(
stmt1
,
rc
);
rc
=
mysql_fetch
(
stmt1
);
mystmt
(
stmt1
,
rc
);
#ifdef TO_BE_FIXED
fprintf
(
stdout
,
"
\n
max_error_count : %d"
,
get_count
);
myassert
(
get_count
==
set_count
);
select_limit
=
100
;
/* reset to default */
rc
=
mysql_fetch
(
stmt1
);
myassert
(
rc
==
MYSQL_NO_DATA
);
/* restore back to default */
set_count
=
def_count
;
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
mystmt
(
stmt
,
rc
);
rc
=
mysql_execute
(
stmt1
);
mystmt
(
stmt1
,
rc
);
rc
=
mysql_fetch
(
stmt1
);
mystmt
(
stmt1
,
rc
);
mysql_store_result
(
mysql
);
my
sql_stmt_close
(
stm
t
);
fprintf
(
stdout
,
"
\n
max_error_count(default): %d"
,
get_count
);
my
assert
(
get_count
==
set_coun
t
);
rc
=
mysql_
query
(
mysql
,
query
);
my
query
(
rc
);
rc
=
mysql_
fetch
(
stmt1
);
my
assert
(
rc
==
MYSQL_NO_DATA
);
verify_col_data
(
NullS
,
NullS
,
"100"
);
#endif
mysql_stmt_close
(
stmt
);
mysql_stmt_close
(
stmt1
);
}
#if NOT_USED
/* Insert meta info .. */
static
void
test_insert_meta
()
...
...
@@ -4002,10 +4033,10 @@ static void test_func_fields()
/* Multiple stmts .. */
static
void
test_multi_stmt
()
{
#if TO_BE_FIXED_IN_SERVER
MYSQL_STMT
*
stmt
,
*
stmt1
;
MYSQL_STMT
*
stmt
,
*
stmt1
,
*
stmt2
;
int
rc
,
id
;
char
name
[
50
]
=
{
0
}
;
char
name
[
50
];
MYSQL_BIND
bind
[
2
];
ulong
length
[
2
];
my_bool
is_null
[
2
];
...
...
@@ -4023,17 +4054,23 @@ static void test_multi_stmt()
stmt
=
mysql_prepare
(
mysql
,
"SELECT * FROM test_multi_table WHERE id = ?"
,
100
);
mystmt_init
(
stmt
);
stmt2
=
mysql_prepare
(
mysql
,
"UPDATE test_multi_table SET name='updated' WHERE id=10"
,
100
);
mystmt_init
(
stmt2
);
verify_param_count
(
stmt
,
1
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_SHORT
;
bind
[
0
].
buffer
=
(
char
*
)
&
id
;
bind
[
0
].
is_null
=
&
is_null
[
0
];
bind
[
0
].
length
=
&
length
[
0
];
is_null
[
0
]
=
0
;
length
[
0
]
=
0
;
bind
[
1
].
buffer_type
=
MYSQL_TYPE_STRING
;
bind
[
1
].
buffer
=
(
char
*
)
&
name
;
bind
[
1
].
buffer
=
(
char
*
)
name
;
bind
[
1
].
length
=
&
length
[
1
];
bind
[
1
].
is_null
=
&
is_null
[
0
];
bind
[
1
].
is_null
=
&
is_null
[
1
];
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
...
...
@@ -4048,8 +4085,8 @@ static void test_multi_stmt()
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
int_data: %d
"
,
id
);
fprintf
(
stdout
,
"
\n
str_data: %s(%lu)"
,
name
,
length
);
fprintf
(
stdout
,
"
\n
int_data: %d
(%lu)"
,
id
,
length
[
0
]
);
fprintf
(
stdout
,
"
\n
str_data: %s(%lu)"
,
name
,
length
[
1
]
);
myassert
(
id
==
10
);
myassert
(
strcmp
(
name
,
"mysql"
)
==
0
);
...
...
@@ -4064,6 +4101,27 @@ static void test_multi_stmt()
rc
=
mysql_bind_param
(
stmt1
,
bind
);
mystmt
(
stmt1
,
rc
);
rc
=
mysql_execute
(
stmt2
);
mystmt
(
stmt2
,
rc
);
rc
=
(
int
)
mysql_stmt_affected_rows
(
stmt2
);
fprintf
(
stdout
,
"
\n
total rows affected(update): %d"
,
rc
);
myassert
(
rc
==
1
);
rc
=
mysql_execute
(
stmt
);
mystmt
(
stmt
,
rc
);
rc
=
mysql_fetch
(
stmt
);
mystmt
(
stmt
,
rc
);
fprintf
(
stdout
,
"
\n
int_data: %d(%lu)"
,
id
,
length
[
0
]);
fprintf
(
stdout
,
"
\n
str_data: %s(%lu)"
,
name
,
length
[
1
]);
myassert
(
id
==
10
);
myassert
(
strcmp
(
name
,
"updated"
)
==
0
);
rc
=
mysql_fetch
(
stmt
);
myassert
(
rc
==
MYSQL_NO_DATA
);
rc
=
mysql_execute
(
stmt1
);
mystmt
(
stmt1
,
rc
);
...
...
@@ -4083,7 +4141,8 @@ static void test_multi_stmt()
myassert
(
0
==
my_stmt_result
(
"SELECT * FROM test_multi_table"
,
50
));
mysql_stmt_close
(
stmt
);
#endif
mysql_stmt_close
(
stmt2
);
}
...
...
@@ -4441,8 +4500,6 @@ static void test_store_result()
if
(
is_null
[
0
])
fprintf
(
stdout
,
"
\n
row 3: NULL,%s(%lu)"
,
szData
,
length1
);
else
fprintf
(
stdout
,
"
\n
row 3: %ld,%s(%lu)"
,
nData
,
szData
,
length1
);
myassert
(
is_null
[
0
]);
myassert
(
strcmp
(
szData
,
"monty"
)
==
0
);
myassert
(
length1
==
5
);
...
...
@@ -4478,8 +4535,6 @@ static void test_store_result()
if
(
is_null
[
0
])
fprintf
(
stdout
,
"
\n
row 3: NULL,%s(%lu)"
,
szData
,
length1
);
else
fprintf
(
stdout
,
"
\n
row 3: %ld,%s(%lu)"
,
nData
,
szData
,
length1
);
myassert
(
is_null
[
0
]);
myassert
(
strcmp
(
szData
,
"monty"
)
==
0
);
myassert
(
length1
==
5
);
...
...
@@ -5039,6 +5094,10 @@ static void test_pure_coverage()
#ifndef DBUG_OFF
rc
=
mysql_bind_result
(
stmt
,
(
MYSQL_BIND
*
)
0
);
mystmt_r
(
stmt
,
rc
);
bind
[
0
].
buffer_type
=
MYSQL_TYPE_GEOMETRY
;
rc
=
mysql_bind_result
(
stmt
,
bind
);
mystmt_r
(
stmt
,
rc
);
/* unsupported buffer type */
#endif
rc
=
mysql_stmt_store_result
(
stmt
);
...
...
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