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
ebff4ea3
Commit
ebff4ea3
authored
Dec 08, 2008
by
Alexey Kopytov
Browse files
Options
Browse Files
Download
Plain Diff
Pull from mysql-5.1-bugteam.
parents
6aa4125b
a10c3ff2
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
184 additions
and
221 deletions
+184
-221
client/mysql.cc
client/mysql.cc
+2
-0
dbug/dbug.c
dbug/dbug.c
+1
-16
include/my_dbug.h
include/my_dbug.h
+0
-16
libmysql/libmysql.c
libmysql/libmysql.c
+1
-3
libmysqld/examples/CMakeLists.txt
libmysqld/examples/CMakeLists.txt
+3
-3
libmysqld/lib_sql.cc
libmysqld/lib_sql.cc
+2
-6
libmysqld/libmysqld.def
libmysqld/libmysqld.def
+0
-126
mysql-test/r/innodb_mysql.result
mysql-test/r/innodb_mysql.result
+85
-0
mysql-test/t/disabled.def
mysql-test/t/disabled.def
+1
-0
mysql-test/t/innodb_mysql.test
mysql-test/t/innodb_mysql.test
+39
-0
mysys/my_thr_init.c
mysys/my_thr_init.c
+1
-11
sql/mysql_priv.h
sql/mysql_priv.h
+3
-4
sql/mysqld.cc
sql/mysqld.cc
+2
-22
sql/sql_manager.cc
sql/sql_manager.cc
+41
-13
sql/table.cc
sql/table.cc
+3
-1
No files found.
client/mysql.cc
View file @
ebff4ea3
...
@@ -1627,8 +1627,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
...
@@ -1627,8 +1627,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
opt_nopager
=
1
;
opt_nopager
=
1
;
break
;
break
;
case
OPT_MYSQL_PROTOCOL
:
case
OPT_MYSQL_PROTOCOL
:
#ifndef EMBEDDED_LIBRARY
opt_protocol
=
find_type_or_exit
(
argument
,
&
sql_protocol_typelib
,
opt_protocol
=
find_type_or_exit
(
argument
,
&
sql_protocol_typelib
,
opt
->
name
);
opt
->
name
);
#endif
break
;
break
;
case
OPT_SERVER_ARG
:
case
OPT_SERVER_ARG
:
#ifdef EMBEDDED_LIBRARY
#ifdef EMBEDDED_LIBRARY
...
...
dbug/dbug.c
View file @
ebff4ea3
...
@@ -1851,13 +1851,7 @@ static void DBUGOpenFile(CODE_STATE *cs,
...
@@ -1851,13 +1851,7 @@ static void DBUGOpenFile(CODE_STATE *cs,
else
else
{
{
newfile
=
!
EXISTS
(
name
);
newfile
=
!
EXISTS
(
name
);
if
(
!
(
fp
=
fopen
(
name
,
if
(
!
(
fp
=
fopen
(
name
,
append
?
"a+"
:
"w"
)))
#if defined(MSDOS) || defined(__WIN__)
append
?
"a+c"
:
"wc"
#else
append
?
"a+"
:
"w"
#endif
)))
{
{
(
void
)
fprintf
(
stderr
,
ERR_OPEN
,
cs
->
process
,
name
);
(
void
)
fprintf
(
stderr
,
ERR_OPEN
,
cs
->
process
,
name
);
perror
(
""
);
perror
(
""
);
...
@@ -2407,13 +2401,4 @@ int i_am_a_dummy_function() {
...
@@ -2407,13 +2401,4 @@ int i_am_a_dummy_function() {
return
0
;
return
0
;
}
}
#ifdef __WIN__
char
_db_doprnt_
;
char
_db_enter_
;
char
_db_pargs_
;
char
_db_process_
;
char
_db_push_
;
char
_db_return_
;
#endif
/*__WIN__*/
#endif
#endif
include/my_dbug.h
View file @
ebff4ea3
...
@@ -108,22 +108,6 @@ extern FILE *_db_fp_(void);
...
@@ -108,22 +108,6 @@ extern FILE *_db_fp_(void);
#define DBUG_EXPLAIN(buf,len)
#define DBUG_EXPLAIN(buf,len)
#define DBUG_EXPLAIN_INITIAL(buf,len)
#define DBUG_EXPLAIN_INITIAL(buf,len)
#define IF_DBUG(A)
#define IF_DBUG(A)
#ifdef __WIN__
/*
On windows all the dll export has to be declared in the *.def file
so as we export these symbols in DEBUG mode we have to export
these in the RELEASE mode also. So below are the dummy symbols
for the RELEASE export
*/
extern
char
_db_doprnt_
;
extern
char
_db_enter_
;
extern
char
_db_pargs_
;
extern
char
_db_process_
;
extern
char
_db_push_
;
extern
char
_db_return_
;
#endif
/*__WIN__*/
#endif
#endif
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
libmysql/libmysql.c
View file @
ebff4ea3
...
@@ -207,9 +207,7 @@ void STDCALL mysql_server_end()
...
@@ -207,9 +207,7 @@ void STDCALL mysql_server_end()
/* If library called my_init(), free memory allocated by it */
/* If library called my_init(), free memory allocated by it */
if
(
!
org_my_init_done
)
if
(
!
org_my_init_done
)
{
{
my_end
(
MY_DONT_FREE_DBUG
);
my_end
(
0
);
/* Remove TRACING, if enabled by mysql_debug() */
DBUG_POP
();
}
}
else
else
{
{
...
...
libmysqld/examples/CMakeLists.txt
View file @
ebff4ea3
...
@@ -29,13 +29,13 @@ ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
...
@@ -29,13 +29,13 @@ ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
ADD_EXECUTABLE
(
mysql_embedded ../../client/completion_hash.cc
ADD_EXECUTABLE
(
mysql_embedded ../../client/completion_hash.cc
../../client/mysql.cc ../../client/readline.cc
../../client/mysql.cc ../../client/readline.cc
../../client/sql_string.cc
)
../../client/sql_string.cc
)
TARGET_LINK_LIBRARIES
(
mysql_embedded
wsock
32
)
TARGET_LINK_LIBRARIES
(
mysql_embedded
debug dbug strings mysys vio yassl taocrypt regex ws2_
32
)
ADD_DEPENDENCIES
(
mysql_embedded libmysqld
)
ADD_DEPENDENCIES
(
mysql_embedded libmysqld
)
ADD_EXECUTABLE
(
mysqltest_embedded ../../client/mysqltest.c
)
ADD_EXECUTABLE
(
mysqltest_embedded ../../client/mysqltest.c
)
TARGET_LINK_LIBRARIES
(
mysqltest_embedded
wsock
32
)
TARGET_LINK_LIBRARIES
(
mysqltest_embedded
debug dbug strings mysys vio yassl taocrypt regex ws2_
32
)
ADD_DEPENDENCIES
(
mysqltest_embedded libmysqld
)
ADD_DEPENDENCIES
(
mysqltest_embedded libmysqld
)
ADD_EXECUTABLE
(
mysql_client_test_embedded ../../tests/mysql_client_test.c
)
ADD_EXECUTABLE
(
mysql_client_test_embedded ../../tests/mysql_client_test.c
)
TARGET_LINK_LIBRARIES
(
mysql_client_test_embedded
wsock
32
)
TARGET_LINK_LIBRARIES
(
mysql_client_test_embedded
debug dbug strings mysys vio yassl taocrypt regex ws2_
32
)
ADD_DEPENDENCIES
(
mysql_client_test_embedded libmysqld
)
ADD_DEPENDENCIES
(
mysql_client_test_embedded libmysqld
)
libmysqld/lib_sql.cc
View file @
ebff4ea3
...
@@ -386,6 +386,7 @@ static void emb_free_embedded_thd(MYSQL *mysql)
...
@@ -386,6 +386,7 @@ static void emb_free_embedded_thd(MYSQL *mysql)
thd
->
store_globals
();
thd
->
store_globals
();
thd
->
unlink
();
thd
->
unlink
();
delete
thd
;
delete
thd
;
my_pthread_setspecific_ptr
(
THR_THD
,
0
);
mysql
->
thd
=
0
;
mysql
->
thd
=
0
;
}
}
...
@@ -539,12 +540,7 @@ int init_embedded_server(int argc, char **argv, char **groups)
...
@@ -539,12 +540,7 @@ int init_embedded_server(int argc, char **argv, char **groups)
(
void
)
thr_setconcurrency
(
concurrency
);
// 10 by default
(
void
)
thr_setconcurrency
(
concurrency
);
// 10 by default
if
(
flush_time
&&
flush_time
!=
~
(
ulong
)
0L
)
start_handle_manager
();
{
pthread_t
hThread
;
if
(
pthread_create
(
&
hThread
,
&
connection_attrib
,
handle_manager
,
0
))
sql_print_error
(
"Warning: Can't create thread to manage maintenance"
);
}
// FIXME initialize binlog_filter and rpl_filter if not already done
// FIXME initialize binlog_filter and rpl_filter if not already done
// corresponding delete is in clean_up()
// corresponding delete is in clean_up()
...
...
libmysqld/libmysqld.def
View file @
ebff4ea3
...
@@ -2,94 +2,6 @@ LIBRARY LIBMYSQLD
...
@@ -2,94 +2,6 @@ LIBRARY LIBMYSQLD
DESCRIPTION 'MySQL 5.1 Embedded Server Library'
DESCRIPTION 'MySQL 5.1 Embedded Server Library'
VERSION 5.1
VERSION 5.1
EXPORTS
EXPORTS
_db_process_
_db_enter_
_db_return_
_db_push_
_db_doprnt_
_db_pargs_
strnmov
get_charset
my_memmem
my_snprintf
pthread_exit
pthread_cond_signal
dynstr_append_mem
init_dynamic_string
dynstr_free
my_hash_free
my_vsnprintf
dynstr_append
my_close
my_open
dynstr_set
dynstr_append_os_quoted
my_delete
my_seek
my_write
create_temp_file
fn_format
dirname_part
my_hash_insert
my_hash_search
test_if_hard_path
my_copy
my_mkdir
my_sleep
my_strtod
pthread_cond_wait
my_strnncoll_simple
get_dynamic
my_regerror
init_dynamic_array2
pthread_create
pthread_cond_init
my_regcomp
my_regexec
my_regex_end
my_regfree
longlong2str
my_set_exception_pointers
my_print_stacktrace
my_thread_stack_size
my_safe_print_str
my_stat
_my_hash_init
pthread_attr_setstacksize
pthread_attr_init
my_dirend
wild_compare
my_dir
my_micro_time
find_type_or_exit
_dig_vec_upper
_dig_vec_lower
bmove_upp
delete_dynamic
free_defaults
getopt_compare_strings
getopt_ull_limit_value
handle_options
init_dynamic_array
insert_dynamic
int2str
is_prefix
list_add
list_delete
load_defaults
max_allowed_packet
my_cgets
my_end
my_getopt_print_errors
my_init
my_malloc
my_memdup
my_no_flags_free
my_path
my_print_help
my_print_variables
my_realloc
my_strdup
mysql_thread_end
mysql_thread_end
mysql_thread_init
mysql_thread_init
myodbc_remove_escape
myodbc_remove_escape
...
@@ -162,47 +74,13 @@ EXPORTS
...
@@ -162,47 +74,13 @@ EXPORTS
mysql_thread_safe
mysql_thread_safe
mysql_use_result
mysql_use_result
mysql_warning_count
mysql_warning_count
set_dynamic
strcend
strcont
strdup_root
strfill
strinstr
strmake
strmov
strxmov
mysql_server_end
mysql_server_end
mysql_server_init
mysql_server_init
get_tty_password
get_tty_password
sql_protocol_typelib
mysql_get_server_version
mysql_get_server_version
mysql_set_character_set
mysql_set_character_set
mysql_sqlstate
mysql_sqlstate
charsets_dir
disabled_my_option
my_charset_latin1
init_alloc_root
my_progname
get_charset_name
get_charset_by_csname
print_defaults
find_type
strxnmov
strend
my_fopen
my_fclose
unpack_filename
str2int
int10_to_str
longlong10_to_str
my_snprintf_8bit
alloc_root
free_root
my_read
llstr
mysql_get_parameters
mysql_get_parameters
mysql_thread_init
mysql_thread_end
mysql_stmt_bind_param
mysql_stmt_bind_param
mysql_stmt_bind_result
mysql_stmt_bind_result
mysql_stmt_execute
mysql_stmt_execute
...
@@ -230,7 +108,3 @@ EXPORTS
...
@@ -230,7 +108,3 @@ EXPORTS
mysql_stmt_attr_get
mysql_stmt_attr_get
mysql_stmt_attr_set
mysql_stmt_attr_set
mysql_stmt_field_count
mysql_stmt_field_count
get_defaults_options
my_charset_bin
my_charset_same
modify_defaults_file
mysql-test/r/innodb_mysql.result
View file @
ebff4ea3
...
@@ -1683,3 +1683,88 @@ CREATE INDEX i1 on t1 (a(3));
...
@@ -1683,3 +1683,88 @@ CREATE INDEX i1 on t1 (a(3));
SELECT * FROM t1 WHERE a = 'abcde';
SELECT * FROM t1 WHERE a = 'abcde';
a
a
DROP TABLE t1;
DROP TABLE t1;
CREATE TABLE foo (a int, b int, c char(10),
PRIMARY KEY (c(3)),
KEY b (b)
) engine=innodb;
CREATE TABLE foo2 (a int, b int, c char(10),
PRIMARY KEY (c),
KEY b (b)
) engine=innodb;
CREATE TABLE bar (a int, b int, c char(10),
PRIMARY KEY (c(3)),
KEY b (b)
) engine=myisam;
INSERT INTO foo VALUES
(1,2,'abcdefghij'), (2,3,''), (3,4,'klmnopqrst'),
(4,5,'uvwxyz'), (5,6,'meotnsyglt'), (4,5,'asfdewe');
INSERT INTO bar SELECT * FROM foo;
INSERT INTO foo2 SELECT * FROM foo;
EXPLAIN SELECT c FROM bar WHERE b>2;;
id 1
select_type SIMPLE
table bar
type ALL
possible_keys b
key NULL
key_len NULL
ref NULL
rows 6
Extra Using where
EXPLAIN SELECT c FROM foo WHERE b>2;;
id 1
select_type SIMPLE
table foo
type ALL
possible_keys b
key NULL
key_len NULL
ref NULL
rows 6
Extra Using where
EXPLAIN SELECT c FROM foo2 WHERE b>2;;
id 1
select_type SIMPLE
table foo2
type range
possible_keys b
key b
key_len 5
ref NULL
rows 3
Extra Using where; Using index
EXPLAIN SELECT c FROM bar WHERE c>2;;
id 1
select_type SIMPLE
table bar
type ALL
possible_keys PRIMARY
key NULL
key_len NULL
ref NULL
rows 6
Extra Using where
EXPLAIN SELECT c FROM foo WHERE c>2;;
id 1
select_type SIMPLE
table foo
type ALL
possible_keys PRIMARY
key NULL
key_len NULL
ref NULL
rows 6
Extra Using where
EXPLAIN SELECT c FROM foo2 WHERE c>2;;
id 1
select_type SIMPLE
table foo2
type index
possible_keys PRIMARY
key b
key_len 5
ref NULL
rows 6
Extra Using where; Using index
DROP TABLE foo, bar, foo2;
End of 5.1 tests
mysql-test/t/disabled.def
View file @
ebff4ea3
...
@@ -12,3 +12,4 @@
...
@@ -12,3 +12,4 @@
federated_transactions : Bug#29523 Transactions do not work
federated_transactions : Bug#29523 Transactions do not work
log_tables.test : Bug #37798: main.log_tables fails randomly on powermacg5 and windows
log_tables.test : Bug #37798: main.log_tables fails randomly on powermacg5 and windows
slow_query_log_func.test : Bug #37962: *_func tests containing sleeps/race conditions
slow_query_log_func.test : Bug #37962: *_func tests containing sleeps/race conditions
wait_timeout_func : Bug #41225 joro wait_timeout_func fails
mysql-test/t/innodb_mysql.test
View file @
ebff4ea3
...
@@ -53,3 +53,42 @@ CREATE TABLE t1 (a char(50)) ENGINE=InnoDB;
...
@@ -53,3 +53,42 @@ CREATE TABLE t1 (a char(50)) ENGINE=InnoDB;
CREATE
INDEX
i1
on
t1
(
a
(
3
));
CREATE
INDEX
i1
on
t1
(
a
(
3
));
SELECT
*
FROM
t1
WHERE
a
=
'abcde'
;
SELECT
*
FROM
t1
WHERE
a
=
'abcde'
;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
#
# Bug #37742: HA_EXTRA_KEYREAD flag is set when key contains only prefix of
# requested column
#
CREATE
TABLE
foo
(
a
int
,
b
int
,
c
char
(
10
),
PRIMARY
KEY
(
c
(
3
)),
KEY
b
(
b
)
)
engine
=
innodb
;
CREATE
TABLE
foo2
(
a
int
,
b
int
,
c
char
(
10
),
PRIMARY
KEY
(
c
),
KEY
b
(
b
)
)
engine
=
innodb
;
CREATE
TABLE
bar
(
a
int
,
b
int
,
c
char
(
10
),
PRIMARY
KEY
(
c
(
3
)),
KEY
b
(
b
)
)
engine
=
myisam
;
INSERT
INTO
foo
VALUES
(
1
,
2
,
'abcdefghij'
),
(
2
,
3
,
''
),
(
3
,
4
,
'klmnopqrst'
),
(
4
,
5
,
'uvwxyz'
),
(
5
,
6
,
'meotnsyglt'
),
(
4
,
5
,
'asfdewe'
);
INSERT
INTO
bar
SELECT
*
FROM
foo
;
INSERT
INTO
foo2
SELECT
*
FROM
foo
;
--
query_vertical
EXPLAIN
SELECT
c
FROM
bar
WHERE
b
>
2
;
--
query_vertical
EXPLAIN
SELECT
c
FROM
foo
WHERE
b
>
2
;
--
query_vertical
EXPLAIN
SELECT
c
FROM
foo2
WHERE
b
>
2
;
--
query_vertical
EXPLAIN
SELECT
c
FROM
bar
WHERE
c
>
2
;
--
query_vertical
EXPLAIN
SELECT
c
FROM
foo
WHERE
c
>
2
;
--
query_vertical
EXPLAIN
SELECT
c
FROM
foo2
WHERE
c
>
2
;
DROP
TABLE
foo
,
bar
,
foo2
;
--
echo
End
of
5.1
tests
mysys/my_thr_init.c
View file @
ebff4ea3
...
@@ -368,17 +368,7 @@ void my_thread_end(void)
...
@@ -368,17 +368,7 @@ void my_thread_end(void)
struct
st_my_thread_var
*
_my_thread_var
(
void
)
struct
st_my_thread_var
*
_my_thread_var
(
void
)
{
{
struct
st_my_thread_var
*
tmp
=
return
my_pthread_getspecific
(
struct
st_my_thread_var
*
,
THR_KEY_mysys
);
my_pthread_getspecific
(
struct
st_my_thread_var
*
,
THR_KEY_mysys
);
#if defined(USE_TLS)
/* This can only happen in a .DLL */
if
(
!
tmp
)
{
my_thread_init
();
tmp
=
my_pthread_getspecific
(
struct
st_my_thread_var
*
,
THR_KEY_mysys
);
}
#endif
return
tmp
;
}
}
...
...
sql/mysql_priv.h
View file @
ebff4ea3
...
@@ -1768,10 +1768,9 @@ int mysql_load(THD *thd, sql_exchange *ex, TABLE_LIST *table_list,
...
@@ -1768,10 +1768,9 @@ int mysql_load(THD *thd, sql_exchange *ex, TABLE_LIST *table_list,
int
write_record
(
THD
*
thd
,
TABLE
*
table
,
COPY_INFO
*
info
);
int
write_record
(
THD
*
thd
,
TABLE
*
table
,
COPY_INFO
*
info
);
/* sql_manager.cc */
/* sql_manager.cc */
extern
ulong
volatile
manager_status
;
extern
bool
volatile
mqh_used
;
extern
bool
volatile
manager_thread_in_use
,
mqh_used
;
void
start_handle_manager
();
extern
pthread_t
manager_thread
;
void
stop_handle_manager
();
pthread_handler_t
handle_manager
(
void
*
arg
);
bool
mysql_manager_submit
(
void
(
*
action
)());
bool
mysql_manager_submit
(
void
(
*
action
)());
...
...
sql/mysqld.cc
View file @
ebff4ea3
...
@@ -784,16 +784,6 @@ static void close_connections(void)
...
@@ -784,16 +784,6 @@ static void close_connections(void)
kill_cached_threads
++
;
kill_cached_threads
++
;
flush_thread_cache
();
flush_thread_cache
();
/* kill flush thread */
(
void
)
pthread_mutex_lock
(
&
LOCK_manager
);
if
(
manager_thread_in_use
)
{
DBUG_PRINT
(
"quit"
,
(
"killing manager thread: 0x%lx"
,
(
ulong
)
manager_thread
));
(
void
)
pthread_cond_signal
(
&
COND_manager
);
}
(
void
)
pthread_mutex_unlock
(
&
LOCK_manager
);
/* kill connection thread */
/* kill connection thread */
#if !defined(__WIN__) && !defined(__NETWARE__)
#if !defined(__WIN__) && !defined(__NETWARE__)
DBUG_PRINT
(
"quit"
,
(
"waiting for select thread: 0x%lx"
,
DBUG_PRINT
(
"quit"
,
(
"waiting for select thread: 0x%lx"
,
...
@@ -1196,6 +1186,7 @@ void clean_up(bool print_message)
...
@@ -1196,6 +1186,7 @@ void clean_up(bool print_message)
if
(
cleanup_done
++
)
if
(
cleanup_done
++
)
return
;
/* purecov: inspected */
return
;
/* purecov: inspected */
stop_handle_manager
();
release_ddl_log
();
release_ddl_log
();
/*
/*
...
@@ -4038,17 +4029,6 @@ server.");
...
@@ -4038,17 +4029,6 @@ server.");
#ifndef EMBEDDED_LIBRARY
#ifndef EMBEDDED_LIBRARY
static
void
create_maintenance_thread
()
{
if
(
flush_time
&&
flush_time
!=
~
(
ulong
)
0L
)
{
pthread_t
hThread
;
if
(
pthread_create
(
&
hThread
,
&
connection_attrib
,
handle_manager
,
0
))
sql_print_warning
(
"Can't create thread to manage maintenance"
);
}
}
static
void
create_shutdown_thread
()
static
void
create_shutdown_thread
()
{
{
#ifdef __WIN__
#ifdef __WIN__
...
@@ -4363,7 +4343,7 @@ we force server id to 2, but this MySQL server will not act as a slave.");
...
@@ -4363,7 +4343,7 @@ we force server id to 2, but this MySQL server will not act as a slave.");
execute_ddl_log_recovery
();
execute_ddl_log_recovery
();
create_shutdown_thread
();
create_shutdown_thread
();
create_maintenance_thread
();
start_handle_manager
();
if
(
Events
::
init
(
opt_noacl
))
if
(
Events
::
init
(
opt_noacl
))
unireg_abort
(
1
);
unireg_abort
(
1
);
...
...
sql/sql_manager.cc
View file @
ebff4ea3
...
@@ -23,8 +23,9 @@
...
@@ -23,8 +23,9 @@
#include "mysql_priv.h"
#include "mysql_priv.h"
ulong
volatile
manager_status
;
bool
volatile
manager_thread_in_use
;
static
bool
volatile
manager_thread_in_use
;
static
bool
abort_manager
;
pthread_t
manager_thread
;
pthread_t
manager_thread
;
pthread_mutex_t
LOCK_manager
;
pthread_mutex_t
LOCK_manager
;
...
@@ -63,7 +64,6 @@ bool mysql_manager_submit(void (*action)())
...
@@ -63,7 +64,6 @@ bool mysql_manager_submit(void (*action)())
pthread_handler_t
handle_manager
(
void
*
arg
__attribute__
((
unused
)))
pthread_handler_t
handle_manager
(
void
*
arg
__attribute__
((
unused
)))
{
{
int
error
=
0
;
int
error
=
0
;
ulong
status
;
struct
timespec
abstime
;
struct
timespec
abstime
;
bool
reset_flush_time
=
TRUE
;
bool
reset_flush_time
=
TRUE
;
struct
handler_cb
*
cb
=
NULL
;
struct
handler_cb
*
cb
=
NULL
;
...
@@ -72,7 +72,6 @@ pthread_handler_t handle_manager(void *arg __attribute__((unused)))
...
@@ -72,7 +72,6 @@ pthread_handler_t handle_manager(void *arg __attribute__((unused)))
pthread_detach_this_thread
();
pthread_detach_this_thread
();
manager_thread
=
pthread_self
();
manager_thread
=
pthread_self
();
manager_status
=
0
;
manager_thread_in_use
=
1
;
manager_thread_in_use
=
1
;
for
(;;)
for
(;;)
...
@@ -87,16 +86,14 @@ pthread_handler_t handle_manager(void *arg __attribute__((unused)))
...
@@ -87,16 +86,14 @@ pthread_handler_t handle_manager(void *arg __attribute__((unused)))
set_timespec
(
abstime
,
flush_time
);
set_timespec
(
abstime
,
flush_time
);
reset_flush_time
=
FALSE
;
reset_flush_time
=
FALSE
;
}
}
while
(
!
manager_status
&&
(
!
error
||
error
==
EINTR
)
&&
!
abort_loop
)
while
(
(
!
error
||
error
==
EINTR
)
&&
!
abort_manager
)
error
=
pthread_cond_timedwait
(
&
COND_manager
,
&
LOCK_manager
,
&
abstime
);
error
=
pthread_cond_timedwait
(
&
COND_manager
,
&
LOCK_manager
,
&
abstime
);
}
}
else
else
{
{
while
(
!
manager_status
&&
(
!
error
||
error
==
EINTR
)
&&
!
abort_loop
)
while
(
(
!
error
||
error
==
EINTR
)
&&
!
abort_manager
)
error
=
pthread_cond_wait
(
&
COND_manager
,
&
LOCK_manager
);
error
=
pthread_cond_wait
(
&
COND_manager
,
&
LOCK_manager
);
}
}
status
=
manager_status
;
manager_status
=
0
;
if
(
cb
==
NULL
)
if
(
cb
==
NULL
)
{
{
cb
=
cb_list
;
cb
=
cb_list
;
...
@@ -104,7 +101,7 @@ pthread_handler_t handle_manager(void *arg __attribute__((unused)))
...
@@ -104,7 +101,7 @@ pthread_handler_t handle_manager(void *arg __attribute__((unused)))
}
}
pthread_mutex_unlock
(
&
LOCK_manager
);
pthread_mutex_unlock
(
&
LOCK_manager
);
if
(
abort_
loop
)
if
(
abort_
manager
)
break
;
break
;
if
(
error
==
ETIMEDOUT
||
error
==
ETIME
)
if
(
error
==
ETIMEDOUT
||
error
==
ETIME
)
...
@@ -121,11 +118,42 @@ pthread_handler_t handle_manager(void *arg __attribute__((unused)))
...
@@ -121,11 +118,42 @@ pthread_handler_t handle_manager(void *arg __attribute__((unused)))
my_free
((
uchar
*
)
cb
,
MYF
(
0
));
my_free
((
uchar
*
)
cb
,
MYF
(
0
));
cb
=
next
;
cb
=
next
;
}
}
if
(
status
)
DBUG_PRINT
(
"error"
,
(
"manager did not handle something: %lx"
,
status
));
}
}
manager_thread_in_use
=
0
;
manager_thread_in_use
=
0
;
DBUG_LEAVE
;
// Can't use DBUG_RETURN after my_thread_end
my_thread_end
();
my_thread_end
();
DBUG_RETURN
(
NULL
);
return
(
NULL
);
}
}
/* Start handle manager thread */
void
start_handle_manager
()
{
DBUG_ENTER
(
"start_handle_manager"
);
abort_manager
=
false
;
if
(
flush_time
&&
flush_time
!=
~
(
ulong
)
0L
)
{
pthread_t
hThread
;
if
(
pthread_create
(
&
hThread
,
&
connection_attrib
,
handle_manager
,
0
))
sql_print_warning
(
"Can't create handle_manager thread"
);
}
DBUG_VOID_RETURN
;
}
/* Initiate shutdown of handle manager thread */
void
stop_handle_manager
()
{
DBUG_ENTER
(
"stop_handle_manager"
);
abort_manager
=
true
;
pthread_mutex_lock
(
&
LOCK_manager
);
if
(
manager_thread_in_use
)
{
DBUG_PRINT
(
"quit"
,
(
"initiate shutdown of handle manager thread: 0x%lx"
,
(
ulong
)
manager_thread
));
pthread_cond_signal
(
&
COND_manager
);
}
pthread_mutex_unlock
(
&
LOCK_manager
);
DBUG_VOID_RETURN
;
}
sql/table.cc
View file @
ebff4ea3
...
@@ -1416,6 +1416,8 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
...
@@ -1416,6 +1416,8 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
*/
*/
if
(
ha_option
&
HA_PRIMARY_KEY_IN_READ_INDEX
)
if
(
ha_option
&
HA_PRIMARY_KEY_IN_READ_INDEX
)
{
{
if
(
field
->
key_length
()
==
key_part
->
length
&&
!
(
field
->
flags
&
BLOB_FLAG
))
field
->
part_of_key
=
share
->
keys_in_use
;
field
->
part_of_key
=
share
->
keys_in_use
;
if
(
field
->
part_of_sortkey
.
is_set
(
key
))
if
(
field
->
part_of_sortkey
.
is_set
(
key
))
field
->
part_of_sortkey
=
share
->
keys_in_use
;
field
->
part_of_sortkey
=
share
->
keys_in_use
;
...
...
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