Loading configure.in +20 −16 Original line number Diff line number Diff line Loading @@ -455,46 +455,50 @@ fi AC_SUBST(ABI_CHECK) # Lock for PS # Look for PS usage. We use double dollar-signs in FIND_PROC because this # value is written to a makefile, which interprets away one level of # dollar-signs. So, interpretation stages are m4 and then shell in autoconf, # then Make, then shell. The autoconf substitution uses single quotes, so # no unprotected single quotes should appear in the expression. AC_PATH_PROG(PS, ps, ps) AC_MSG_CHECKING("how to check if pid exists") PS=$ac_cv_path_PS # Linux style if $PS p $$ 2> /dev/null | grep `echo $0 | sed s/\-//` > /dev/null if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null then FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS wwwp \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # Solaris elif $PS -fp $$ 2> /dev/null | grep $0 > /dev/null elif $PS -fp $$ 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS -p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # BSD style elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null elif $PS -uaxww 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" # SysV style elif $PS -ef 2> /dev/null | grep $0 > /dev/null elif $PS -ef 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -ef | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -ef | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" # Do anybody use this? elif $PS $$ 2> /dev/null | grep $0 > /dev/null elif $PS $$ 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" else case $SYSTEM_TYPE in *freebsd*|*dragonfly*) FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" ;; *darwin*) FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *cygwin*) FIND_PROC="$PS -e | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -e | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *netware*) FIND_PROC= ;; *) AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.]) AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this? See the Installation chapter in the Reference Manual.]) esac fi AC_SUBST(FIND_PROC) Loading Loading @@ -2036,7 +2040,7 @@ AC_CHECK_FUNCS(alarm bcmp bfill bmove bsearch bzero \ mkstemp mlockall perror poll pread pthread_attr_create mmap mmap64 getpagesize \ pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \ pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \ pthread_key_delete pthread_rwlock_rdlock pthread_setprio \ pthread_key_delete pthread_rwlock_rdlock pthread_setprio pthread_setschedprio \ pthread_setprio_np pthread_setschedparam pthread_sigmask readlink \ realpath rename rint rwlock_init setupterm \ shmget shmat shmdt shmctl sigaction sigemptyset sigaddset \ Loading include/hash.h +63 −25 Original line number Diff line number Diff line Loading @@ -21,6 +21,40 @@ extern "C" { #endif /* There was a problem on MacOSX with a shared object ha_example.so. It used hash_search(). During build of ha_example.so no libmysys was specified. Since MacOSX had a hash_search() in the system library, it built the shared object so that the dynamic linker linked hash_search() to the system library, which caused a crash when called. To come around this, we renamed hash_search() to my_hash_search(), as we did long ago with hash_insert() and hash_reset(). However, this time we made the move complete with all names. To keep compatibility, we redefine the old names. Since every C and C++ file, that uses HASH, needs to include this file, the change is complete. Both names could be used in the code, but the my_* versions are recommended now. */ #define hash_get_key my_hash_get_key #define hash_free_key my_hash_free_key #define hash_init my_hash_init #define hash_init2 my_hash_init2 #define _hash_init _my_hash_init #define hash_free my_hash_free #define hash_reset my_hash_reset #define hash_element my_hash_element #define hash_search my_hash_search #define hash_first my_hash_first #define hash_next my_hash_next #define hash_insert my_hash_insert #define hash_delete my_hash_delete #define hash_update my_hash_update #define hash_replace my_hash_replace #define hash_check my_hash_check #define hash_clear my_hash_clear #define hash_inited my_hash_inited #define hash_init_opt my_hash_init_opt /* Overhead to store an element in hash Can be used to approximate memory consumption for a hash Loading @@ -30,8 +64,8 @@ extern "C" { /* flags for hash_init */ #define HASH_UNIQUE 1 /* hash_insert fails on duplicate key */ typedef uchar *(*hash_get_key)(const uchar *,size_t*,my_bool); typedef void (*hash_free_key)(void *); typedef uchar *(*my_hash_get_key)(const uchar *,size_t*,my_bool); typedef void (*my_hash_free_key)(void *); typedef struct st_hash { size_t key_offset,key_length; /* Length of key if const length */ Loading @@ -39,7 +73,7 @@ typedef struct st_hash { ulong records; uint flags; DYNAMIC_ARRAY array; /* Place for hash_keys */ hash_get_key get_key; my_hash_get_key get_key; void (*free)(void *); CHARSET_INFO *charset; } HASH; Loading @@ -47,30 +81,34 @@ typedef struct st_hash { /* A search iterator state */ typedef uint HASH_SEARCH_STATE; #define hash_init(A,B,C,D,E,F,G,H) _hash_init(A,0,B,C,D,E,F,G,H CALLER_INFO) #define hash_init2(A,B,C,D,E,F,G,H,I) _hash_init(A,B,C,D,E,F,G,H,I CALLER_INFO) my_bool _hash_init(HASH *hash, uint growth_size,CHARSET_INFO *charset, #define my_hash_init(A,B,C,D,E,F,G,H) \ _my_hash_init(A,0,B,C,D,E,F,G,H CALLER_INFO) #define my_hash_init2(A,B,C,D,E,F,G,H,I) \ _my_hash_init(A,B,C,D,E,F,G,H,I CALLER_INFO) my_bool _my_hash_init(HASH *hash, uint growth_size, CHARSET_INFO *charset, ulong default_array_elements, size_t key_offset, size_t key_length, hash_get_key get_key, void (*free_element)(void*), uint flags CALLER_INFO_PROTO); void hash_free(HASH *tree); size_t key_length, my_hash_get_key get_key, void (*free_element)(void*), uint flags CALLER_INFO_PROTO); void my_hash_free(HASH *tree); void my_hash_reset(HASH *hash); uchar *hash_element(HASH *hash,ulong idx); uchar *hash_search(const HASH *info, const uchar *key, size_t length); uchar *hash_first(const HASH *info, const uchar *key, size_t length, uchar *my_hash_element(HASH *hash, ulong idx); uchar *my_hash_search(const HASH *info, const uchar *key, size_t length); uchar *my_hash_first(const HASH *info, const uchar *key, size_t length, HASH_SEARCH_STATE *state); uchar *hash_next(const HASH *info, const uchar *key, size_t length, uchar *my_hash_next(const HASH *info, const uchar *key, size_t length, HASH_SEARCH_STATE *state); my_bool my_hash_insert(HASH *info, const uchar *data); my_bool hash_delete(HASH *hash,uchar *record); my_bool hash_update(HASH *hash,uchar *record,uchar *old_key,size_t old_key_length); void hash_replace(HASH *hash, HASH_SEARCH_STATE *state, uchar *new_row); my_bool hash_check(HASH *hash); /* Only in debug library */ my_bool my_hash_delete(HASH *hash, uchar *record); my_bool my_hash_update(HASH *hash, uchar *record, uchar *old_key, size_t old_key_length); void my_hash_replace(HASH *hash, HASH_SEARCH_STATE *state, uchar *new_row); my_bool my_hash_check(HASH *hash); /* Only in debug library */ #define hash_clear(H) bzero((char*) (H),sizeof(*(H))) #define hash_inited(H) ((H)->array.buffer != 0) #define hash_init_opt(A,B,C,D,E,F,G,H) \ (!hash_inited(A) && _hash_init(A,0,B,C,D,E,F,G, H CALLER_INFO)) #define my_hash_clear(H) bzero((char*) (H), sizeof(*(H))) #define my_hash_inited(H) ((H)->array.buffer != 0) #define my_hash_init_opt(A,B,C,D,E,F,G,H) \ (!my_hash_inited(A) && _my_hash_init(A,0,B,C,D,E,F,G, H CALLER_INFO)) #ifdef __cplusplus } Loading include/my_pthread.h +3 −0 Original line number Diff line number Diff line Loading @@ -279,6 +279,8 @@ int sigwait(sigset_t *setp, int *sigp); /* Use our implemention */ #define my_pthread_setprio(A,B) pthread_setprio_np((A),(B)) #elif defined(HAVE_PTHREAD_SETPRIO) #define my_pthread_setprio(A,B) pthread_setprio((A),(B)) #elif defined(HAVE_PTHREAD_SETSCHEDPRIO) #define my_pthread_setprio(A,B) pthread_setschedprio((A),(B)) #else extern void my_pthread_setprio(pthread_t thread_id,int prior); #endif Loading Loading @@ -519,6 +521,7 @@ typedef struct st_my_pthread_fastmutex_t { pthread_mutex_t mutex; uint spins; uint rng_state; } my_pthread_fastmutex_t; void fastmutex_global_init(void); Loading mysql-test/extra/binlog_tests/binlog.test +39 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,45 @@ drop table t1; --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ show binlog events from 0; # # Bug #39182: Binary log producing incompatible character set query from # stored procedure. # reset master; CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; USE bug39182; CREATE TABLE t1 (a VARCHAR(255) COLLATE utf8_unicode_ci) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; DELIMITER //; CREATE PROCEDURE p1() BEGIN DECLARE s1 VARCHAR(255); SET s1= "test"; CREATE TEMPORARY TABLE tmp1 SELECT * FROM t1 WHERE a LIKE CONCAT("%", s1, "%"); SELECT COLLATION(NAME_CONST('s1', _utf8'test')) c1, COLLATION(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) c2, COLLATION(s1) c3, COERCIBILITY(NAME_CONST('s1', _utf8'test')) d1, COERCIBILITY(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) d2, COERCIBILITY(s1) d3; DROP TEMPORARY TABLE tmp1; END// DELIMITER ;// CALL p1(); source include/show_binlog_events.inc; DROP PROCEDURE p1; DROP TABLE t1; DROP DATABASE bug39182; USE test; --echo End of 5.0 tests # Test of a too big SET INSERT_ID: see if the truncated value goes Loading mysql-test/extra/binlog_tests/blackhole.test +0 −9 Original line number Diff line number Diff line Loading @@ -139,15 +139,6 @@ drop table t1,t2,t3; # table # CREATE TABLE t1(a INT) ENGINE=BLACKHOLE; # NOTE: After exchanging open_ltable() by open_and_lock_tables() in # handle_delayed_insert() to fix problems with MERGE tables (Bug#26379), # problems with INSERT DELAYED and BLACKHOLE popped up. open_ltable() # does not check if the binlogging capabilities of the statement and the # table match. So the below used to succeed. But since INSERT DELAYED # switches to row-based logging in mixed-mode and BLACKHOLE cannot do # row-based logging, it could not really work. Until this problem is # correctly fixed, we have that error here. --error ER_BINLOG_LOGGING_IMPOSSIBLE INSERT DELAYED INTO t1 VALUES(1); DROP TABLE t1; Loading Loading
configure.in +20 −16 Original line number Diff line number Diff line Loading @@ -455,46 +455,50 @@ fi AC_SUBST(ABI_CHECK) # Lock for PS # Look for PS usage. We use double dollar-signs in FIND_PROC because this # value is written to a makefile, which interprets away one level of # dollar-signs. So, interpretation stages are m4 and then shell in autoconf, # then Make, then shell. The autoconf substitution uses single quotes, so # no unprotected single quotes should appear in the expression. AC_PATH_PROG(PS, ps, ps) AC_MSG_CHECKING("how to check if pid exists") PS=$ac_cv_path_PS # Linux style if $PS p $$ 2> /dev/null | grep `echo $0 | sed s/\-//` > /dev/null if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null then FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS wwwp \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # Solaris elif $PS -fp $$ 2> /dev/null | grep $0 > /dev/null elif $PS -fp $$ 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS -p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # BSD style elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null elif $PS -uaxww 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" # SysV style elif $PS -ef 2> /dev/null | grep $0 > /dev/null elif $PS -ef 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -ef | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -ef | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" # Do anybody use this? elif $PS $$ 2> /dev/null | grep $0 > /dev/null elif $PS $$ 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" else case $SYSTEM_TYPE in *freebsd*|*dragonfly*) FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" ;; *darwin*) FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *cygwin*) FIND_PROC="$PS -e | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -e | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *netware*) FIND_PROC= ;; *) AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.]) AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this? See the Installation chapter in the Reference Manual.]) esac fi AC_SUBST(FIND_PROC) Loading Loading @@ -2036,7 +2040,7 @@ AC_CHECK_FUNCS(alarm bcmp bfill bmove bsearch bzero \ mkstemp mlockall perror poll pread pthread_attr_create mmap mmap64 getpagesize \ pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \ pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \ pthread_key_delete pthread_rwlock_rdlock pthread_setprio \ pthread_key_delete pthread_rwlock_rdlock pthread_setprio pthread_setschedprio \ pthread_setprio_np pthread_setschedparam pthread_sigmask readlink \ realpath rename rint rwlock_init setupterm \ shmget shmat shmdt shmctl sigaction sigemptyset sigaddset \ Loading
include/hash.h +63 −25 Original line number Diff line number Diff line Loading @@ -21,6 +21,40 @@ extern "C" { #endif /* There was a problem on MacOSX with a shared object ha_example.so. It used hash_search(). During build of ha_example.so no libmysys was specified. Since MacOSX had a hash_search() in the system library, it built the shared object so that the dynamic linker linked hash_search() to the system library, which caused a crash when called. To come around this, we renamed hash_search() to my_hash_search(), as we did long ago with hash_insert() and hash_reset(). However, this time we made the move complete with all names. To keep compatibility, we redefine the old names. Since every C and C++ file, that uses HASH, needs to include this file, the change is complete. Both names could be used in the code, but the my_* versions are recommended now. */ #define hash_get_key my_hash_get_key #define hash_free_key my_hash_free_key #define hash_init my_hash_init #define hash_init2 my_hash_init2 #define _hash_init _my_hash_init #define hash_free my_hash_free #define hash_reset my_hash_reset #define hash_element my_hash_element #define hash_search my_hash_search #define hash_first my_hash_first #define hash_next my_hash_next #define hash_insert my_hash_insert #define hash_delete my_hash_delete #define hash_update my_hash_update #define hash_replace my_hash_replace #define hash_check my_hash_check #define hash_clear my_hash_clear #define hash_inited my_hash_inited #define hash_init_opt my_hash_init_opt /* Overhead to store an element in hash Can be used to approximate memory consumption for a hash Loading @@ -30,8 +64,8 @@ extern "C" { /* flags for hash_init */ #define HASH_UNIQUE 1 /* hash_insert fails on duplicate key */ typedef uchar *(*hash_get_key)(const uchar *,size_t*,my_bool); typedef void (*hash_free_key)(void *); typedef uchar *(*my_hash_get_key)(const uchar *,size_t*,my_bool); typedef void (*my_hash_free_key)(void *); typedef struct st_hash { size_t key_offset,key_length; /* Length of key if const length */ Loading @@ -39,7 +73,7 @@ typedef struct st_hash { ulong records; uint flags; DYNAMIC_ARRAY array; /* Place for hash_keys */ hash_get_key get_key; my_hash_get_key get_key; void (*free)(void *); CHARSET_INFO *charset; } HASH; Loading @@ -47,30 +81,34 @@ typedef struct st_hash { /* A search iterator state */ typedef uint HASH_SEARCH_STATE; #define hash_init(A,B,C,D,E,F,G,H) _hash_init(A,0,B,C,D,E,F,G,H CALLER_INFO) #define hash_init2(A,B,C,D,E,F,G,H,I) _hash_init(A,B,C,D,E,F,G,H,I CALLER_INFO) my_bool _hash_init(HASH *hash, uint growth_size,CHARSET_INFO *charset, #define my_hash_init(A,B,C,D,E,F,G,H) \ _my_hash_init(A,0,B,C,D,E,F,G,H CALLER_INFO) #define my_hash_init2(A,B,C,D,E,F,G,H,I) \ _my_hash_init(A,B,C,D,E,F,G,H,I CALLER_INFO) my_bool _my_hash_init(HASH *hash, uint growth_size, CHARSET_INFO *charset, ulong default_array_elements, size_t key_offset, size_t key_length, hash_get_key get_key, void (*free_element)(void*), uint flags CALLER_INFO_PROTO); void hash_free(HASH *tree); size_t key_length, my_hash_get_key get_key, void (*free_element)(void*), uint flags CALLER_INFO_PROTO); void my_hash_free(HASH *tree); void my_hash_reset(HASH *hash); uchar *hash_element(HASH *hash,ulong idx); uchar *hash_search(const HASH *info, const uchar *key, size_t length); uchar *hash_first(const HASH *info, const uchar *key, size_t length, uchar *my_hash_element(HASH *hash, ulong idx); uchar *my_hash_search(const HASH *info, const uchar *key, size_t length); uchar *my_hash_first(const HASH *info, const uchar *key, size_t length, HASH_SEARCH_STATE *state); uchar *hash_next(const HASH *info, const uchar *key, size_t length, uchar *my_hash_next(const HASH *info, const uchar *key, size_t length, HASH_SEARCH_STATE *state); my_bool my_hash_insert(HASH *info, const uchar *data); my_bool hash_delete(HASH *hash,uchar *record); my_bool hash_update(HASH *hash,uchar *record,uchar *old_key,size_t old_key_length); void hash_replace(HASH *hash, HASH_SEARCH_STATE *state, uchar *new_row); my_bool hash_check(HASH *hash); /* Only in debug library */ my_bool my_hash_delete(HASH *hash, uchar *record); my_bool my_hash_update(HASH *hash, uchar *record, uchar *old_key, size_t old_key_length); void my_hash_replace(HASH *hash, HASH_SEARCH_STATE *state, uchar *new_row); my_bool my_hash_check(HASH *hash); /* Only in debug library */ #define hash_clear(H) bzero((char*) (H),sizeof(*(H))) #define hash_inited(H) ((H)->array.buffer != 0) #define hash_init_opt(A,B,C,D,E,F,G,H) \ (!hash_inited(A) && _hash_init(A,0,B,C,D,E,F,G, H CALLER_INFO)) #define my_hash_clear(H) bzero((char*) (H), sizeof(*(H))) #define my_hash_inited(H) ((H)->array.buffer != 0) #define my_hash_init_opt(A,B,C,D,E,F,G,H) \ (!my_hash_inited(A) && _my_hash_init(A,0,B,C,D,E,F,G, H CALLER_INFO)) #ifdef __cplusplus } Loading
include/my_pthread.h +3 −0 Original line number Diff line number Diff line Loading @@ -279,6 +279,8 @@ int sigwait(sigset_t *setp, int *sigp); /* Use our implemention */ #define my_pthread_setprio(A,B) pthread_setprio_np((A),(B)) #elif defined(HAVE_PTHREAD_SETPRIO) #define my_pthread_setprio(A,B) pthread_setprio((A),(B)) #elif defined(HAVE_PTHREAD_SETSCHEDPRIO) #define my_pthread_setprio(A,B) pthread_setschedprio((A),(B)) #else extern void my_pthread_setprio(pthread_t thread_id,int prior); #endif Loading Loading @@ -519,6 +521,7 @@ typedef struct st_my_pthread_fastmutex_t { pthread_mutex_t mutex; uint spins; uint rng_state; } my_pthread_fastmutex_t; void fastmutex_global_init(void); Loading
mysql-test/extra/binlog_tests/binlog.test +39 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,45 @@ drop table t1; --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ show binlog events from 0; # # Bug #39182: Binary log producing incompatible character set query from # stored procedure. # reset master; CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; USE bug39182; CREATE TABLE t1 (a VARCHAR(255) COLLATE utf8_unicode_ci) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; DELIMITER //; CREATE PROCEDURE p1() BEGIN DECLARE s1 VARCHAR(255); SET s1= "test"; CREATE TEMPORARY TABLE tmp1 SELECT * FROM t1 WHERE a LIKE CONCAT("%", s1, "%"); SELECT COLLATION(NAME_CONST('s1', _utf8'test')) c1, COLLATION(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) c2, COLLATION(s1) c3, COERCIBILITY(NAME_CONST('s1', _utf8'test')) d1, COERCIBILITY(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) d2, COERCIBILITY(s1) d3; DROP TEMPORARY TABLE tmp1; END// DELIMITER ;// CALL p1(); source include/show_binlog_events.inc; DROP PROCEDURE p1; DROP TABLE t1; DROP DATABASE bug39182; USE test; --echo End of 5.0 tests # Test of a too big SET INSERT_ID: see if the truncated value goes Loading
mysql-test/extra/binlog_tests/blackhole.test +0 −9 Original line number Diff line number Diff line Loading @@ -139,15 +139,6 @@ drop table t1,t2,t3; # table # CREATE TABLE t1(a INT) ENGINE=BLACKHOLE; # NOTE: After exchanging open_ltable() by open_and_lock_tables() in # handle_delayed_insert() to fix problems with MERGE tables (Bug#26379), # problems with INSERT DELAYED and BLACKHOLE popped up. open_ltable() # does not check if the binlogging capabilities of the statement and the # table match. So the below used to succeed. But since INSERT DELAYED # switches to row-based logging in mixed-mode and BLACKHOLE cannot do # row-based logging, it could not really work. Until this problem is # correctly fixed, we have that error here. --error ER_BINLOG_LOGGING_IMPOSSIBLE INSERT DELAYED INTO t1 VALUES(1); DROP TABLE t1; Loading