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
1ba3a170
Commit
1ba3a170
authored
Sep 09, 2004
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into poseidon.(none):/home/tomas/mysql-4.1
parents
2cd71180
1460e454
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
287 additions
and
40 deletions
+287
-40
client/mysql.cc
client/mysql.cc
+6
-1
libmysql/errmsg.c
libmysql/errmsg.c
+6
-6
libmysql/libmysql.c
libmysql/libmysql.c
+19
-7
mysql-test/r/group_by.result
mysql-test/r/group_by.result
+9
-0
mysql-test/r/subselect_innodb.result
mysql-test/r/subselect_innodb.result
+8
-0
mysql-test/t/group_by.test
mysql-test/t/group_by.test
+9
-0
mysql-test/t/subselect_innodb.test
mysql-test/t/subselect_innodb.test
+14
-0
sql-common/client.c
sql-common/client.c
+2
-3
sql/item_sum.cc
sql/item_sum.cc
+2
-0
sql/log.cc
sql/log.cc
+1
-1
sql/net_serv.cc
sql/net_serv.cc
+0
-2
sql/sql_prepare.cc
sql/sql_prepare.cc
+9
-1
tests/client_test.c
tests/client_test.c
+202
-19
No files found.
client/mysql.cc
View file @
1ba3a170
...
@@ -2947,7 +2947,12 @@ put_info(const char *str,INFO_TYPE info_type, uint error, const char *sqlstate)
...
@@ -2947,7 +2947,12 @@ put_info(const char *str,INFO_TYPE info_type, uint error, const char *sqlstate)
(
void
)
fflush
(
file
);
(
void
)
fflush
(
file
);
fprintf
(
file
,
"ERROR"
);
fprintf
(
file
,
"ERROR"
);
if
(
error
)
if
(
error
)
(
void
)
fprintf
(
file
,
" %d"
,
error
);
{
if
(
sqlstate
)
(
void
)
fprintf
(
file
,
" %d (%s)"
,
error
,
sqlstate
);
else
(
void
)
fprintf
(
file
,
" %d"
,
error
);
}
if
(
status
.
query_start_line
&&
line_numbers
)
if
(
status
.
query_start_line
&&
line_numbers
)
{
{
(
void
)
fprintf
(
file
,
" at line %lu"
,
status
.
query_start_line
);
(
void
)
fprintf
(
file
,
" at line %lu"
,
status
.
query_start_line
);
...
...
libmysql/errmsg.c
View file @
1ba3a170
...
@@ -42,7 +42,7 @@ const char *client_errors[]=
...
@@ -42,7 +42,7 @@ const char *client_errors[]=
"Error in server handshake"
,
"Error in server handshake"
,
"Lost connection to MySQL server during query"
,
"Lost connection to MySQL server during query"
,
"Commands out of sync; you can't run this command now"
,
"Commands out of sync; you can't run this command now"
,
"Verbindung ueber Named Pipe
; Host: %-.100
s"
,
"Verbindung ueber Named Pipe
: %-.32
s"
,
"Kann nicht auf Named Pipe warten. Host: %-.64s pipe: %-.32s (%lu)"
,
"Kann nicht auf Named Pipe warten. Host: %-.64s pipe: %-.32s (%lu)"
,
"Kann Named Pipe nicht oeffnen. Host: %-.64s pipe: %-.32s (%lu)"
,
"Kann Named Pipe nicht oeffnen. Host: %-.64s pipe: %-.32s (%lu)"
,
"Kann den Status der Named Pipe nicht setzen. Host: %-.64s pipe: %-.32s (%lu)"
,
"Kann den Status der Named Pipe nicht setzen. Host: %-.64s pipe: %-.32s (%lu)"
,
...
@@ -64,7 +64,7 @@ const char *client_errors[]=
...
@@ -64,7 +64,7 @@ const char *client_errors[]=
"Invalid parameter number"
,
"Invalid parameter number"
,
"Can't send long data for non-string/non-binary data types (parameter: %d)"
,
"Can't send long data for non-string/non-binary data types (parameter: %d)"
,
"Using unsupported buffer type: %d (parameter: %d)"
,
"Using unsupported buffer type: %d (parameter: %d)"
,
"Shared memory
(%lu)
"
,
"Shared memory
: %-.100s
"
,
"Can't open shared memory; client could not create request event (%lu)"
,
"Can't open shared memory; client could not create request event (%lu)"
,
"Can't open shared memory; no answer event received from server (%lu)"
,
"Can't open shared memory; no answer event received from server (%lu)"
,
"Can't open shared memory; server could not allocate file mapping (%lu)"
,
"Can't open shared memory; server could not allocate file mapping (%lu)"
,
...
@@ -101,7 +101,7 @@ const char *client_errors[]=
...
@@ -101,7 +101,7 @@ const char *client_errors[]=
"Erro na negociao de acesso ao servidor"
,
"Erro na negociao de acesso ao servidor"
,
"Conexo perdida com servidor MySQL durante 'query'"
,
"Conexo perdida com servidor MySQL durante 'query'"
,
"Comandos fora de sincronismo; voc no pode executar este comando agora"
,
"Comandos fora de sincronismo; voc no pode executar este comando agora"
,
"
%-.100s via 'named pipe'
"
,
"
Named pipe: %-.32s
"
,
"No pode esperar pelo 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)"
,
"No pode esperar pelo 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)"
,
"No pode abrir 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)"
,
"No pode abrir 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)"
,
"No pode estabelecer o estado do 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)"
,
"No pode estabelecer o estado do 'named pipe' para o 'host' %-.64s - 'pipe' %-.32s (%lu)"
,
...
@@ -123,7 +123,7 @@ const char *client_errors[]=
...
@@ -123,7 +123,7 @@ const char *client_errors[]=
"Invalid parameter number"
,
"Invalid parameter number"
,
"Can't send long data for non-string/non-binary data types (parameter: %d)"
,
"Can't send long data for non-string/non-binary data types (parameter: %d)"
,
"Using unsupported buffer type: %d (parameter: %d)"
,
"Using unsupported buffer type: %d (parameter: %d)"
,
"Shared memory
(%lu)
"
,
"Shared memory
: %-.100s
"
,
"Can't open shared memory; client could not create request event (%lu)"
,
"Can't open shared memory; client could not create request event (%lu)"
,
"Can't open shared memory; no answer event received from server (%lu)"
,
"Can't open shared memory; no answer event received from server (%lu)"
,
"Can't open shared memory; server could not allocate file mapping (%lu)"
,
"Can't open shared memory; server could not allocate file mapping (%lu)"
,
...
@@ -158,7 +158,7 @@ const char *client_errors[]=
...
@@ -158,7 +158,7 @@ const char *client_errors[]=
"Error in server handshake"
,
"Error in server handshake"
,
"Lost connection to MySQL server during query"
,
"Lost connection to MySQL server during query"
,
"Commands out of sync; you can't run this command now"
,
"Commands out of sync; you can't run this command now"
,
"
%-.100s via named pipe
"
,
"
Named pipe: %-.32s
"
,
"Can't wait for named pipe to host: %-.64s pipe: %-.32s (%lu)"
,
"Can't wait for named pipe to host: %-.64s pipe: %-.32s (%lu)"
,
"Can't open named pipe to host: %-.64s pipe: %-.32s (%lu)"
,
"Can't open named pipe to host: %-.64s pipe: %-.32s (%lu)"
,
"Can't set state of named pipe to host: %-.64s pipe: %-.32s (%lu)"
,
"Can't set state of named pipe to host: %-.64s pipe: %-.32s (%lu)"
,
...
@@ -180,7 +180,7 @@ const char *client_errors[]=
...
@@ -180,7 +180,7 @@ const char *client_errors[]=
"Invalid parameter number"
,
"Invalid parameter number"
,
"Can't send long data for non-string/non-binary data types (parameter: %d)"
,
"Can't send long data for non-string/non-binary data types (parameter: %d)"
,
"Using unsupported buffer type: %d (parameter: %d)"
,
"Using unsupported buffer type: %d (parameter: %d)"
,
"Shared memory
(%lu)
"
,
"Shared memory
: %-.100s
"
,
"Can't open shared memory; client could not create request event (%lu)"
,
"Can't open shared memory; client could not create request event (%lu)"
,
"Can't open shared memory; no answer event received from server (%lu)"
,
"Can't open shared memory; no answer event received from server (%lu)"
,
"Can't open shared memory; server could not allocate file mapping (%lu)"
,
"Can't open shared memory; server could not allocate file mapping (%lu)"
,
...
...
libmysql/libmysql.c
View file @
1ba3a170
...
@@ -1703,16 +1703,18 @@ static void stmt_update_metadata(MYSQL_STMT *stmt, MYSQL_ROWS *data);
...
@@ -1703,16 +1703,18 @@ static void stmt_update_metadata(MYSQL_STMT *stmt, MYSQL_ROWS *data);
/**************** Misc utility functions ****************************/
/**************** Misc utility functions ****************************/
/*
/*
Reallocate the NET package to
be at least of 'length' bytes
Reallocate the NET package to
have at least length bytes available.
SYNPOSIS
SYNPOSIS
my_realloc_str()
my_realloc_str()
net The NET structure to modify
net The NET structure to modify.
length Ensure that net->buff is at least this big
length Ensure that net->buff has space for at least
this number of bytes.
RETURN VALUES
RETURN VALUES
0 ok
0 Success.
1 Error
1 Error, i.e. out of memory or requested packet size is bigger
than max_allowed_packet. The error code is stored in net->last_errno.
*/
*/
static
my_bool
my_realloc_str
(
NET
*
net
,
ulong
length
)
static
my_bool
my_realloc_str
(
NET
*
net
,
ulong
length
)
...
@@ -2365,7 +2367,7 @@ static my_bool store_param(MYSQL_STMT *stmt, MYSQL_BIND *param)
...
@@ -2365,7 +2367,7 @@ static my_bool store_param(MYSQL_STMT *stmt, MYSQL_BIND *param)
*/
*/
if
((
my_realloc_str
(
net
,
*
param
->
length
)))
if
((
my_realloc_str
(
net
,
*
param
->
length
)))
{
{
set_stmt_error
(
stmt
,
CR_OUT_OF_MEMORY
,
unknown_sqlstate
);
set_stmt_error
(
stmt
,
net
->
last_errno
,
unknown_sqlstate
);
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
}
}
(
*
param
->
store_param_func
)(
net
,
param
);
(
*
param
->
store_param_func
)(
net
,
param
);
...
@@ -2427,6 +2429,11 @@ int cli_stmt_execute(MYSQL_STMT *stmt)
...
@@ -2427,6 +2429,11 @@ int cli_stmt_execute(MYSQL_STMT *stmt)
net_clear
(
net
);
/* Sets net->write_pos */
net_clear
(
net
);
/* Sets net->write_pos */
/* Reserve place for null-marker bytes */
/* Reserve place for null-marker bytes */
null_count
=
(
stmt
->
param_count
+
7
)
/
8
;
null_count
=
(
stmt
->
param_count
+
7
)
/
8
;
if
(
my_realloc_str
(
net
,
null_count
+
1
))
{
set_stmt_error
(
stmt
,
net
->
last_errno
,
unknown_sqlstate
);
DBUG_RETURN
(
1
);
}
bzero
((
char
*
)
net
->
write_pos
,
null_count
);
bzero
((
char
*
)
net
->
write_pos
,
null_count
);
net
->
write_pos
+=
null_count
;
net
->
write_pos
+=
null_count
;
param_end
=
stmt
->
params
+
stmt
->
param_count
;
param_end
=
stmt
->
params
+
stmt
->
param_count
;
...
@@ -2435,6 +2442,11 @@ int cli_stmt_execute(MYSQL_STMT *stmt)
...
@@ -2435,6 +2442,11 @@ int cli_stmt_execute(MYSQL_STMT *stmt)
*
(
net
->
write_pos
)
++=
(
uchar
)
stmt
->
send_types_to_server
;
*
(
net
->
write_pos
)
++=
(
uchar
)
stmt
->
send_types_to_server
;
if
(
stmt
->
send_types_to_server
)
if
(
stmt
->
send_types_to_server
)
{
{
if
(
my_realloc_str
(
net
,
2
*
stmt
->
param_count
))
{
set_stmt_error
(
stmt
,
net
->
last_errno
,
unknown_sqlstate
);
DBUG_RETURN
(
1
);
}
/*
/*
Store types of parameters in first in first package
Store types of parameters in first in first package
that is sent to the server.
that is sent to the server.
...
...
mysql-test/r/group_by.result
View file @
1ba3a170
...
@@ -629,3 +629,12 @@ explain SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
...
@@ -629,3 +629,12 @@ explain SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
id select_type table type possible_keys key key_len ref rows Extra
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort
1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort
DROP TABLE t1;
DROP TABLE t1;
create table t1 ( col1 int, col2 int );
insert into t1 values (1,1),(1,2),(1,3),(2,1),(2,2);
select group_concat( distinct col1 ) as alias from t1
group by col2 having alias like '%';
alias
1,2
1,2
1
drop table t1;
mysql-test/r/subselect_innodb.result
View file @
1ba3a170
...
@@ -106,3 +106,11 @@ a b
...
@@ -106,3 +106,11 @@ a b
2 12
2 12
4 105
4 105
drop table t1, t2;
drop table t1, t2;
CREATE TABLE `t1` ( `unit` varchar(50) NOT NULL default '', `ingredient` varchar(50) NOT NULL default '') ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `t2` ( `ingredient` varchar(50) NOT NULL default '', `unit` varchar(50) NOT NULL default '', PRIMARY KEY (ingredient, unit)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `t1` VALUES ('xx','yy');
INSERT INTO `t2` VALUES ('yy','xx');
SELECT R.unit, R.ingredient FROM t1 R WHERE R.ingredient IN (SELECT N.ingredient FROM t2 N WHERE N.unit = R.unit);
unit ingredient
xx yy
drop table t1, t2;
mysql-test/t/group_by.test
View file @
1ba3a170
...
@@ -456,3 +456,12 @@ INSERT INTO t1 VALUES (1,2),(2,3),(4,5),(3,5),(1,5),(23,5);
...
@@ -456,3 +456,12 @@ INSERT INTO t1 VALUES (1,2),(2,3),(4,5),(3,5),(1,5),(23,5);
SELECT
i
,
COUNT
(
DISTINCT
(
i
))
FROM
t1
GROUP
BY
j
ORDER
BY
NULL
;
SELECT
i
,
COUNT
(
DISTINCT
(
i
))
FROM
t1
GROUP
BY
j
ORDER
BY
NULL
;
explain
SELECT
i
,
COUNT
(
DISTINCT
(
i
))
FROM
t1
GROUP
BY
j
ORDER
BY
NULL
;
explain
SELECT
i
,
COUNT
(
DISTINCT
(
i
))
FROM
t1
GROUP
BY
j
ORDER
BY
NULL
;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
# Test for BUG#5400: GROUP_CONCAT returns everything twice.
create
table
t1
(
col1
int
,
col2
int
);
insert
into
t1
values
(
1
,
1
),(
1
,
2
),(
1
,
3
),(
2
,
1
),(
2
,
2
);
select
group_concat
(
distinct
col1
)
as
alias
from
t1
group
by
col2
having
alias
like
'%'
;
drop
table
t1
;
mysql-test/t/subselect_innodb.test
View file @
1ba3a170
...
@@ -111,3 +111,17 @@ create table t2 (a int) engine=innodb;
...
@@ -111,3 +111,17 @@ create table t2 (a int) engine=innodb;
insert
into
t2
values
(
1
),(
2
),(
3
),(
4
);
insert
into
t2
values
(
1
),(
2
),(
3
),(
4
);
select
a
,
sum
(
b
)
as
b
from
t1
group
by
a
having
b
>
(
select
max
(
a
)
from
t2
);
select
a
,
sum
(
b
)
as
b
from
t1
group
by
a
having
b
>
(
select
max
(
a
)
from
t2
);
drop
table
t1
,
t2
;
drop
table
t1
,
t2
;
#
# bug #5220 test suite
#
CREATE
TABLE
`t1`
(
`unit`
varchar
(
50
)
NOT
NULL
default
''
,
`ingredient`
varchar
(
50
)
NOT
NULL
default
''
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
latin1
;
CREATE
TABLE
`t2`
(
`ingredient`
varchar
(
50
)
NOT
NULL
default
''
,
`unit`
varchar
(
50
)
NOT
NULL
default
''
,
PRIMARY
KEY
(
ingredient
,
unit
))
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
latin1
;
INSERT
INTO
`t1`
VALUES
(
'xx'
,
'yy'
);
INSERT
INTO
`t2`
VALUES
(
'yy'
,
'xx'
);
SELECT
R
.
unit
,
R
.
ingredient
FROM
t1
R
WHERE
R
.
ingredient
IN
(
SELECT
N
.
ingredient
FROM
t2
N
WHERE
N
.
unit
=
R
.
unit
);
drop
table
t1
,
t2
;
sql-common/client.c
View file @
1ba3a170
...
@@ -1615,7 +1615,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
...
@@ -1615,7 +1615,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
sock
=
0
;
sock
=
0
;
unix_socket
=
0
;
unix_socket
=
0
;
host
=
mysql
->
options
.
shared_memory_base_name
;
host
=
mysql
->
options
.
shared_memory_base_name
;
host_info
=
(
char
*
)
ER
(
CR_SHARED_MEMORY_CONNECTION
);
sprintf
(
host_info
=
buff
,
ER
(
CR_SHARED_MEMORY_CONNECTION
),
host
);
}
}
}
}
#endif
/* HAVE_SMEM */
#endif
/* HAVE_SMEM */
...
@@ -1679,8 +1679,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
...
@@ -1679,8 +1679,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
else
else
{
{
net
->
vio
=
vio_new_win32pipe
(
hPipe
);
net
->
vio
=
vio_new_win32pipe
(
hPipe
);
sprintf
(
host_info
=
buff
,
ER
(
CR_NAMEDPIPE_CONNECTION
),
host
,
sprintf
(
host_info
=
buff
,
ER
(
CR_NAMEDPIPE_CONNECTION
),
unix_socket
);
unix_socket
);
}
}
}
}
#endif
#endif
...
...
sql/item_sum.cc
View file @
1ba3a170
...
@@ -2121,6 +2121,8 @@ String* Item_func_group_concat::val_str(String* str)
...
@@ -2121,6 +2121,8 @@ String* Item_func_group_concat::val_str(String* str)
DBUG_ASSERT
(
fixed
==
1
);
DBUG_ASSERT
(
fixed
==
1
);
if
(
null_value
)
if
(
null_value
)
return
0
;
return
0
;
if
(
result
.
length
())
return
&
result
;
if
(
tree_mode
)
if
(
tree_mode
)
{
{
tree_walk
(
tree
,
(
tree_walk_action
)
&
dump_leaf_key
,
(
void
*
)
this
,
tree_walk
(
tree
,
(
tree_walk_action
)
&
dump_leaf_key
,
(
void
*
)
this
,
...
...
sql/log.cc
View file @
1ba3a170
...
@@ -1994,7 +1994,7 @@ void print_buffer_to_file(enum loglevel level, const char *buffer)
...
@@ -1994,7 +1994,7 @@ void print_buffer_to_file(enum loglevel level, const char *buffer)
start
->
tm_min
,
start
->
tm_min
,
start
->
tm_sec
,
start
->
tm_sec
,
(
level
==
ERROR_LEVEL
?
"ERROR"
:
level
==
WARNING_LEVEL
?
(
level
==
ERROR_LEVEL
?
"ERROR"
:
level
==
WARNING_LEVEL
?
"WARNING"
:
"
INFORMATION
"
),
"WARNING"
:
"
NOTE
"
),
buffer
);
buffer
);
fflush
(
stderr
);
fflush
(
stderr
);
...
...
sql/net_serv.cc
View file @
1ba3a170
...
@@ -193,9 +193,7 @@ my_bool net_realloc(NET *net, ulong length)
...
@@ -193,9 +193,7 @@ my_bool net_realloc(NET *net, ulong length)
{
{
net
->
error
=
1
;
net
->
error
=
1
;
net
->
report_error
=
1
;
net
->
report_error
=
1
;
#ifdef MYSQL_SERVER
net
->
last_errno
=
ER_OUT_OF_RESOURCES
;
net
->
last_errno
=
ER_OUT_OF_RESOURCES
;
#endif
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
}
}
net
->
buff
=
net
->
write_pos
=
buff
;
net
->
buff
=
net
->
write_pos
=
buff
;
...
...
sql/sql_prepare.cc
View file @
1ba3a170
...
@@ -1475,8 +1475,16 @@ static int send_prepare_results(Prepared_statement *stmt, bool text_protocol)
...
@@ -1475,8 +1475,16 @@ static int send_prepare_results(Prepared_statement *stmt, bool text_protocol)
static
bool
init_param_array
(
Prepared_statement
*
stmt
)
static
bool
init_param_array
(
Prepared_statement
*
stmt
)
{
{
LEX
*
lex
=
stmt
->
lex
;
LEX
*
lex
=
stmt
->
lex
;
THD
*
thd
=
stmt
->
thd
;
if
((
stmt
->
param_count
=
lex
->
param_list
.
elements
))
if
((
stmt
->
param_count
=
lex
->
param_list
.
elements
))
{
{
if
(
stmt
->
param_count
>
(
uint
)
UINT_MAX16
)
{
/* Error code to be defined in 5.0 */
send_error
(
thd
,
ER_UNKNOWN_ERROR
,
"Prepared statement contains too many placeholders."
);
return
1
;
}
Item_param
**
to
;
Item_param
**
to
;
List_iterator
<
Item_param
>
param_iterator
(
lex
->
param_list
);
List_iterator
<
Item_param
>
param_iterator
(
lex
->
param_list
);
/* Use thd->mem_root as it points at statement mem_root */
/* Use thd->mem_root as it points at statement mem_root */
...
@@ -1485,7 +1493,7 @@ static bool init_param_array(Prepared_statement *stmt)
...
@@ -1485,7 +1493,7 @@ static bool init_param_array(Prepared_statement *stmt)
sizeof
(
Item_param
*
)
*
stmt
->
param_count
);
sizeof
(
Item_param
*
)
*
stmt
->
param_count
);
if
(
!
stmt
->
param_array
)
if
(
!
stmt
->
param_array
)
{
{
send_error
(
stmt
->
thd
,
ER_OUT_OF_RESOURCES
);
send_error
(
thd
,
ER_OUT_OF_RESOURCES
);
return
1
;
return
1
;
}
}
for
(
to
=
stmt
->
param_array
;
for
(
to
=
stmt
->
param_array
;
...
...
tests/client_test.c
View file @
1ba3a170
...
@@ -223,7 +223,7 @@ static void client_disconnect()
...
@@ -223,7 +223,7 @@ static void client_disconnect()
if
(
mysql
)
if
(
mysql
)
{
{
fprintf
(
stdout
,
"
\n
droping the test database '%s' ..."
,
current_db
);
fprintf
(
stdout
,
"
\n
drop
p
ing the test database '%s' ..."
,
current_db
);
strxmov
(
query
,
"DROP DATABASE IF EXISTS "
,
current_db
,
NullS
);
strxmov
(
query
,
"DROP DATABASE IF EXISTS "
,
current_db
,
NullS
);
mysql_query
(
mysql
,
query
);
mysql_query
(
mysql
,
query
);
...
@@ -797,21 +797,21 @@ static void test_tran_bdb()
...
@@ -797,21 +797,21 @@ static void test_tran_bdb()
rc
=
mysql_commit
(
mysql
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* now insert the second row, and rollback the transaction */
/* now insert the second row, and roll
back the transaction */
rc
=
mysql_query
(
mysql
,
"INSERT INTO my_demo_transaction VALUES(20, 'mysql')"
);
rc
=
mysql_query
(
mysql
,
"INSERT INTO my_demo_transaction VALUES(20, 'mysql')"
);
myquery
(
rc
);
myquery
(
rc
);
rc
=
mysql_rollback
(
mysql
);
rc
=
mysql_rollback
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* delete first row, and roll
back it
*/
/* delete first row, and roll
it back
*/
rc
=
mysql_query
(
mysql
,
"DELETE FROM my_demo_transaction WHERE col1= 10"
);
rc
=
mysql_query
(
mysql
,
"DELETE FROM my_demo_transaction WHERE col1= 10"
);
myquery
(
rc
);
myquery
(
rc
);
rc
=
mysql_rollback
(
mysql
);
rc
=
mysql_rollback
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_demo_transaction"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_demo_transaction"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -822,7 +822,7 @@ static void test_tran_bdb()
...
@@ -822,7 +822,7 @@ static void test_tran_bdb()
my_process_result_set
(
result
);
my_process_result_set
(
result
);
mysql_free_result
(
result
);
mysql_free_result
(
result
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_demo_transaction"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_demo_transaction"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -870,21 +870,21 @@ static void test_tran_innodb()
...
@@ -870,21 +870,21 @@ static void test_tran_innodb()
rc
=
mysql_commit
(
mysql
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* now insert the second row, and rollback the transaction */
/* now insert the second row, and roll
back the transaction */
rc
=
mysql_query
(
mysql
,
"INSERT INTO my_demo_transaction VALUES(20, 'mysql')"
);
rc
=
mysql_query
(
mysql
,
"INSERT INTO my_demo_transaction VALUES(20, 'mysql')"
);
myquery
(
rc
);
myquery
(
rc
);
rc
=
mysql_rollback
(
mysql
);
rc
=
mysql_rollback
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* delete first row, and roll
back it
*/
/* delete first row, and roll
it back
*/
rc
=
mysql_query
(
mysql
,
"DELETE FROM my_demo_transaction WHERE col1= 10"
);
rc
=
mysql_query
(
mysql
,
"DELETE FROM my_demo_transaction WHERE col1= 10"
);
myquery
(
rc
);
myquery
(
rc
);
rc
=
mysql_rollback
(
mysql
);
rc
=
mysql_rollback
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_demo_transaction"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_demo_transaction"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -895,7 +895,7 @@ static void test_tran_innodb()
...
@@ -895,7 +895,7 @@ static void test_tran_innodb()
my_process_result_set
(
result
);
my_process_result_set
(
result
);
mysql_free_result
(
result
);
mysql_free_result
(
result
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_demo_transaction"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_demo_transaction"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -1158,7 +1158,7 @@ static void test_prepare()
...
@@ -1158,7 +1158,7 @@ static void test_prepare()
rc
=
mysql_commit
(
mysql
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
assert
(
tiny_data
==
(
char
)
my_stmt_result
(
"SELECT * FROM my_prepare"
));
assert
(
tiny_data
==
(
char
)
my_stmt_result
(
"SELECT * FROM my_prepare"
));
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM my_prepare"
);
stmt
=
mysql_simple_prepare
(
mysql
,
"SELECT * FROM my_prepare"
);
...
@@ -1304,7 +1304,7 @@ static void test_double_compare()
...
@@ -1304,7 +1304,7 @@ static void test_double_compare()
rc
=
mysql_commit
(
mysql
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_double_compare"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_double_compare"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -1740,7 +1740,7 @@ static void test_select()
...
@@ -1740,7 +1740,7 @@ static void test_select()
rc
=
mysql_query
(
mysql
,
"INSERT INTO test_select VALUES(10, 'venu')"
);
rc
=
mysql_query
(
mysql
,
"INSERT INTO test_select VALUES(10, 'venu')"
);
myquery
(
rc
);
myquery
(
rc
);
/* now insert the second row, and rollback the transaction */
/* now insert the second row, and roll
back the transaction */
rc
=
mysql_query
(
mysql
,
"INSERT INTO test_select VALUES(20, 'mysql')"
);
rc
=
mysql_query
(
mysql
,
"INSERT INTO test_select VALUES(20, 'mysql')"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -2259,7 +2259,7 @@ static void test_simple_update()
...
@@ -2259,7 +2259,7 @@ static void test_simple_update()
rc
=
mysql_commit
(
mysql
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_update"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_update"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -2738,7 +2738,7 @@ static void test_simple_delete()
...
@@ -2738,7 +2738,7 @@ static void test_simple_delete()
rc
=
mysql_commit
(
mysql
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_simple_delete"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_simple_delete"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -2837,7 +2837,7 @@ static void test_update()
...
@@ -2837,7 +2837,7 @@ static void test_update()
rc
=
mysql_commit
(
mysql
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_update"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_update"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -2883,7 +2883,7 @@ static void test_prepare_noparam()
...
@@ -2883,7 +2883,7 @@ static void test_prepare_noparam()
rc
=
mysql_commit
(
mysql
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_prepare"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM my_prepare"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -3953,7 +3953,7 @@ static void test_insert()
...
@@ -3953,7 +3953,7 @@ static void test_insert()
rc
=
mysql_commit
(
mysql
);
rc
=
mysql_commit
(
mysql
);
myquery
(
rc
);
myquery
(
rc
);
/* test the results now, only one row should exist
s
*/
/* test the results now, only one row should exist */
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_prep_insert"
);
rc
=
mysql_query
(
mysql
,
"SELECT * FROM test_prep_insert"
);
myquery
(
rc
);
myquery
(
rc
);
...
@@ -4906,7 +4906,7 @@ DROP TABLE IF EXISTS test_multi_tab";
...
@@ -4906,7 +4906,7 @@ DROP TABLE IF EXISTS test_multi_tab";
/*
/*
First test that we get an error for multi statements
First test that we get an error for multi statements
(Beca
su
e default connection is not opened with CLIENT_MULTI_STATEMENTS)
(Beca
us
e default connection is not opened with CLIENT_MULTI_STATEMENTS)
*/
*/
rc
=
mysql_query
(
mysql
,
query
);
/* syntax error */
rc
=
mysql_query
(
mysql
,
query
);
/* syntax error */
myquery_r
(
rc
);
myquery_r
(
rc
);
...
@@ -4920,7 +4920,7 @@ DROP TABLE IF EXISTS test_multi_tab";
...
@@ -4920,7 +4920,7 @@ DROP TABLE IF EXISTS test_multi_tab";
exit
(
1
);
exit
(
1
);
}
}
/* Create connection that supp
rot
multi statements */
/* Create connection that supp
orts
multi statements */
if
(
!
(
mysql_real_connect
(
mysql_local
,
opt_host
,
opt_user
,
if
(
!
(
mysql_real_connect
(
mysql_local
,
opt_host
,
opt_user
,
opt_password
,
current_db
,
opt_port
,
opt_password
,
current_db
,
opt_port
,
opt_unix_socket
,
CLIENT_MULTI_STATEMENTS
)))
opt_unix_socket
,
CLIENT_MULTI_STATEMENTS
)))
...
@@ -10209,6 +10209,188 @@ static void test_bug5399()
...
@@ -10209,6 +10209,188 @@ static void test_bug5399()
#undef NUM_OF_USED_STMT
#undef NUM_OF_USED_STMT
}
}
static
void
test_bug5194
()
{
MYSQL_STMT
*
stmt
;
MYSQL_BIND
*
bind
;
char
*
query
;
char
*
param_str
;
int
param_str_length
;
const
char
*
stmt_text
;
int
rc
;
float
float_array
[
250
]
=
{
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
5
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
,
0
.
25
};
float
*
fa_ptr
=
float_array
;
/* Number of columns per row */
const
int
COLUMN_COUNT
=
sizeof
(
float_array
)
/
sizeof
(
*
float_array
);
/* Number of rows per bulk insert to start with */
const
int
MIN_ROWS_PER_INSERT
=
260
;
/* Max number of rows per bulk insert to end with */
const
int
MAX_ROWS_PER_INSERT
=
300
;
const
int
MAX_PARAM_COUNT
=
COLUMN_COUNT
*
MAX_ROWS_PER_INSERT
;
const
char
*
query_template
=
"insert into t1 values %s"
;
const
int
CHARS_PER_PARAM
=
5
;
/* space needed to place ", ?" in the query */
const
int
uint16_max
=
65535
;
int
nrows
,
i
;
myheader
(
"test_bug5194"
);
stmt_text
=
"drop table if exists t1"
;
rc
=
mysql_real_query
(
mysql
,
stmt_text
,
strlen
(
stmt_text
));
stmt_text
=
"create table if not exists t1"
"(c1 float, c2 float, c3 float, c4 float, c5 float, c6 float, "
"c7 float, c8 float, c9 float, c10 float, c11 float, c12 float, "
"c13 float, c14 float, c15 float, c16 float, c17 float, c18 float, "
"c19 float, c20 float, c21 float, c22 float, c23 float, c24 float, "
"c25 float, c26 float, c27 float, c28 float, c29 float, c30 float, "
"c31 float, c32 float, c33 float, c34 float, c35 float, c36 float, "
"c37 float, c38 float, c39 float, c40 float, c41 float, c42 float, "
"c43 float, c44 float, c45 float, c46 float, c47 float, c48 float, "
"c49 float, c50 float, c51 float, c52 float, c53 float, c54 float, "
"c55 float, c56 float, c57 float, c58 float, c59 float, c60 float, "
"c61 float, c62 float, c63 float, c64 float, c65 float, c66 float, "
"c67 float, c68 float, c69 float, c70 float, c71 float, c72 float, "
"c73 float, c74 float, c75 float, c76 float, c77 float, c78 float, "
"c79 float, c80 float, c81 float, c82 float, c83 float, c84 float, "
"c85 float, c86 float, c87 float, c88 float, c89 float, c90 float, "
"c91 float, c92 float, c93 float, c94 float, c95 float, c96 float, "
"c97 float, c98 float, c99 float, c100 float, c101 float, c102 float, "
"c103 float, c104 float, c105 float, c106 float, c107 float, c108 float, "
"c109 float, c110 float, c111 float, c112 float, c113 float, c114 float, "
"c115 float, c116 float, c117 float, c118 float, c119 float, c120 float, "
"c121 float, c122 float, c123 float, c124 float, c125 float, c126 float, "
"c127 float, c128 float, c129 float, c130 float, c131 float, c132 float, "
"c133 float, c134 float, c135 float, c136 float, c137 float, c138 float, "
"c139 float, c140 float, c141 float, c142 float, c143 float, c144 float, "
"c145 float, c146 float, c147 float, c148 float, c149 float, c150 float, "
"c151 float, c152 float, c153 float, c154 float, c155 float, c156 float, "
"c157 float, c158 float, c159 float, c160 float, c161 float, c162 float, "
"c163 float, c164 float, c165 float, c166 float, c167 float, c168 float, "
"c169 float, c170 float, c171 float, c172 float, c173 float, c174 float, "
"c175 float, c176 float, c177 float, c178 float, c179 float, c180 float, "
"c181 float, c182 float, c183 float, c184 float, c185 float, c186 float, "
"c187 float, c188 float, c189 float, c190 float, c191 float, c192 float, "
"c193 float, c194 float, c195 float, c196 float, c197 float, c198 float, "
"c199 float, c200 float, c201 float, c202 float, c203 float, c204 float, "
"c205 float, c206 float, c207 float, c208 float, c209 float, c210 float, "
"c211 float, c212 float, c213 float, c214 float, c215 float, c216 float, "
"c217 float, c218 float, c219 float, c220 float, c221 float, c222 float, "
"c223 float, c224 float, c225 float, c226 float, c227 float, c228 float, "
"c229 float, c230 float, c231 float, c232 float, c233 float, c234 float, "
"c235 float, c236 float, c237 float, c238 float, c239 float, c240 float, "
"c241 float, c242 float, c243 float, c244 float, c245 float, c246 float, "
"c247 float, c248 float, c249 float, c250 float)"
;
rc
=
mysql_real_query
(
mysql
,
stmt_text
,
strlen
(
stmt_text
));
myquery
(
rc
);
bind
=
(
MYSQL_BIND
*
)
malloc
(
MAX_PARAM_COUNT
*
sizeof
(
MYSQL_BIND
));
query
=
(
char
*
)
malloc
(
strlen
(
query_template
)
+
MAX_PARAM_COUNT
*
CHARS_PER_PARAM
+
1
);
param_str
=
(
char
*
)
malloc
(
COLUMN_COUNT
*
CHARS_PER_PARAM
);
if
(
bind
==
0
||
query
==
0
||
param_str
==
0
)
{
fprintf
(
stderr
,
"Can't allocate enough memory for query structs
\n
"
);
return
;
}
stmt
=
mysql_stmt_init
(
mysql
);
/* setup a template for one row of parameters */
sprintf
(
param_str
,
"("
);
for
(
i
=
1
;
i
<
COLUMN_COUNT
;
++
i
)
strcat
(
param_str
,
"?, "
);
strcat
(
param_str
,
"?)"
);
param_str_length
=
strlen
(
param_str
);
/* setup bind array */
bzero
(
bind
,
MAX_PARAM_COUNT
*
sizeof
(
MYSQL_BIND
));
for
(
i
=
0
;
i
<
MAX_PARAM_COUNT
;
++
i
)
{
bind
[
i
].
buffer_type
=
MYSQL_TYPE_FLOAT
;
bind
[
i
].
buffer
=
fa_ptr
;
if
(
++
fa_ptr
==
float_array
+
COLUMN_COUNT
)
fa_ptr
=
float_array
;
}
/*
Test each number of rows per bulk insert, so that we can see where
MySQL fails.
*/
for
(
nrows
=
MIN_ROWS_PER_INSERT
;
nrows
<=
MAX_ROWS_PER_INSERT
;
++
nrows
)
{
char
*
query_ptr
;
/* Create statement text for current number of rows */
sprintf
(
query
,
query_template
,
param_str
);
query_ptr
=
query
+
strlen
(
query
);
for
(
i
=
1
;
i
<
nrows
;
++
i
)
{
memcpy
(
query_ptr
,
", "
,
2
);
query_ptr
+=
2
;
memcpy
(
query_ptr
,
param_str
,
param_str_length
);
query_ptr
+=
param_str_length
;
}
*
query_ptr
=
'\0'
;
rc
=
mysql_stmt_prepare
(
stmt
,
query
,
query_ptr
-
query
);
if
(
rc
&&
nrows
*
COLUMN_COUNT
>
uint16_max
)
{
printf
(
"Failed to prepare a statement with %d placeholders "
"(as expected).
\n
"
,
nrows
*
COLUMN_COUNT
);
break
;
}
else
check_execute
(
stmt
,
rc
);
printf
(
"Insert: query length= %d, row count= %d, param count= %lu
\n
"
,
strlen
(
query
),
nrows
,
mysql_stmt_param_count
(
stmt
));
/* bind the parameter array and execute the query */
rc
=
mysql_stmt_bind_param
(
stmt
,
bind
);
check_execute
(
stmt
,
rc
);
rc
=
mysql_stmt_execute
(
stmt
);
check_execute
(
stmt
,
rc
);
}
mysql_stmt_close
(
stmt
);
free
(
bind
);
free
(
query
);
free
(
param_str
);
stmt_text
=
"drop table t1"
;
rc
=
mysql_real_query
(
mysql
,
stmt_text
,
strlen
(
stmt_text
));
myquery
(
rc
);
}
/*
/*
Read and parse arguments and MySQL options from my.cnf
Read and parse arguments and MySQL options from my.cnf
*/
*/
...
@@ -10511,6 +10693,7 @@ int main(int argc, char **argv)
...
@@ -10511,6 +10693,7 @@ int main(int argc, char **argv)
dates in the server */
dates in the server */
test_bug5399
();
/* check that statement id uniquely identifies
test_bug5399
();
/* check that statement id uniquely identifies
statement */
statement */
test_bug5194
();
/* bulk inserts in prepared mode */
/*
/*
XXX: PLEASE RUN THIS PROGRAM UNDER VALGRIND AND VERIFY THAT YOUR TEST
XXX: PLEASE RUN THIS PROGRAM UNDER VALGRIND AND VERIFY THAT YOUR TEST
DOESN'T CONTAIN WARNINGS/ERRORS BEFORE YOU PUSH.
DOESN'T CONTAIN WARNINGS/ERRORS BEFORE YOU PUSH.
...
...
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