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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
70e22876
Commit
70e22876
authored
Nov 20, 2007
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into mysql.com:/home/psergey/mysql-5.1-bug30573
parents
0b22925c
2eaa6352
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
58 additions
and
25 deletions
+58
-25
.bzrignore
.bzrignore
+3
-0
include/mysql_embed.h
include/mysql_embed.h
+0
-1
libmysqld/CMakeLists.txt
libmysqld/CMakeLists.txt
+1
-1
libmysqld/lib_sql.cc
libmysqld/lib_sql.cc
+0
-1
mysql-test/r/windows.result
mysql-test/r/windows.result
+1
-0
mysql-test/t/windows.test
mysql-test/t/windows.test
+3
-0
sql/mysql_priv.h
sql/mysql_priv.h
+36
-0
sql/mysqld.cc
sql/mysqld.cc
+2
-1
sql/sql_parse.cc
sql/sql_parse.cc
+2
-18
sql/sql_table.cc
sql/sql_table.cc
+10
-3
No files found.
.bzrignore
View file @
70e22876
...
@@ -1137,6 +1137,7 @@ libmysqld/rpl_filter.cc
...
@@ -1137,6 +1137,7 @@ libmysqld/rpl_filter.cc
libmysqld/rpl_injector.cc
libmysqld/rpl_injector.cc
libmysqld/rpl_record.cc
libmysqld/rpl_record.cc
libmysqld/rpl_record_old.cc
libmysqld/rpl_record_old.cc
libmysqld/scheduler.cc
libmysqld/set_var.cc
libmysqld/set_var.cc
libmysqld/simple-test
libmysqld/simple-test
libmysqld/slave.cc
libmysqld/slave.cc
...
@@ -1153,6 +1154,7 @@ libmysqld/sql_builtin.cc
...
@@ -1153,6 +1154,7 @@ libmysqld/sql_builtin.cc
libmysqld/sql_cache.cc
libmysqld/sql_cache.cc
libmysqld/sql_class.cc
libmysqld/sql_class.cc
libmysqld/sql_command
libmysqld/sql_command
libmysqld/sql_connect.cc
libmysqld/sql_crypt.cc
libmysqld/sql_crypt.cc
libmysqld/sql_cursor.cc
libmysqld/sql_cursor.cc
libmysqld/sql_cursor.h
libmysqld/sql_cursor.h
...
@@ -1183,6 +1185,7 @@ libmysqld/sql_show.cc
...
@@ -1183,6 +1185,7 @@ libmysqld/sql_show.cc
libmysqld/sql_state.c
libmysqld/sql_state.c
libmysqld/sql_string.cc
libmysqld/sql_string.cc
libmysqld/sql_table.cc
libmysqld/sql_table.cc
libmysqld/sql_tablespace.cc
libmysqld/sql_test.cc
libmysqld/sql_test.cc
libmysqld/sql_trigger.cc
libmysqld/sql_trigger.cc
libmysqld/sql_udf.cc
libmysqld/sql_udf.cc
...
...
include/mysql_embed.h
View file @
70e22876
...
@@ -21,7 +21,6 @@
...
@@ -21,7 +21,6 @@
/* TODO HF add #undef HAVE_VIO if we don't want client in embedded library */
/* TODO HF add #undef HAVE_VIO if we don't want client in embedded library */
#undef HAVE_PSTACK
/* No stacktrace */
#undef HAVE_PSTACK
/* No stacktrace */
#undef HAVE_DLOPEN
/* No udf functions */
#undef HAVE_OPENSSL
#undef HAVE_OPENSSL
#undef HAVE_SMEM
/* No shared memory */
#undef HAVE_SMEM
/* No shared memory */
#undef HAVE_NDBCLUSTER_DB
/* No NDB cluster */
#undef HAVE_NDBCLUSTER_DB
/* No NDB cluster */
...
...
libmysqld/CMakeLists.txt
View file @
70e22876
...
@@ -22,7 +22,7 @@ IF(WIN32)
...
@@ -22,7 +22,7 @@ IF(WIN32)
ADD_DEFINITIONS
(
-DUSE_TLS
)
ADD_DEFINITIONS
(
-DUSE_TLS
)
ENDIF
(
WIN32
)
ENDIF
(
WIN32
)
ADD_DEFINITIONS
(
-DMYSQL_SERVER -DEMBEDDED_LIBRARY
)
ADD_DEFINITIONS
(
-DMYSQL_SERVER -DEMBEDDED_LIBRARY
-DHAVE_DLOPEN
)
INCLUDE_DIRECTORIES
(
${
CMAKE_SOURCE_DIR
}
/include
INCLUDE_DIRECTORIES
(
${
CMAKE_SOURCE_DIR
}
/include
${
CMAKE_SOURCE_DIR
}
/libmysqld
${
CMAKE_SOURCE_DIR
}
/libmysqld
...
...
libmysqld/lib_sql.cc
View file @
70e22876
...
@@ -546,7 +546,6 @@ void end_embedded_server()
...
@@ -546,7 +546,6 @@ void end_embedded_server()
{
{
my_free
((
char
*
)
copy_arguments_ptr
,
MYF
(
MY_ALLOW_ZERO_PTR
));
my_free
((
char
*
)
copy_arguments_ptr
,
MYF
(
MY_ALLOW_ZERO_PTR
));
copy_arguments_ptr
=
0
;
copy_arguments_ptr
=
0
;
release_ddl_log
();
clean_up
(
0
);
clean_up
(
0
);
}
}
...
...
mysql-test/r/windows.result
View file @
70e22876
...
@@ -19,6 +19,7 @@ id select_type table type possible_keys key key_len ref rows Extra
...
@@ -19,6 +19,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
End of 5.0 tests.
End of 5.0 tests.
drop procedure if exists proc_1;
create procedure proc_1() install plugin my_plug soname '\\root\\some_plugin.dll';
create procedure proc_1() install plugin my_plug soname '\\root\\some_plugin.dll';
call proc_1();
call proc_1();
ERROR HY000: No paths allowed for shared library
ERROR HY000: No paths allowed for shared library
...
...
mysql-test/t/windows.test
View file @
70e22876
...
@@ -36,6 +36,9 @@ EXPLAIN SELECT * FROM t1 WHERE b = (SELECT max(2));
...
@@ -36,6 +36,9 @@ EXPLAIN SELECT * FROM t1 WHERE b = (SELECT max(2));
--
echo
End
of
5.0
tests
.
--
echo
End
of
5.0
tests
.
--
disable_warnings
drop
procedure
if
exists
proc_1
;
--
enable_warnings
#
#
# Bug #20665: All commands supported in Stored Procedures should work in
# Bug #20665: All commands supported in Stored Procedures should work in
# Prepared Statements
# Prepared Statements
...
...
sql/mysql_priv.h
View file @
70e22876
...
@@ -680,6 +680,8 @@ void free_items(Item *item);
...
@@ -680,6 +680,8 @@ void free_items(Item *item);
void
cleanup_items
(
Item
*
item
);
void
cleanup_items
(
Item
*
item
);
class
THD
;
class
THD
;
void
close_thread_tables
(
THD
*
thd
);
void
close_thread_tables
(
THD
*
thd
);
#ifndef NO_EMBEDDED_ACCESS_CHECKS
bool
check_one_table_access
(
THD
*
thd
,
ulong
privilege
,
TABLE_LIST
*
tables
);
bool
check_one_table_access
(
THD
*
thd
,
ulong
privilege
,
TABLE_LIST
*
tables
);
bool
check_single_table_access
(
THD
*
thd
,
ulong
privilege
,
bool
check_single_table_access
(
THD
*
thd
,
ulong
privilege
,
TABLE_LIST
*
tables
,
bool
no_errors
);
TABLE_LIST
*
tables
,
bool
no_errors
);
...
@@ -688,6 +690,24 @@ bool check_routine_access(THD *thd,ulong want_access,char *db,char *name,
...
@@ -688,6 +690,24 @@ bool check_routine_access(THD *thd,ulong want_access,char *db,char *name,
bool
check_some_access
(
THD
*
thd
,
ulong
want_access
,
TABLE_LIST
*
table
);
bool
check_some_access
(
THD
*
thd
,
ulong
want_access
,
TABLE_LIST
*
table
);
bool
check_merge_table_access
(
THD
*
thd
,
char
*
db
,
TABLE_LIST
*
table_list
);
bool
check_merge_table_access
(
THD
*
thd
,
char
*
db
,
TABLE_LIST
*
table_list
);
bool
check_some_routine_access
(
THD
*
thd
,
const
char
*
db
,
const
char
*
name
,
bool
is_proc
);
bool
check_some_routine_access
(
THD
*
thd
,
const
char
*
db
,
const
char
*
name
,
bool
is_proc
);
#else
inline
bool
check_one_table_access
(
THD
*
thd
,
ulong
privilege
,
TABLE_LIST
*
tables
)
{
return
false
;
}
inline
bool
check_single_table_access
(
THD
*
thd
,
ulong
privilege
,
TABLE_LIST
*
tables
,
bool
no_errors
)
{
return
false
;
}
inline
bool
check_routine_access
(
THD
*
thd
,
ulong
want_access
,
char
*
db
,
char
*
name
,
bool
is_proc
,
bool
no_errors
)
{
return
false
;
}
inline
bool
check_some_access
(
THD
*
thd
,
ulong
want_access
,
TABLE_LIST
*
table
)
{
return
false
;
}
inline
bool
check_merge_table_access
(
THD
*
thd
,
char
*
db
,
TABLE_LIST
*
table_list
)
{
return
false
;
}
inline
bool
check_some_routine_access
(
THD
*
thd
,
const
char
*
db
,
const
char
*
name
,
bool
is_proc
)
{
return
false
;
}
#endif
/*NO_EMBEDDED_ACCESS_CHECKS*/
bool
multi_update_precheck
(
THD
*
thd
,
TABLE_LIST
*
tables
);
bool
multi_update_precheck
(
THD
*
thd
,
TABLE_LIST
*
tables
);
bool
multi_delete_precheck
(
THD
*
thd
,
TABLE_LIST
*
tables
);
bool
multi_delete_precheck
(
THD
*
thd
,
TABLE_LIST
*
tables
);
bool
mysql_multi_update_prepare
(
THD
*
thd
);
bool
mysql_multi_update_prepare
(
THD
*
thd
);
...
@@ -991,11 +1011,27 @@ void kill_mysql(void);
...
@@ -991,11 +1011,27 @@ void kill_mysql(void);
void
close_connection
(
THD
*
thd
,
uint
errcode
,
bool
lock
);
void
close_connection
(
THD
*
thd
,
uint
errcode
,
bool
lock
);
bool
reload_acl_and_cache
(
THD
*
thd
,
ulong
options
,
TABLE_LIST
*
tables
,
bool
reload_acl_and_cache
(
THD
*
thd
,
ulong
options
,
TABLE_LIST
*
tables
,
bool
*
write_to_binlog
);
bool
*
write_to_binlog
);
#ifndef NO_EMBEDDED_ACCESS_CHECKS
bool
check_access
(
THD
*
thd
,
ulong
access
,
const
char
*
db
,
ulong
*
save_priv
,
bool
check_access
(
THD
*
thd
,
ulong
access
,
const
char
*
db
,
ulong
*
save_priv
,
bool
no_grant
,
bool
no_errors
,
bool
schema_db
);
bool
no_grant
,
bool
no_errors
,
bool
schema_db
);
bool
check_table_access
(
THD
*
thd
,
ulong
want_access
,
TABLE_LIST
*
tables
,
bool
check_table_access
(
THD
*
thd
,
ulong
want_access
,
TABLE_LIST
*
tables
,
bool
no_errors
);
bool
no_errors
);
bool
check_global_access
(
THD
*
thd
,
ulong
want_access
);
bool
check_global_access
(
THD
*
thd
,
ulong
want_access
);
#else
inline
bool
check_access
(
THD
*
thd
,
ulong
access
,
const
char
*
db
,
ulong
*
save_priv
,
bool
no_grant
,
bool
no_errors
,
bool
schema_db
)
{
if
(
save_priv
)
*
save_priv
=
GLOBAL_ACLS
;
return
false
;
}
inline
bool
check_table_access
(
THD
*
thd
,
ulong
want_access
,
TABLE_LIST
*
tables
,
bool
no_errors
)
{
return
false
;
}
inline
bool
check_global_access
(
THD
*
thd
,
ulong
want_access
)
{
return
false
;
}
#endif
/*NO_EMBEDDED_ACCESS_CHECKS*/
/*
/*
Support routine for SQL parser on partitioning syntax
Support routine for SQL parser on partitioning syntax
...
...
sql/mysqld.cc
View file @
70e22876
...
@@ -1164,6 +1164,8 @@ void clean_up(bool print_message)
...
@@ -1164,6 +1164,8 @@ void clean_up(bool print_message)
if
(
cleanup_done
++
)
if
(
cleanup_done
++
)
return
;
/* purecov: inspected */
return
;
/* purecov: inspected */
release_ddl_log
();
/*
/*
make sure that handlers finish up
make sure that handlers finish up
what they have that is dependent on the binlog
what they have that is dependent on the binlog
...
@@ -3995,7 +3997,6 @@ we force server id to 2, but this MySQL server will not act as a slave.");
...
@@ -3995,7 +3997,6 @@ we force server id to 2, but this MySQL server will not act as a slave.");
pthread_cond_wait
(
&
COND_thread_count
,
&
LOCK_thread_count
);
pthread_cond_wait
(
&
COND_thread_count
,
&
LOCK_thread_count
);
(
void
)
pthread_mutex_unlock
(
&
LOCK_thread_count
);
(
void
)
pthread_mutex_unlock
(
&
LOCK_thread_count
);
release_ddl_log
();
#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY)
#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY)
if
(
Service
.
IsNT
()
&&
start_mode
)
if
(
Service
.
IsNT
()
&&
start_mode
)
Service
.
Stop
();
Service
.
Stop
();
...
...
sql/sql_parse.cc
View file @
70e22876
...
@@ -3890,14 +3890,12 @@ create_sp_error:
...
@@ -3890,14 +3890,12 @@ create_sp_error:
thd
->
server_status
|=
SERVER_MORE_RESULTS_EXISTS
;
thd
->
server_status
|=
SERVER_MORE_RESULTS_EXISTS
;
}
}
#ifndef NO_EMBEDDED_ACCESS_CHECKS
if
(
check_routine_access
(
thd
,
EXECUTE_ACL
,
if
(
check_routine_access
(
thd
,
EXECUTE_ACL
,
sp
->
m_db
.
str
,
sp
->
m_name
.
str
,
TRUE
,
FALSE
))
sp
->
m_db
.
str
,
sp
->
m_name
.
str
,
TRUE
,
FALSE
))
{
{
thd
->
net
.
no_send_ok
=
save_no_send_ok
;
thd
->
net
.
no_send_ok
=
save_no_send_ok
;
goto
error
;
goto
error
;
}
}
#endif
select_limit
=
thd
->
variables
.
select_limit
;
select_limit
=
thd
->
variables
.
select_limit
;
thd
->
variables
.
select_limit
=
HA_POS_ERROR
;
thd
->
variables
.
select_limit
=
HA_POS_ERROR
;
...
@@ -4577,6 +4575,7 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
...
@@ -4577,6 +4575,7 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
}
}
#ifndef NO_EMBEDDED_ACCESS_CHECKS
/*
/*
Check grants for commands which work only with one table.
Check grants for commands which work only with one table.
...
@@ -4694,7 +4693,6 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
...
@@ -4694,7 +4693,6 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
bool
dont_check_global_grants
,
bool
no_errors
,
bool
schema_db
)
bool
dont_check_global_grants
,
bool
no_errors
,
bool
schema_db
)
{
{
Security_context
*
sctx
=
thd
->
security_ctx
;
Security_context
*
sctx
=
thd
->
security_ctx
;
#ifndef NO_EMBEDDED_ACCESS_CHECKS
ulong
db_access
;
ulong
db_access
;
/*
/*
GRANT command:
GRANT command:
...
@@ -4707,7 +4705,6 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
...
@@ -4707,7 +4705,6 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
*/
*/
bool
db_is_pattern
=
(
test
(
want_access
&
GRANT_ACL
)
&&
bool
db_is_pattern
=
(
test
(
want_access
&
GRANT_ACL
)
&&
dont_check_global_grants
);
dont_check_global_grants
);
#endif
ulong
dummy
;
ulong
dummy
;
DBUG_ENTER
(
"check_access"
);
DBUG_ENTER
(
"check_access"
);
DBUG_PRINT
(
"enter"
,(
"db: %s want_access: %lu master_access: %lu"
,
DBUG_PRINT
(
"enter"
,(
"db: %s want_access: %lu master_access: %lu"
,
...
@@ -4746,9 +4743,6 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
...
@@ -4746,9 +4743,6 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
}
}
}
}
#ifdef NO_EMBEDDED_ACCESS_CHECKS
DBUG_RETURN
(
0
);
#else
if
((
sctx
->
master_access
&
want_access
)
==
want_access
)
if
((
sctx
->
master_access
&
want_access
)
==
want_access
)
{
{
/*
/*
...
@@ -4806,7 +4800,6 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
...
@@ -4806,7 +4800,6 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
thd
->
db
:
thd
->
db
:
"unknown"
)));
/* purecov: tested */
"unknown"
)));
/* purecov: tested */
DBUG_RETURN
(
TRUE
);
/* purecov: tested */
DBUG_RETURN
(
TRUE
);
/* purecov: tested */
#endif
/* NO_EMBEDDED_ACCESS_CHECKS */
}
}
...
@@ -4831,16 +4824,12 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
...
@@ -4831,16 +4824,12 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
bool
check_global_access
(
THD
*
thd
,
ulong
want_access
)
bool
check_global_access
(
THD
*
thd
,
ulong
want_access
)
{
{
#ifdef NO_EMBEDDED_ACCESS_CHECKS
return
0
;
#else
char
command
[
128
];
char
command
[
128
];
if
((
thd
->
security_ctx
->
master_access
&
want_access
))
if
((
thd
->
security_ctx
->
master_access
&
want_access
))
return
0
;
return
0
;
get_privilege_desc
(
command
,
sizeof
(
command
),
want_access
);
get_privilege_desc
(
command
,
sizeof
(
command
),
want_access
);
my_error
(
ER_SPECIFIC_ACCESS_DENIED_ERROR
,
MYF
(
0
),
command
);
my_error
(
ER_SPECIFIC_ACCESS_DENIED_ERROR
,
MYF
(
0
),
command
);
return
1
;
return
1
;
#endif
/* NO_EMBEDDED_ACCESS_CHECKS */
}
}
...
@@ -4930,9 +4919,7 @@ bool
...
@@ -4930,9 +4919,7 @@ bool
check_table_access
(
THD
*
thd
,
ulong
want_access
,
TABLE_LIST
*
tables
,
check_table_access
(
THD
*
thd
,
ulong
want_access
,
TABLE_LIST
*
tables
,
bool
no_errors
)
bool
no_errors
)
{
{
#ifndef NO_EMBEDDED_ACCESS_CHECKS
TABLE_LIST
*
org_tables
=
tables
;
TABLE_LIST
*
org_tables
=
tables
;
#endif
TABLE_LIST
*
first_not_own_table
=
thd
->
lex
->
first_not_own_table
();
TABLE_LIST
*
first_not_own_table
=
thd
->
lex
->
first_not_own_table
();
Security_context
*
sctx
=
thd
->
security_ctx
,
*
backup_ctx
=
thd
->
security_ctx
;
Security_context
*
sctx
=
thd
->
security_ctx
,
*
backup_ctx
=
thd
->
security_ctx
;
/*
/*
...
@@ -5019,11 +5006,7 @@ check_routine_access(THD *thd, ulong want_access,char *db, char *name,
...
@@ -5019,11 +5006,7 @@ check_routine_access(THD *thd, ulong want_access,char *db, char *name,
0
,
no_errors
,
0
))
0
,
no_errors
,
0
))
return
TRUE
;
return
TRUE
;
#ifndef NO_EMBEDDED_ACCESS_CHECKS
return
check_grant_routine
(
thd
,
want_access
,
tables
,
is_proc
,
no_errors
);
return
check_grant_routine
(
thd
,
want_access
,
tables
,
is_proc
,
no_errors
);
#else
return
FALSE
;
#endif
}
}
...
@@ -5113,6 +5096,7 @@ bool check_merge_table_access(THD *thd, char *db,
...
@@ -5113,6 +5096,7 @@ bool check_merge_table_access(THD *thd, char *db,
return
error
;
return
error
;
}
}
#endif
/*NO_EMBEDDED_ACCESS_CHECKS*/
/****************************************************************************
/****************************************************************************
Check stack size; Send error if there isn't enough stack to continue
Check stack size; Send error if there isn't enough stack to continue
...
...
sql/sql_table.cc
View file @
70e22876
...
@@ -279,7 +279,7 @@ uint build_tmptable_filename(THD* thd, char *buff, size_t bufflen)
...
@@ -279,7 +279,7 @@ uint build_tmptable_filename(THD* thd, char *buff, size_t bufflen)
*/
*/
typedef
struct
st_global_ddl_log
struct
st_global_ddl_log
{
{
/*
/*
We need to adjust buffer size to be able to handle downgrades/upgrades
We need to adjust buffer size to be able to handle downgrades/upgrades
...
@@ -297,10 +297,12 @@ typedef struct st_global_ddl_log
...
@@ -297,10 +297,12 @@ typedef struct st_global_ddl_log
uint
name_len
;
uint
name_len
;
uint
io_size
;
uint
io_size
;
bool
inited
;
bool
inited
;
bool
do_release
;
bool
recovery_phase
;
bool
recovery_phase
;
}
GLOBAL_DDL_LOG
;
st_global_ddl_log
()
:
inited
(
false
),
do_release
(
false
)
{}
};
GLOBAL_DDL_LOG
global_ddl_log
;
st_global_ddl_log
global_ddl_log
;
pthread_mutex_t
LOCK_gdl
;
pthread_mutex_t
LOCK_gdl
;
...
@@ -460,6 +462,7 @@ static uint read_ddl_log_header()
...
@@ -460,6 +462,7 @@ static uint read_ddl_log_header()
global_ddl_log
.
first_used
=
NULL
;
global_ddl_log
.
first_used
=
NULL
;
global_ddl_log
.
num_entries
=
0
;
global_ddl_log
.
num_entries
=
0
;
VOID
(
pthread_mutex_init
(
&
LOCK_gdl
,
MY_MUTEX_INIT_FAST
));
VOID
(
pthread_mutex_init
(
&
LOCK_gdl
,
MY_MUTEX_INIT_FAST
));
global_ddl_log
.
do_release
=
true
;
DBUG_RETURN
(
entry_no
);
DBUG_RETURN
(
entry_no
);
}
}
...
@@ -1150,6 +1153,9 @@ void release_ddl_log()
...
@@ -1150,6 +1153,9 @@ void release_ddl_log()
DDL_LOG_MEMORY_ENTRY
*
used_list
=
global_ddl_log
.
first_used
;
DDL_LOG_MEMORY_ENTRY
*
used_list
=
global_ddl_log
.
first_used
;
DBUG_ENTER
(
"release_ddl_log"
);
DBUG_ENTER
(
"release_ddl_log"
);
if
(
!
global_ddl_log
.
do_release
)
DBUG_VOID_RETURN
;
pthread_mutex_lock
(
&
LOCK_gdl
);
pthread_mutex_lock
(
&
LOCK_gdl
);
while
(
used_list
)
while
(
used_list
)
{
{
...
@@ -1167,6 +1173,7 @@ void release_ddl_log()
...
@@ -1167,6 +1173,7 @@ void release_ddl_log()
global_ddl_log
.
inited
=
0
;
global_ddl_log
.
inited
=
0
;
pthread_mutex_unlock
(
&
LOCK_gdl
);
pthread_mutex_unlock
(
&
LOCK_gdl
);
VOID
(
pthread_mutex_destroy
(
&
LOCK_gdl
));
VOID
(
pthread_mutex_destroy
(
&
LOCK_gdl
));
global_ddl_log
.
do_release
=
false
;
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
}
}
...
...
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