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
408c41e9
Commit
408c41e9
authored
Jan 09, 2003
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added prepared statements sample from manual as a test
parent
6a2fbae6
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
177 additions
and
25 deletions
+177
-25
tests/client_test.c
tests/client_test.c
+177
-25
No files found.
tests/client_test.c
View file @
408c41e9
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
client_test.c - description
client_test.c - description
-------------------------
-------------------------
begin : Sun Feb 3 2002
begin : Sun Feb 3 2002
copyright : (C) MySQL AB 1995-200
2
, www.mysql.com
copyright : (C) MySQL AB 1995-200
3
, www.mysql.com
author : venu ( venu@mysql.com )
author : venu ( venu@mysql.com )
***************************************************************************/
***************************************************************************/
...
@@ -364,7 +364,7 @@ uint my_process_stmt_result(MYSQL_STMT *stmt)
...
@@ -364,7 +364,7 @@ uint my_process_stmt_result(MYSQL_STMT *stmt)
return
0
;
return
0
;
}
}
field_count
=
stmt
->
field_count
;
field_count
=
mysql_num_fields
(
result
)
;
for
(
i
=
0
;
i
<
field_count
;
i
++
)
for
(
i
=
0
;
i
<
field_count
;
i
++
)
{
{
buffer
[
i
].
buffer_type
=
MYSQL_TYPE_STRING
;
buffer
[
i
].
buffer_type
=
MYSQL_TYPE_STRING
;
...
@@ -390,6 +390,8 @@ uint my_process_stmt_result(MYSQL_STMT *stmt)
...
@@ -390,6 +390,8 @@ uint my_process_stmt_result(MYSQL_STMT *stmt)
field
=
mysql_fetch_field
(
result
);
field
=
mysql_fetch_field
(
result
);
if
(
length
[
i
]
==
MYSQL_NULL_DATA
)
if
(
length
[
i
]
==
MYSQL_NULL_DATA
)
fprintf
(
stdout
,
" %-*s |"
,
(
int
)
field
->
max_length
,
"NULL"
);
fprintf
(
stdout
,
" %-*s |"
,
(
int
)
field
->
max_length
,
"NULL"
);
else
if
(
length
[
i
]
==
0
)
data
[
i
][
0
]
=
'\0'
;
/* unmodified buffer */
else
if
(
IS_NUM
(
field
->
type
))
else
if
(
IS_NUM
(
field
->
type
))
fprintf
(
stdout
,
" %*s |"
,
(
int
)
field
->
max_length
,
data
[
i
]);
fprintf
(
stdout
,
" %*s |"
,
(
int
)
field
->
max_length
,
data
[
i
]);
else
else
...
@@ -1591,6 +1593,7 @@ static void test_long_data()
...
@@ -1591,6 +1593,7 @@ static void test_long_data()
MYSQL_STMT
*
stmt
;
MYSQL_STMT
*
stmt
;
int
rc
,
int_data
;
int
rc
,
int_data
;
char
*
data
=
NullS
;
char
*
data
=
NullS
;
long
length
;
MYSQL_RES
*
result
;
MYSQL_RES
*
result
;
MYSQL_BIND
bind
[
3
];
MYSQL_BIND
bind
[
3
];
...
@@ -1626,10 +1629,11 @@ static void test_long_data()
...
@@ -1626,10 +1629,11 @@ static void test_long_data()
bind
[
0
].
buffer
=
(
char
*
)
&
int_data
;
bind
[
0
].
buffer
=
(
char
*
)
&
int_data
;
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
bind
[
1
].
is_long_data
=
1
;
/* specify long data suppy during run-time */
/* Non string or binary type, error */
/* Non string or binary type, error */
bind
[
1
].
buffer_type
=
FIELD_TYPE_LONG
;
bind
[
1
].
buffer_type
=
FIELD_TYPE_LONG
;
bind
[
1
].
length
=&
length
;
length
=
MYSQL_LONG_DATA
;
/* specify long data suppy during run-time */
rc
=
mysql_bind_param
(
stmt
,
bind
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
fprintf
(
stdout
,
" mysql_bind_param() returned: %d
\n
"
,
rc
);
fprintf
(
stdout
,
" mysql_bind_param() returned: %d
\n
"
,
rc
);
mystmt_r
(
stmt
,
rc
);
mystmt_r
(
stmt
,
rc
);
...
@@ -1699,7 +1703,7 @@ static void test_long_data_str()
...
@@ -1699,7 +1703,7 @@ static void test_long_data_str()
MYSQL_STMT
*
stmt
;
MYSQL_STMT
*
stmt
;
int
rc
,
i
;
int
rc
,
i
;
char
data
[
255
];
char
data
[
255
];
long
length
;
long
length
,
length1
;
MYSQL_RES
*
result
;
MYSQL_RES
*
result
;
MYSQL_BIND
bind
[
2
];
MYSQL_BIND
bind
[
2
];
...
@@ -1732,8 +1736,9 @@ static void test_long_data_str()
...
@@ -1732,8 +1736,9 @@ static void test_long_data_str()
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
bind
[
1
].
buffer
=
data
;
/* string data */
bind
[
1
].
buffer
=
data
;
/* string data */
bind
[
1
].
is_long_data
=
1
;
/* specify long data suppy during run-time */
bind
[
1
].
buffer_type
=
FIELD_TYPE_STRING
;
bind
[
1
].
buffer_type
=
FIELD_TYPE_STRING
;
bind
[
1
].
length
=
&
length1
;
length1
=
MYSQL_LONG_DATA
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
mystmt
(
stmt
,
rc
);
...
@@ -1798,9 +1803,9 @@ static void test_long_data_str()
...
@@ -1798,9 +1803,9 @@ static void test_long_data_str()
static
void
test_long_data_str1
()
static
void
test_long_data_str1
()
{
{
MYSQL_STMT
*
stmt
;
MYSQL_STMT
*
stmt
;
int
rc
;
int
rc
,
i
;
char
data
[
255
];
char
data
[
255
];
int
length
,
i
;
long
length
,
length1
;
MYSQL_RES
*
result
;
MYSQL_RES
*
result
;
MYSQL_BIND
bind
[
2
];
MYSQL_BIND
bind
[
2
];
...
@@ -1830,8 +1835,9 @@ static void test_long_data_str1()
...
@@ -1830,8 +1835,9 @@ static void test_long_data_str1()
verify_param_count
(
stmt
,
2
);
verify_param_count
(
stmt
,
2
);
bind
[
0
].
buffer
=
data
;
/* string data */
bind
[
0
].
buffer
=
data
;
/* string data */
bind
[
0
].
is_long_data
=
1
;
/* specify long data suppy during run-time */
bind
[
0
].
length
=
&
length1
;
bind
[
0
].
buffer_type
=
FIELD_TYPE_STRING
;
bind
[
0
].
buffer_type
=
FIELD_TYPE_STRING
;
length1
=
MYSQL_LONG_DATA
;
bind
[
1
]
=
bind
[
0
];
bind
[
1
]
=
bind
[
0
];
bind
[
1
].
buffer_type
=
FIELD_TYPE_BLOB
;
bind
[
1
].
buffer_type
=
FIELD_TYPE_BLOB
;
...
@@ -1894,7 +1900,7 @@ static void test_long_data_str1()
...
@@ -1894,7 +1900,7 @@ static void test_long_data_str1()
myassert
(
1
==
my_process_result_set
(
result
));
myassert
(
1
==
my_process_result_set
(
result
));
mysql_free_result
(
result
);
mysql_free_result
(
result
);
sprintf
(
data
,
"%
d"
,
i
*
length
);
sprintf
(
data
,
"%
ld"
,(
long
)
i
*
length
);
verify_col_data
(
"test_long_data_str"
,
"length(longstr)"
,
data
);
verify_col_data
(
"test_long_data_str"
,
"length(longstr)"
,
data
);
sprintf
(
data
,
"%d"
,
i
*
2
);
sprintf
(
data
,
"%d"
,
i
*
2
);
...
@@ -1910,7 +1916,7 @@ static void test_long_data_bin()
...
@@ -1910,7 +1916,7 @@ static void test_long_data_bin()
MYSQL_STMT
*
stmt
;
MYSQL_STMT
*
stmt
;
int
rc
;
int
rc
;
char
data
[
255
];
char
data
[
255
];
int
length
;
long
length
,
length1
;
MYSQL_RES
*
result
;
MYSQL_RES
*
result
;
MYSQL_BIND
bind
[
2
];
MYSQL_BIND
bind
[
2
];
...
@@ -1943,8 +1949,9 @@ static void test_long_data_bin()
...
@@ -1943,8 +1949,9 @@ static void test_long_data_bin()
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
bind
[
1
].
buffer
=
data
;
/* string data */
bind
[
1
].
buffer
=
data
;
/* string data */
bind
[
1
].
is_long_data
=
1
;
/* specify long data suppy during run-time */
bind
[
1
].
buffer_type
=
FIELD_TYPE_LONG_BLOB
;
bind
[
1
].
buffer_type
=
FIELD_TYPE_LONG_BLOB
;
bind
[
1
].
length
=
&
length1
;
length1
=
MYSQL_LONG_DATA
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
mystmt
(
stmt
,
rc
);
...
@@ -4442,6 +4449,155 @@ static void test_multi_stmt()
...
@@ -4442,6 +4449,155 @@ static void test_multi_stmt()
{
{
}
}
/********************************************************
* to test simple sample - manual *
*********************************************************/
static
void
test_manual_sample
()
{
unsigned
int
param_count
;
MYSQL_BIND
bind
[
3
];
MYSQL_STMT
*
stmt
;
short
small_data
;
int
int_data
;
char
str_data
[
50
],
query
[
255
];
long
length
;
ulonglong
affected_rows
;
myheader
(
"test_manual_sample"
);
/*
Sample which is incorporated directly in the manual under Prepared
statements section (Example from mysql_execute()
*/
mysql_autocommit
(
mysql
,
1
);
if
(
mysql_query
(
mysql
,
"DROP TABLE IF EXISTS test_table"
))
{
fprintf
(
stderr
,
"
\n
drop table failed"
);
fprintf
(
stderr
,
"
\n
%s"
,
mysql_error
(
mysql
));
exit
(
0
);
}
if
(
mysql_query
(
mysql
,
"CREATE TABLE test_table(col1 int, col2 varchar(50), \
col3 smallint,\
col4 timestamp(14))"
))
{
fprintf
(
stderr
,
"
\n
create table failed"
);
fprintf
(
stderr
,
"
\n
%s"
,
mysql_error
(
mysql
));
exit
(
0
);
}
/* Prepare a insert query with 3 parameters */
strcpy
(
query
,
"INSERT INTO test_table(col1,col2,col3) values(?,?,?)"
);
if
(
!
(
stmt
=
mysql_prepare
(
mysql
,
query
,
strlen
(
query
))))
{
fprintf
(
stderr
,
"
\n
prepare, insert failed"
);
fprintf
(
stderr
,
"
\n
%s"
,
mysql_error
(
mysql
));
exit
(
0
);
}
fprintf
(
stdout
,
"
\n
prepare, insert successful"
);
/* Get the parameter count from the statement */
param_count
=
mysql_param_count
(
stmt
);
fprintf
(
stdout
,
"
\n
total parameters in insert: %d"
,
param_count
);
if
(
param_count
!=
3
)
/* validate parameter count */
{
fprintf
(
stderr
,
"
\n
invalid parameter count returned by MySQL"
);
exit
(
0
);
}
/* Bind the data for the parameters */
/* INTEGER PART */
memset
(
bind
,
0
,
sizeof
(
bind
));
bind
[
0
].
buffer_type
=
MYSQL_TYPE_LONG
;
bind
[
0
].
buffer
=
(
void
*
)
&
int_data
;
/* STRING PART */
bind
[
1
].
buffer_type
=
MYSQL_TYPE_VAR_STRING
;
bind
[
1
].
buffer
=
(
void
*
)
str_data
;
bind
[
1
].
buffer_length
=
sizeof
(
str_data
);
/* SMALLINT PART */
bind
[
2
].
buffer_type
=
MYSQL_TYPE_SHORT
;
bind
[
2
].
buffer
=
(
void
*
)
&
small_data
;
bind
[
2
].
length
=
(
long
*
)
&
length
;
/* Bind the buffers */
if
(
mysql_bind_param
(
stmt
,
bind
))
{
fprintf
(
stderr
,
"
\n
param bind failed"
);
fprintf
(
stderr
,
"
\n
%s"
,
mysql_stmt_error
(
stmt
));
exit
(
0
);
}
/* Specify the data */
int_data
=
10
;
/* integer */
strcpy
(
str_data
,
"MySQL"
);
/* string */
/* INSERT SMALLINT data as NULL */
length
=
MYSQL_NULL_DATA
;
/* Execute the insert statement - 1*/
if
(
mysql_execute
(
stmt
))
{
fprintf
(
stderr
,
"
\n
execute 1 failed"
);
fprintf
(
stderr
,
"
\n
%s"
,
mysql_stmt_error
(
stmt
));
exit
(
0
);
}
/* Get the total rows affected */
affected_rows
=
mysql_stmt_affected_rows
(
stmt
);
fprintf
(
stdout
,
"
\n
total affected rows: %lld"
,
affected_rows
);
if
(
affected_rows
!=
1
)
/* validate affected rows */
{
fprintf
(
stderr
,
"
\n
invalid affected rows by MySQL"
);
exit
(
0
);
}
/* Re-execute the insert, by changing the values */
int_data
=
1000
;
strcpy
(
str_data
,
"The most popular open source database"
);
small_data
=
1000
;
/* smallint */
length
=
0
;
/* Execute the insert statement - 2*/
if
(
mysql_execute
(
stmt
))
{
fprintf
(
stderr
,
"
\n
execute 2 failed"
);
fprintf
(
stderr
,
"
\n
%s"
,
mysql_stmt_error
(
stmt
));
exit
(
0
);
}
/* Get the total rows affected */
affected_rows
=
mysql_stmt_affected_rows
(
stmt
);
fprintf
(
stdout
,
"
\n
total affected rows: %lld"
,
affected_rows
);
if
(
affected_rows
!=
1
)
/* validate affected rows */
{
fprintf
(
stderr
,
"
\n
invalid affected rows by MySQL"
);
exit
(
0
);
}
/* Close the statement */
if
(
mysql_stmt_close
(
stmt
))
{
fprintf
(
stderr
,
"
\n
failed while closing the statement"
);
fprintf
(
stderr
,
"
\n
%s"
,
mysql_stmt_error
(
stmt
));
exit
(
0
);
}
myassert
(
2
==
my_stmt_result
(
"SELECT * FROM test_table"
,
50
));
/* DROP THE TABLE */
if
(
mysql_query
(
mysql
,
"DROP TABLE test_table"
))
{
fprintf
(
stderr
,
"
\n
drop table failed"
);
fprintf
(
stderr
,
"
\n
%s"
,
mysql_error
(
mysql
));
exit
(
0
);
}
fprintf
(
stdout
,
"Success !!!"
);
}
static
struct
my_option
myctest_long_options
[]
=
static
struct
my_option
myctest_long_options
[]
=
{
{
...
@@ -4552,6 +4708,7 @@ int main(int argc, char **argv)
...
@@ -4552,6 +4708,7 @@ int main(int argc, char **argv)
client_connect
();
/* connect to server */
client_connect
();
/* connect to server */
client_query
();
/* simple client query test */
client_query
();
/* simple client query test */
test_manual_sample
();
/* sample in the manual */
test_bind_result
();
/* result bind test */
test_bind_result
();
/* result bind test */
test_fetch_null
();
/* to fetch null data */
test_fetch_null
();
/* to fetch null data */
test_fetch_date
();
/* to fetch date,time and timestamp */
test_fetch_date
();
/* to fetch date,time and timestamp */
...
@@ -4567,8 +4724,8 @@ int main(int argc, char **argv)
...
@@ -4567,8 +4724,8 @@ int main(int argc, char **argv)
test_select_direct
();
/* direct select - protocol_simple debug */
test_select_direct
();
/* direct select - protocol_simple debug */
test_select_prepare
();
/* prepare select - protocol_prep debug */
test_select_prepare
();
/* prepare select - protocol_prep debug */
test_select_direct
();
/* direct select - protocol_simple debug */
test_select_direct
();
/* direct select - protocol_simple debug */
test_select
();
test_select
();
/* simple select test */
test_select_version
();
test_select_version
();
/* select with variables */
test_set_variable
();
/* set variable prepare */
test_set_variable
();
/* set variable prepare */
#if NOT_USED
#if NOT_USED
test_select_meta
();
/* select param meta information */
test_select_meta
();
/* select param meta information */
...
@@ -4576,19 +4733,14 @@ int main(int argc, char **argv)
...
@@ -4576,19 +4733,14 @@ int main(int argc, char **argv)
test_insert_meta
();
/* insert param meta information */
test_insert_meta
();
/* insert param meta information */
#endif
#endif
test_simple_update
();
/* simple update test */
test_simple_update
();
/* simple update test */
test_func_fields
();
test_func_fields
();
/* test for new 4.1 MYSQL_FIELD members */
test_long_data
();
test_long_data
();
/* test for sending text data in chunks */
test_insert
();
test_insert
();
/* simple insert test - prepare */
test_set_variable
();
test_set_variable
();
/* prepare with set variables */
test_tran_innodb
();
test_tran_innodb
();
/* test for mysql_commit(), rollback() and autocommit() */
test_select_version
();
test_select_show
();
/* prepare - show test */
test_select_simple
();
test_debug_example
();
test_select
();
test_select_show
();
test_null
();
/* test null data handling */
test_null
();
/* test null data handling */
test_simple_update
();
/* simple prepare - update */
test_simple_update
();
/* simple prepare - update */
test_prepare_resultset
();
test_prepare_noparam
();
/* prepare without parameters */
test_prepare_noparam
();
/* prepare without parameters */
test_select
();
/* simple prepare-select */
test_select
();
/* simple prepare-select */
test_insert
();
/* prepare with insert */
test_insert
();
/* prepare with insert */
...
...
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