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
492eba03
Commit
492eba03
authored
Jan 09, 2003
by
venu@myvenu.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added prepared statements sample from manual as a test
parent
045b2f23
Changes
1
Hide 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 @
492eba03
...
...
@@ -2,7 +2,7 @@
client_test.c - description
-------------------------
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 )
***************************************************************************/
...
...
@@ -364,7 +364,7 @@ uint my_process_stmt_result(MYSQL_STMT *stmt)
return
0
;
}
field_count
=
stmt
->
field_count
;
field_count
=
mysql_num_fields
(
result
)
;
for
(
i
=
0
;
i
<
field_count
;
i
++
)
{
buffer
[
i
].
buffer_type
=
MYSQL_TYPE_STRING
;
...
...
@@ -390,6 +390,8 @@ uint my_process_stmt_result(MYSQL_STMT *stmt)
field
=
mysql_fetch_field
(
result
);
if
(
length
[
i
]
==
MYSQL_NULL_DATA
)
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
))
fprintf
(
stdout
,
" %*s |"
,
(
int
)
field
->
max_length
,
data
[
i
]);
else
...
...
@@ -1591,6 +1593,7 @@ static void test_long_data()
MYSQL_STMT
*
stmt
;
int
rc
,
int_data
;
char
*
data
=
NullS
;
long
length
;
MYSQL_RES
*
result
;
MYSQL_BIND
bind
[
3
];
...
...
@@ -1626,10 +1629,11 @@ static void test_long_data()
bind
[
0
].
buffer
=
(
char
*
)
&
int_data
;
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 */
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
);
fprintf
(
stdout
,
" mysql_bind_param() returned: %d
\n
"
,
rc
);
mystmt_r
(
stmt
,
rc
);
...
...
@@ -1699,7 +1703,7 @@ static void test_long_data_str()
MYSQL_STMT
*
stmt
;
int
rc
,
i
;
char
data
[
255
];
long
length
;
long
length
,
length1
;
MYSQL_RES
*
result
;
MYSQL_BIND
bind
[
2
];
...
...
@@ -1732,8 +1736,9 @@ static void test_long_data_str()
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
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
].
length
=
&
length1
;
length1
=
MYSQL_LONG_DATA
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
...
...
@@ -1798,9 +1803,9 @@ static void test_long_data_str()
static
void
test_long_data_str1
()
{
MYSQL_STMT
*
stmt
;
int
rc
;
int
rc
,
i
;
char
data
[
255
];
int
length
,
i
;
long
length
,
length1
;
MYSQL_RES
*
result
;
MYSQL_BIND
bind
[
2
];
...
...
@@ -1830,8 +1835,9 @@ static void test_long_data_str1()
verify_param_count
(
stmt
,
2
);
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
;
length1
=
MYSQL_LONG_DATA
;
bind
[
1
]
=
bind
[
0
];
bind
[
1
].
buffer_type
=
FIELD_TYPE_BLOB
;
...
...
@@ -1894,7 +1900,7 @@ static void test_long_data_str1()
myassert
(
1
==
my_process_result_set
(
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
);
sprintf
(
data
,
"%d"
,
i
*
2
);
...
...
@@ -1910,7 +1916,7 @@ static void test_long_data_bin()
MYSQL_STMT
*
stmt
;
int
rc
;
char
data
[
255
];
int
length
;
long
length
,
length1
;
MYSQL_RES
*
result
;
MYSQL_BIND
bind
[
2
];
...
...
@@ -1943,8 +1949,9 @@ static void test_long_data_bin()
bind
[
0
].
buffer_type
=
FIELD_TYPE_LONG
;
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
].
length
=
&
length1
;
length1
=
MYSQL_LONG_DATA
;
rc
=
mysql_bind_param
(
stmt
,
bind
);
mystmt
(
stmt
,
rc
);
...
...
@@ -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
[]
=
{
...
...
@@ -4552,6 +4708,7 @@ int main(int argc, char **argv)
client_connect
();
/* connect to server */
client_query
();
/* simple client query test */
test_manual_sample
();
/* sample in the manual */
test_bind_result
();
/* result bind test */
test_fetch_null
();
/* to fetch null data */
test_fetch_date
();
/* to fetch date,time and timestamp */
...
...
@@ -4566,9 +4723,9 @@ int main(int argc, char **argv)
test_bind_result_ext1
();
/* result bind test - extension */
test_select_direct
();
/* direct select - protocol_simple debug */
test_select_prepare
();
/* prepare select - protocol_prep debug */
test_select_direct
();
/* direct select - protocol_simple debug */
test_select
();
test_select_version
();
test_select_direct
();
/* direct select - protocol_simple debug */
test_select
();
/* simple select test */
test_select_version
();
/* select with variables */
test_set_variable
();
/* set variable prepare */
#if NOT_USED
test_select_meta
();
/* select param meta information */
...
...
@@ -4576,19 +4733,14 @@ int main(int argc, char **argv)
test_insert_meta
();
/* insert param meta information */
#endif
test_simple_update
();
/* simple update test */
test_func_fields
();
test_long_data
();
test_insert
();
test_set_variable
();
test_tran_innodb
();
test_select_version
();
test_select_simple
();
test_debug_example
();
test_select
();
test_select_show
();
test_func_fields
();
/* test for new 4.1 MYSQL_FIELD members */
test_long_data
();
/* test for sending text data in chunks */
test_insert
();
/* simple insert test - prepare */
test_set_variable
();
/* prepare with set variables */
test_tran_innodb
();
/* test for mysql_commit(), rollback() and autocommit() */
test_select_show
();
/* prepare - show test */
test_null
();
/* test null data handling */
test_simple_update
();
/* simple prepare - update */
test_prepare_resultset
();
test_prepare_noparam
();
/* prepare without parameters */
test_select
();
/* simple prepare-select */
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