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
48caaf1f
Commit
48caaf1f
authored
Oct 24, 2006
by
holyfoot/hf@mysql.com/deer.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk@192.168.21.1:mysql-5.0-opt
into mysql.com:/home/hf/work/w3475/my50-w3475
parents
2ab34bac
9c7750b5
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
83 additions
and
60 deletions
+83
-60
client/mysqltest.c
client/mysqltest.c
+82
-8
libmysql/libmysql.c
libmysql/libmysql.c
+0
-8
mysql-test/t/bdb-deadlock.test
mysql-test/t/bdb-deadlock.test
+0
-8
mysql-test/t/flush.test
mysql-test/t/flush.test
+0
-8
mysql-test/t/flush_block_commit.test
mysql-test/t/flush_block_commit.test
+0
-3
mysql-test/t/innodb-deadlock.test
mysql-test/t/innodb-deadlock.test
+0
-2
mysql-test/t/innodb-lock.test
mysql-test/t/innodb-lock.test
+0
-2
mysql-test/t/lock_multi.test
mysql-test/t/lock_multi.test
+0
-8
mysql-test/t/rename.test
mysql-test/t/rename.test
+0
-4
mysql-test/t/show_check.test
mysql-test/t/show_check.test
+1
-2
mysql-test/t/status.test
mysql-test/t/status.test
+0
-7
No files found.
client/mysqltest.c
View file @
48caaf1f
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
* Matt Wagner <matt@mysql.com>
* Matt Wagner <matt@mysql.com>
* Monty
* Monty
* Jani
* Jani
* Holyfoot
**/
**/
/**********************************************************************
/**********************************************************************
...
@@ -243,6 +244,12 @@ struct connection
...
@@ -243,6 +244,12 @@ struct connection
MYSQL
*
util_mysql
;
MYSQL
*
util_mysql
;
char
*
name
;
char
*
name
;
MYSQL_STMT
*
stmt
;
MYSQL_STMT
*
stmt
;
const
char
*
cur_query
;
int
cur_query_len
;
pthread_mutex_t
mutex
;
pthread_cond_t
cond
;
int
query_done
;
};
};
typedef
struct
typedef
struct
...
@@ -480,6 +487,58 @@ static void handle_error(const char *query, struct st_query *q,
...
@@ -480,6 +487,58 @@ static void handle_error(const char *query, struct st_query *q,
const
char
*
err_sqlstate
,
DYNAMIC_STRING
*
ds
);
const
char
*
err_sqlstate
,
DYNAMIC_STRING
*
ds
);
static
void
handle_no_error
(
struct
st_query
*
q
);
static
void
handle_no_error
(
struct
st_query
*
q
);
#ifdef EMBEDDED_LIBRARY
/*
send_one_query executes query in separate thread what is
necessary in embedded library to run 'send' in proper way.
This implementation doesn't handle errors returned
by mysql_send_query. It's technically possible, though
i don't see where it is needed.
*/
pthread_handler_t
send_one_query
(
void
*
arg
)
{
struct
connection
*
cn
=
(
struct
connection
*
)
arg
;
mysql_thread_init
();
VOID
(
mysql_send_query
(
&
cn
->
mysql
,
cn
->
cur_query
,
cn
->
cur_query_len
));
mysql_thread_end
();
pthread_mutex_lock
(
&
cn
->
mutex
);
cn
->
query_done
=
1
;
VOID
(
pthread_cond_signal
(
&
cn
->
cond
));
pthread_mutex_unlock
(
&
cn
->
mutex
);
pthread_exit
(
0
);
return
0
;
}
static
int
do_send_query
(
struct
connection
*
cn
,
const
char
*
q
,
int
q_len
,
int
flags
)
{
pthread_t
tid
;
if
(
flags
&
QUERY_REAP
)
return
mysql_send_query
(
&
cn
->
mysql
,
q
,
q_len
);
if
(
pthread_mutex_init
(
&
cn
->
mutex
,
NULL
)
||
pthread_cond_init
(
&
cn
->
cond
,
NULL
))
die
(
"Error in the thread library"
);
cn
->
cur_query
=
q
;
cn
->
cur_query_len
=
q_len
;
cn
->
query_done
=
0
;
if
(
pthread_create
(
&
tid
,
NULL
,
send_one_query
,
(
void
*
)
cn
))
die
(
"Cannot start new thread for query"
);
return
0
;
}
#else
/*EMBEDDED_LIBRARY*/
#define do_send_query(cn,q,q_len,flags) mysql_send_query(&cn->mysql, q, q_len)
#endif
/*EMBEDDED_LIBRARY*/
static
void
do_eval
(
DYNAMIC_STRING
*
query_eval
,
const
char
*
query
,
static
void
do_eval
(
DYNAMIC_STRING
*
query_eval
,
const
char
*
query
,
my_bool
pass_through_escape_chars
)
my_bool
pass_through_escape_chars
)
{
{
...
@@ -3578,7 +3637,6 @@ static int append_warnings(DYNAMIC_STRING *ds, MYSQL* mysql)
...
@@ -3578,7 +3637,6 @@ static int append_warnings(DYNAMIC_STRING *ds, MYSQL* mysql)
}
}
/*
/*
Run query using MySQL C API
Run query using MySQL C API
...
@@ -3595,11 +3653,12 @@ static int append_warnings(DYNAMIC_STRING *ds, MYSQL* mysql)
...
@@ -3595,11 +3653,12 @@ static int append_warnings(DYNAMIC_STRING *ds, MYSQL* mysql)
error - function will not return
error - function will not return
*/
*/
static
void
run_query_normal
(
MYSQL
*
mysql
,
struct
st_query
*
command
,
static
void
run_query_normal
(
struct
connection
*
cn
,
struct
st_query
*
command
,
int
flags
,
char
*
query
,
int
query_len
,
int
flags
,
char
*
query
,
int
query_len
,
DYNAMIC_STRING
*
ds
,
DYNAMIC_STRING
*
ds_warnings
)
DYNAMIC_STRING
*
ds
,
DYNAMIC_STRING
*
ds_warnings
)
{
{
MYSQL_RES
*
res
=
0
;
MYSQL_RES
*
res
=
0
;
MYSQL
*
mysql
=
&
cn
->
mysql
;
int
err
=
0
,
counter
=
0
;
int
err
=
0
,
counter
=
0
;
DBUG_ENTER
(
"run_query_normal"
);
DBUG_ENTER
(
"run_query_normal"
);
DBUG_PRINT
(
"enter"
,(
"flags: %d"
,
flags
));
DBUG_PRINT
(
"enter"
,(
"flags: %d"
,
flags
));
...
@@ -3610,13 +3669,26 @@ static void run_query_normal(MYSQL *mysql, struct st_query *command,
...
@@ -3610,13 +3669,26 @@ static void run_query_normal(MYSQL *mysql, struct st_query *command,
/*
/*
Send the query
Send the query
*/
*/
if
(
mysql_send_query
(
mysql
,
query
,
query_len
))
if
(
do_send_query
(
cn
,
query
,
query_len
,
flags
))
{
{
handle_error
(
query
,
command
,
mysql_errno
(
mysql
),
mysql_error
(
mysql
),
handle_error
(
query
,
command
,
mysql_errno
(
mysql
),
mysql_error
(
mysql
),
mysql_sqlstate
(
mysql
),
ds
);
mysql_sqlstate
(
mysql
),
ds
);
goto
end
;
goto
end
;
}
}
}
}
#ifdef EMBEDDED_LIBRARY
/*
Here we handle 'reap' command, so we need to check if the
query's thread was finished and probably wait
*/
else
if
(
flags
&
QUERY_REAP
)
{
pthread_mutex_lock
(
&
cn
->
mutex
);
while
(
!
cn
->
query_done
)
pthread_cond_wait
(
&
cn
->
cond
,
&
cn
->
mutex
);
pthread_mutex_unlock
(
&
cn
->
mutex
);
}
#endif
/*EMBEDDED_LIBRARY*/
if
(
!
(
flags
&
QUERY_REAP
))
if
(
!
(
flags
&
QUERY_REAP
))
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
...
@@ -4102,8 +4174,10 @@ static int util_query(MYSQL* org_mysql, const char* query){
...
@@ -4102,8 +4174,10 @@ static int util_query(MYSQL* org_mysql, const char* query){
*/
*/
static
void
run_query
(
MYSQL
*
mysql
,
struct
st_query
*
command
,
int
flags
)
static
void
run_query
(
struct
connection
*
cn
,
struct
st_query
*
command
,
int
flags
)
{
{
MYSQL
*
mysql
=
&
cn
->
mysql
;
DYNAMIC_STRING
*
ds
;
DYNAMIC_STRING
*
ds
;
DYNAMIC_STRING
ds_result
;
DYNAMIC_STRING
ds_result
;
DYNAMIC_STRING
ds_warnings
;
DYNAMIC_STRING
ds_warnings
;
...
@@ -4256,7 +4330,7 @@ static void run_query(MYSQL *mysql, struct st_query *command, int flags)
...
@@ -4256,7 +4330,7 @@ static void run_query(MYSQL *mysql, struct st_query *command, int flags)
match_re
(
&
ps_re
,
query
))
match_re
(
&
ps_re
,
query
))
run_query_stmt
(
mysql
,
command
,
query
,
query_len
,
ds
,
&
ds_warnings
);
run_query_stmt
(
mysql
,
command
,
query
,
query_len
,
ds
,
&
ds_warnings
);
else
else
run_query_normal
(
mysql
,
command
,
flags
,
query
,
query_len
,
run_query_normal
(
cn
,
command
,
flags
,
query
,
query_len
,
ds
,
&
ds_warnings
);
ds
,
&
ds_warnings
);
if
(
sp_created
)
if
(
sp_created
)
...
@@ -4740,7 +4814,7 @@ int main(int argc, char **argv)
...
@@ -4740,7 +4814,7 @@ int main(int argc, char **argv)
q
->
require_file
=
require_file
;
q
->
require_file
=
require_file
;
save_file
[
0
]
=
0
;
save_file
[
0
]
=
0
;
}
}
run_query
(
&
cur_con
->
mysql
,
q
,
QUERY_REAP
|
QUERY_SEND
);
run_query
(
cur_con
,
q
,
QUERY_REAP
|
QUERY_SEND
);
display_result_vertically
=
old_display_result_vertically
;
display_result_vertically
=
old_display_result_vertically
;
q
->
last_argument
=
q
->
end
;
q
->
last_argument
=
q
->
end
;
query_executed
=
1
;
query_executed
=
1
;
...
@@ -4775,7 +4849,7 @@ int main(int argc, char **argv)
...
@@ -4775,7 +4849,7 @@ int main(int argc, char **argv)
{
{
q
->
query
=
q
->
first_argument
;
q
->
query
=
q
->
first_argument
;
}
}
run_query
(
&
cur_con
->
mysql
,
q
,
flags
);
run_query
(
cur_con
,
q
,
flags
);
query_executed
=
1
;
query_executed
=
1
;
q
->
last_argument
=
q
->
end
;
q
->
last_argument
=
q
->
end
;
break
;
break
;
...
@@ -4796,7 +4870,7 @@ int main(int argc, char **argv)
...
@@ -4796,7 +4870,7 @@ int main(int argc, char **argv)
query and read the result some time later when reap instruction
query and read the result some time later when reap instruction
is given on this connection.
is given on this connection.
*/
*/
run_query
(
&
cur_con
->
mysql
,
q
,
QUERY_SEND
);
run_query
(
cur_con
,
q
,
QUERY_SEND
);
query_executed
=
1
;
query_executed
=
1
;
q
->
last_argument
=
q
->
end
;
q
->
last_argument
=
q
->
end
;
break
;
break
;
...
...
libmysql/libmysql.c
View file @
48caaf1f
...
@@ -4769,14 +4769,6 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
...
@@ -4769,14 +4769,6 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
}
}
if
(
result
->
data
)
{
free_root
(
&
result
->
alloc
,
MYF
(
MY_KEEP_PREALLOC
));
result
->
data
=
NULL
;
result
->
rows
=
0
;
stmt
->
data_cursor
=
NULL
;
}
if
(
stmt
->
update_max_length
&&
!
stmt
->
bind_result_done
)
if
(
stmt
->
update_max_length
&&
!
stmt
->
bind_result_done
)
{
{
/*
/*
...
...
mysql-test/t/bdb-deadlock.test
View file @
48caaf1f
# This test doesn't work with the embedded version as this code
# assumes that one query is running while we are doing queries on
# a second connection.
# This would work if mysqltest run would be threaded and handle each
# connection in a separate thread.
#
--
source
include
/
not_embedded
.
inc
--
source
include
/
have_bdb
.
inc
--
source
include
/
have_bdb
.
inc
connect
(
con1
,
localhost
,
root
,,);
connect
(
con1
,
localhost
,
root
,,);
...
...
mysql-test/t/flush.test
View file @
48caaf1f
# This test doesn't work with the embedded version as this code
# assumes that one query is running while we are doing queries on
# a second connection.
# This would work if mysqltest run would be threaded and handle each
# connection in a separate thread.
#
--
source
include
/
not_embedded
.
inc
connect
(
con1
,
localhost
,
root
,,);
connect
(
con1
,
localhost
,
root
,,);
connect
(
con2
,
localhost
,
root
,,);
connect
(
con2
,
localhost
,
root
,,);
connection
con1
;
connection
con1
;
...
...
mysql-test/t/flush_block_commit.test
View file @
48caaf1f
...
@@ -3,9 +3,6 @@
...
@@ -3,9 +3,6 @@
# We verify that we did not introduce a deadlock.
# We verify that we did not introduce a deadlock.
# This is intended to mimick how mysqldump and innobackup work.
# This is intended to mimick how mysqldump and innobackup work.
# This test doesn't work with the embedded server
--
source
include
/
not_embedded
.
inc
# And it requires InnoDB
# And it requires InnoDB
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_innodb
.
inc
...
...
mysql-test/t/innodb-deadlock.test
View file @
48caaf1f
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_innodb
.
inc
# Can't test this with embedded server
--
source
include
/
not_embedded
.
inc
connect
(
con1
,
localhost
,
root
,,);
connect
(
con1
,
localhost
,
root
,,);
connect
(
con2
,
localhost
,
root
,,);
connect
(
con2
,
localhost
,
root
,,);
...
...
mysql-test/t/innodb-lock.test
View file @
48caaf1f
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_innodb
.
inc
# Can't test this with embedded server
--
source
include
/
not_embedded
.
inc
#
#
# Check and select innodb lock type
# Check and select innodb lock type
...
...
mysql-test/t/lock_multi.test
View file @
48caaf1f
# This test doesn't work with the embedded version as this code
# assumes that one query is running while we are doing queries on
# a second connection.
# This would work if mysqltest run would be threaded and handle each
# connection in a separate thread.
#
--
source
include
/
not_embedded
.
inc
--
disable_warnings
--
disable_warnings
drop
table
if
exists
t1
,
t2
;
drop
table
if
exists
t1
,
t2
;
--
enable_warnings
--
enable_warnings
...
...
mysql-test/t/rename.test
View file @
48caaf1f
...
@@ -2,10 +2,6 @@
...
@@ -2,10 +2,6 @@
# Test of rename table
# Test of rename table
#
#
# Test requires concurrent connections, which can't be tested on embedded
# server
--
source
include
/
not_embedded
.
inc
--
disable_warnings
--
disable_warnings
drop
table
if
exists
t0
,
t1
,
t2
,
t3
,
t4
;
drop
table
if
exists
t0
,
t1
,
t2
,
t3
,
t4
;
# Clear up from other tests (to ensure that SHOW TABLES below is right)
# Clear up from other tests (to ensure that SHOW TABLES below is right)
...
...
mysql-test/t/show_check.test
View file @
48caaf1f
# Requires use of multiple simultaneous connections, not supported with
# Uses GRANT commands that usually disabled in embedded server
# embedded server testing
--
source
include
/
not_embedded
.
inc
--
source
include
/
not_embedded
.
inc
#
#
...
...
mysql-test/t/status.test
View file @
48caaf1f
# This test doesn't work with the embedded version as this code
# assumes that one query is running while we are doing queries on
# a second connection.
# This would work if mysqltest run would be threaded and handle each
# connection in a separate thread.
#
--
source
include
/
not_embedded
.
inc
# PS causes different statistics
# PS causes different statistics
--
disable_ps_protocol
--
disable_ps_protocol
...
...
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