Merge from mysql-5.5-bugfixing to mysql-5.5-runtime.
This commit is contained in:
commit
781e2c417d
@ -264,7 +264,8 @@ test-full-qa:
|
|||||||
# Headers which need to be checked for abi/api compatibility.
|
# Headers which need to be checked for abi/api compatibility.
|
||||||
#
|
#
|
||||||
|
|
||||||
API_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin.h \
|
API_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin_audit.h \
|
||||||
|
$(top_srcdir)/include/mysql/plugin_ftparser.h \
|
||||||
$(top_srcdir)/include/mysql.h \
|
$(top_srcdir)/include/mysql.h \
|
||||||
$(top_srcdir)/include/mysql/psi/psi_abi_v1.h \
|
$(top_srcdir)/include/mysql/psi/psi_abi_v1.h \
|
||||||
$(top_srcdir)/include/mysql/psi/psi_abi_v2.h
|
$(top_srcdir)/include/mysql/psi/psi_abi_v2.h
|
||||||
|
@ -50,7 +50,6 @@
|
|||||||
#include "mysql.h"
|
#include "mysql.h"
|
||||||
#include "mysql_version.h"
|
#include "mysql_version.h"
|
||||||
#include "mysqld_error.h"
|
#include "mysqld_error.h"
|
||||||
#include "../sql/ha_ndbcluster_tables.h"
|
|
||||||
|
|
||||||
/* Exit codes */
|
/* Exit codes */
|
||||||
|
|
||||||
|
@ -15,7 +15,8 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Headers which need to be checked for abi/api compatibility are in
|
# Headers which need to be checked for abi/api compatibility are in
|
||||||
# API_PREPROCESSOR_HEADER.
|
# API_PREPROCESSOR_HEADER. plugin.h is tested implicitly via
|
||||||
|
# plugin_audit.h and plugin_ftparser.h.
|
||||||
#
|
#
|
||||||
# We use gcc specific preprocessing command and sed/diff, so it will
|
# We use gcc specific preprocessing command and sed/diff, so it will
|
||||||
# only be run on Unix and only if gcc is used.
|
# only be run on Unix and only if gcc is used.
|
||||||
@ -27,7 +28,8 @@ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|||||||
SET(COMPILER ${CMAKE_C_COMPILER})
|
SET(COMPILER ${CMAKE_C_COMPILER})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
SET(API_PREPROCESSOR_HEADER
|
SET(API_PREPROCESSOR_HEADER
|
||||||
${CMAKE_SOURCE_DIR}/include/mysql/plugin.h
|
${CMAKE_SOURCE_DIR}/include/mysql/plugin_audit.h
|
||||||
|
${CMAKE_SOURCE_DIR}/include/mysql/plugin_ftparser.h
|
||||||
${CMAKE_SOURCE_DIR}/include/mysql.h
|
${CMAKE_SOURCE_DIR}/include/mysql.h
|
||||||
${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v1.h
|
${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v1.h
|
||||||
${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v2.h
|
${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v2.h
|
||||||
@ -38,18 +40,18 @@ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|||||||
-DCOMPILER=${COMPILER}
|
-DCOMPILER=${COMPILER}
|
||||||
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
||||||
-DBINARY_DIR=${CMAKE_BINARY_DIR}
|
-DBINARY_DIR=${CMAKE_BINARY_DIR}
|
||||||
"-DDMYSQL_ABI_CHECK -DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
|
"-DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
|
||||||
-P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake
|
-P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(abi_check_all
|
ADD_CUSTOM_TARGET(abi_check_all
|
||||||
COMMAND ${CMAKE_COMMAND}
|
COMMAND ${CMAKE_COMMAND}
|
||||||
-DCMAKE_C_COMPILER=${COMPILER}
|
-DCOMPILER=${COMPILER}
|
||||||
-DCMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}
|
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
||||||
-DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
|
-DBINARY_DIR=${CMAKE_BINARY_DIR}
|
||||||
"-DMYSQL_ABI_CHECK -DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
|
"-DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
|
||||||
-P ${CMAKE_SOURCE_DIR}/cmake/scripts/do_abi_check.cmake
|
-P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
@ -56,8 +56,9 @@ FOREACH(file ${ABI_HEADERS})
|
|||||||
SET(tmpfile ${file}.pp.tmp)
|
SET(tmpfile ${file}.pp.tmp)
|
||||||
EXECUTE_PROCESS(
|
EXECUTE_PROCESS(
|
||||||
COMMAND ${COMPILER}
|
COMMAND ${COMPILER}
|
||||||
-E -nostdinc -dI -I${SOURCE_DIR}/include -I${BINARY_DIR}/include
|
-E -nostdinc -dI -DMYSQL_ABI_CHECK -I${SOURCE_DIR}/include
|
||||||
-I${SOURCE_DIR}/include/mysql -I${SOURCE_DIR}/sql ${file}
|
-I${BINARY_DIR}/include -I${SOURCE_DIR}/include/mysql -I${SOURCE_DIR}/sql
|
||||||
|
${file}
|
||||||
ERROR_QUIET OUTPUT_FILE ${tmpfile})
|
ERROR_QUIET OUTPUT_FILE ${tmpfile})
|
||||||
EXECUTE_PROCESS(
|
EXECUTE_PROCESS(
|
||||||
COMMAND sed -e
|
COMMAND sed -e
|
||||||
|
@ -539,6 +539,11 @@ size_t my_strnxfrm_unicode(CHARSET_INFO *,
|
|||||||
uchar *dst, size_t dstlen,
|
uchar *dst, size_t dstlen,
|
||||||
const uchar *src, size_t srclen);
|
const uchar *src, size_t srclen);
|
||||||
|
|
||||||
|
size_t my_strnxfrm_unicode_full_bin(CHARSET_INFO *,
|
||||||
|
uchar *dst, size_t dstlen,
|
||||||
|
const uchar *src, size_t srclen);
|
||||||
|
size_t my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *, size_t);
|
||||||
|
|
||||||
int my_wildcmp_unicode(CHARSET_INFO *cs,
|
int my_wildcmp_unicode(CHARSET_INFO *cs,
|
||||||
const char *str, const char *str_end,
|
const char *str, const char *str_end,
|
||||||
const char *wildstr, const char *wildend,
|
const char *wildstr, const char *wildend,
|
||||||
|
196
include/mysql/plugin_audit.h.pp
Normal file
196
include/mysql/plugin_audit.h.pp
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
#include "plugin.h"
|
||||||
|
#include <mysql/services.h>
|
||||||
|
#include <mysql/service_my_snprintf.h>
|
||||||
|
extern struct my_snprintf_service_st {
|
||||||
|
size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
|
||||||
|
size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
|
||||||
|
} *my_snprintf_service;
|
||||||
|
size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
|
||||||
|
size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
|
||||||
|
#include <mysql/service_thd_alloc.h>
|
||||||
|
struct st_mysql_lex_string
|
||||||
|
{
|
||||||
|
char *str;
|
||||||
|
size_t length;
|
||||||
|
};
|
||||||
|
typedef struct st_mysql_lex_string MYSQL_LEX_STRING;
|
||||||
|
extern struct thd_alloc_service_st {
|
||||||
|
void *(*thd_alloc_func)(void*, unsigned int);
|
||||||
|
void *(*thd_calloc_func)(void*, unsigned int);
|
||||||
|
char *(*thd_strdup_func)(void*, const char *);
|
||||||
|
char *(*thd_strmake_func)(void*, const char *, unsigned int);
|
||||||
|
void *(*thd_memdup_func)(void*, const void*, unsigned int);
|
||||||
|
MYSQL_LEX_STRING *(*thd_make_lex_string_func)(void*, MYSQL_LEX_STRING *,
|
||||||
|
const char *, unsigned int, int);
|
||||||
|
} *thd_alloc_service;
|
||||||
|
void *thd_alloc(void* thd, unsigned int size);
|
||||||
|
void *thd_calloc(void* thd, unsigned int size);
|
||||||
|
char *thd_strdup(void* thd, const char *str);
|
||||||
|
char *thd_strmake(void* thd, const char *str, unsigned int size);
|
||||||
|
void *thd_memdup(void* thd, const void* str, unsigned int size);
|
||||||
|
MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
|
||||||
|
const char *str, unsigned int size,
|
||||||
|
int allocate_lex_string);
|
||||||
|
struct st_mysql_xid {
|
||||||
|
long formatID;
|
||||||
|
long gtrid_length;
|
||||||
|
long bqual_length;
|
||||||
|
char data[128];
|
||||||
|
};
|
||||||
|
typedef struct st_mysql_xid MYSQL_XID;
|
||||||
|
enum enum_mysql_show_type
|
||||||
|
{
|
||||||
|
SHOW_UNDEF, SHOW_BOOL, SHOW_INT, SHOW_LONG,
|
||||||
|
SHOW_LONGLONG, SHOW_CHAR, SHOW_CHAR_PTR,
|
||||||
|
SHOW_ARRAY, SHOW_FUNC, SHOW_DOUBLE,
|
||||||
|
SHOW_always_last
|
||||||
|
};
|
||||||
|
struct st_mysql_show_var {
|
||||||
|
const char *name;
|
||||||
|
char *value;
|
||||||
|
enum enum_mysql_show_type type;
|
||||||
|
};
|
||||||
|
typedef int (*mysql_show_var_func)(void*, struct st_mysql_show_var*, char *);
|
||||||
|
struct st_mysql_sys_var;
|
||||||
|
struct st_mysql_value;
|
||||||
|
typedef int (*mysql_var_check_func)(void* thd,
|
||||||
|
struct st_mysql_sys_var *var,
|
||||||
|
void *save, struct st_mysql_value *value);
|
||||||
|
typedef void (*mysql_var_update_func)(void* thd,
|
||||||
|
struct st_mysql_sys_var *var,
|
||||||
|
void *var_ptr, const void *save);
|
||||||
|
struct st_mysql_plugin
|
||||||
|
{
|
||||||
|
int type;
|
||||||
|
void *info;
|
||||||
|
const char *name;
|
||||||
|
const char *author;
|
||||||
|
const char *descr;
|
||||||
|
int license;
|
||||||
|
int (*init)(void *);
|
||||||
|
int (*deinit)(void *);
|
||||||
|
unsigned int version;
|
||||||
|
struct st_mysql_show_var *status_vars;
|
||||||
|
struct st_mysql_sys_var **system_vars;
|
||||||
|
void * __reserved1;
|
||||||
|
};
|
||||||
|
#include "plugin_ftparser.h"
|
||||||
|
#include "plugin.h"
|
||||||
|
enum enum_ftparser_mode
|
||||||
|
{
|
||||||
|
MYSQL_FTPARSER_SIMPLE_MODE= 0,
|
||||||
|
MYSQL_FTPARSER_WITH_STOPWORDS= 1,
|
||||||
|
MYSQL_FTPARSER_FULL_BOOLEAN_INFO= 2
|
||||||
|
};
|
||||||
|
enum enum_ft_token_type
|
||||||
|
{
|
||||||
|
FT_TOKEN_EOF= 0,
|
||||||
|
FT_TOKEN_WORD= 1,
|
||||||
|
FT_TOKEN_LEFT_PAREN= 2,
|
||||||
|
FT_TOKEN_RIGHT_PAREN= 3,
|
||||||
|
FT_TOKEN_STOPWORD= 4
|
||||||
|
};
|
||||||
|
typedef struct st_mysql_ftparser_boolean_info
|
||||||
|
{
|
||||||
|
enum enum_ft_token_type type;
|
||||||
|
int yesno;
|
||||||
|
int weight_adjust;
|
||||||
|
char wasign;
|
||||||
|
char trunc;
|
||||||
|
char prev;
|
||||||
|
char *quot;
|
||||||
|
} MYSQL_FTPARSER_BOOLEAN_INFO;
|
||||||
|
typedef struct st_mysql_ftparser_param
|
||||||
|
{
|
||||||
|
int (*mysql_parse)(struct st_mysql_ftparser_param *,
|
||||||
|
char *doc, int doc_len);
|
||||||
|
int (*mysql_add_word)(struct st_mysql_ftparser_param *,
|
||||||
|
char *word, int word_len,
|
||||||
|
MYSQL_FTPARSER_BOOLEAN_INFO *boolean_info);
|
||||||
|
void *ftparser_state;
|
||||||
|
void *mysql_ftparam;
|
||||||
|
struct charset_info_st *cs;
|
||||||
|
char *doc;
|
||||||
|
int length;
|
||||||
|
int flags;
|
||||||
|
enum enum_ftparser_mode mode;
|
||||||
|
} MYSQL_FTPARSER_PARAM;
|
||||||
|
struct st_mysql_ftparser
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
int (*parse)(MYSQL_FTPARSER_PARAM *param);
|
||||||
|
int (*init)(MYSQL_FTPARSER_PARAM *param);
|
||||||
|
int (*deinit)(MYSQL_FTPARSER_PARAM *param);
|
||||||
|
};
|
||||||
|
struct st_mysql_daemon
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_information_schema
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_storage_engine
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct handlerton;
|
||||||
|
struct Mysql_replication {
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_value
|
||||||
|
{
|
||||||
|
int (*value_type)(struct st_mysql_value *);
|
||||||
|
const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
|
||||||
|
int (*val_real)(struct st_mysql_value *, double *realbuf);
|
||||||
|
int (*val_int)(struct st_mysql_value *, long long *intbuf);
|
||||||
|
int (*is_unsigned)(struct st_mysql_value *);
|
||||||
|
};
|
||||||
|
int thd_in_lock_tables(const void* thd);
|
||||||
|
int thd_tablespace_op(const void* thd);
|
||||||
|
long long thd_test_options(const void* thd, long long test_options);
|
||||||
|
int thd_sql_command(const void* thd);
|
||||||
|
const char *thd_proc_info(void* thd, const char *info);
|
||||||
|
void **thd_ha_data(const void* thd, const struct handlerton *hton);
|
||||||
|
void thd_storage_lock_wait(void* thd, long long value);
|
||||||
|
int thd_tx_isolation(const void* thd);
|
||||||
|
char *thd_security_context(void* thd, char *buffer, unsigned int length,
|
||||||
|
unsigned int max_query_len);
|
||||||
|
void thd_inc_row_count(void* thd);
|
||||||
|
int mysql_tmpfile(const char *prefix);
|
||||||
|
int thd_killed(const void* thd);
|
||||||
|
unsigned long thd_get_thread_id(const void* thd);
|
||||||
|
void thd_get_xid(const void* thd, MYSQL_XID *xid);
|
||||||
|
void mysql_query_cache_invalidate4(void* thd,
|
||||||
|
const char *key, unsigned int key_length,
|
||||||
|
int using_trx);
|
||||||
|
void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
|
||||||
|
void thd_set_ha_data(void* thd, const struct handlerton *hton,
|
||||||
|
const void *ha_data);
|
||||||
|
struct mysql_event
|
||||||
|
{
|
||||||
|
unsigned int event_class;
|
||||||
|
};
|
||||||
|
struct mysql_event_general
|
||||||
|
{
|
||||||
|
unsigned int event_class;
|
||||||
|
unsigned int event_subclass;
|
||||||
|
int general_error_code;
|
||||||
|
unsigned long general_thread_id;
|
||||||
|
const char *general_user;
|
||||||
|
unsigned int general_user_length;
|
||||||
|
const char *general_command;
|
||||||
|
unsigned int general_command_length;
|
||||||
|
const char *general_query;
|
||||||
|
unsigned int general_query_length;
|
||||||
|
struct charset_info_st *general_charset;
|
||||||
|
unsigned long long general_time;
|
||||||
|
unsigned long long general_rows;
|
||||||
|
};
|
||||||
|
struct st_mysql_audit
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
void (*release_thd)(void*);
|
||||||
|
void (*event_notify)(void*, const struct mysql_event *);
|
||||||
|
unsigned long class_mask[1];
|
||||||
|
};
|
@ -1,3 +1,4 @@
|
|||||||
|
#include "plugin.h"
|
||||||
#include <mysql/services.h>
|
#include <mysql/services.h>
|
||||||
#include <mysql/service_my_snprintf.h>
|
#include <mysql/service_my_snprintf.h>
|
||||||
extern struct my_snprintf_service_st {
|
extern struct my_snprintf_service_st {
|
||||||
@ -74,7 +75,51 @@ struct st_mysql_plugin
|
|||||||
void * __reserved1;
|
void * __reserved1;
|
||||||
};
|
};
|
||||||
#include "plugin_ftparser.h"
|
#include "plugin_ftparser.h"
|
||||||
#include "plugin.h"
|
struct st_mysql_daemon
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_information_schema
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_storage_engine
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct handlerton;
|
||||||
|
struct Mysql_replication {
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_value
|
||||||
|
{
|
||||||
|
int (*value_type)(struct st_mysql_value *);
|
||||||
|
const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
|
||||||
|
int (*val_real)(struct st_mysql_value *, double *realbuf);
|
||||||
|
int (*val_int)(struct st_mysql_value *, long long *intbuf);
|
||||||
|
int (*is_unsigned)(struct st_mysql_value *);
|
||||||
|
};
|
||||||
|
int thd_in_lock_tables(const void* thd);
|
||||||
|
int thd_tablespace_op(const void* thd);
|
||||||
|
long long thd_test_options(const void* thd, long long test_options);
|
||||||
|
int thd_sql_command(const void* thd);
|
||||||
|
const char *thd_proc_info(void* thd, const char *info);
|
||||||
|
void **thd_ha_data(const void* thd, const struct handlerton *hton);
|
||||||
|
void thd_storage_lock_wait(void* thd, long long value);
|
||||||
|
int thd_tx_isolation(const void* thd);
|
||||||
|
char *thd_security_context(void* thd, char *buffer, unsigned int length,
|
||||||
|
unsigned int max_query_len);
|
||||||
|
void thd_inc_row_count(void* thd);
|
||||||
|
int mysql_tmpfile(const char *prefix);
|
||||||
|
int thd_killed(const void* thd);
|
||||||
|
unsigned long thd_get_thread_id(const void* thd);
|
||||||
|
void thd_get_xid(const void* thd, MYSQL_XID *xid);
|
||||||
|
void mysql_query_cache_invalidate4(void* thd,
|
||||||
|
const char *key, unsigned int key_length,
|
||||||
|
int using_trx);
|
||||||
|
void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
|
||||||
|
void thd_set_ha_data(void* thd, const struct handlerton *hton,
|
||||||
|
const void *ha_data);
|
||||||
enum enum_ftparser_mode
|
enum enum_ftparser_mode
|
||||||
{
|
{
|
||||||
MYSQL_FTPARSER_SIMPLE_MODE= 0,
|
MYSQL_FTPARSER_SIMPLE_MODE= 0,
|
||||||
@ -121,48 +166,3 @@ struct st_mysql_ftparser
|
|||||||
int (*init)(MYSQL_FTPARSER_PARAM *param);
|
int (*init)(MYSQL_FTPARSER_PARAM *param);
|
||||||
int (*deinit)(MYSQL_FTPARSER_PARAM *param);
|
int (*deinit)(MYSQL_FTPARSER_PARAM *param);
|
||||||
};
|
};
|
||||||
struct st_mysql_daemon
|
|
||||||
{
|
|
||||||
int interface_version;
|
|
||||||
};
|
|
||||||
struct st_mysql_information_schema
|
|
||||||
{
|
|
||||||
int interface_version;
|
|
||||||
};
|
|
||||||
struct st_mysql_storage_engine
|
|
||||||
{
|
|
||||||
int interface_version;
|
|
||||||
};
|
|
||||||
struct handlerton;
|
|
||||||
struct Mysql_replication {
|
|
||||||
int interface_version;
|
|
||||||
};
|
|
||||||
struct st_mysql_value
|
|
||||||
{
|
|
||||||
int (*value_type)(struct st_mysql_value *);
|
|
||||||
const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
|
|
||||||
int (*val_real)(struct st_mysql_value *, double *realbuf);
|
|
||||||
int (*val_int)(struct st_mysql_value *, long long *intbuf);
|
|
||||||
int (*is_unsigned)(struct st_mysql_value *);
|
|
||||||
};
|
|
||||||
int thd_in_lock_tables(const void* thd);
|
|
||||||
int thd_tablespace_op(const void* thd);
|
|
||||||
long long thd_test_options(const void* thd, long long test_options);
|
|
||||||
int thd_sql_command(const void* thd);
|
|
||||||
const char *thd_proc_info(void* thd, const char *info);
|
|
||||||
void **thd_ha_data(const void* thd, const struct handlerton *hton);
|
|
||||||
void thd_storage_lock_wait(void* thd, long long value);
|
|
||||||
int thd_tx_isolation(const void* thd);
|
|
||||||
char *thd_security_context(void* thd, char *buffer, unsigned int length,
|
|
||||||
unsigned int max_query_len);
|
|
||||||
void thd_inc_row_count(void* thd);
|
|
||||||
int mysql_tmpfile(const char *prefix);
|
|
||||||
int thd_killed(const void* thd);
|
|
||||||
unsigned long thd_get_thread_id(const void* thd);
|
|
||||||
void thd_get_xid(const void* thd, MYSQL_XID *xid);
|
|
||||||
void mysql_query_cache_invalidate4(void* thd,
|
|
||||||
const char *key, unsigned int key_length,
|
|
||||||
int using_trx);
|
|
||||||
void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
|
|
||||||
void thd_set_ha_data(void* thd, const struct handlerton *hton,
|
|
||||||
const void *ha_data);
|
|
@ -92,5 +92,3 @@ parts.partition_mgm_lc1_ndb # joro : NDB tests marked as experiment
|
|||||||
parts.partition_mgm_lc2_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
parts.partition_mgm_lc2_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
parts.partition_syntax_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
parts.partition_syntax_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
parts.partition_value_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
parts.partition_value_ndb # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
main.mysqlhotcopy_myisam # horst: due to bug#54129
|
|
||||||
main.mysqlhotcopy_archive # horst: due to bug#54129
|
|
||||||
|
@ -52,13 +52,19 @@ inc $count;
|
|||||||
FLUSH TABLES;
|
FLUSH TABLES;
|
||||||
source include/show_binlog_events.inc;
|
source include/show_binlog_events.inc;
|
||||||
|
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
RESET MASTER;
|
||||||
|
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
||||||
inc $count; inc $count; inc $count; inc $count;
|
inc $count; inc $count; inc $count; inc $count;
|
||||||
--source include/wait_until_rows_count.inc
|
--source include/wait_until_rows_count.inc
|
||||||
|
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
insert /*! delayed */ into t1 values (null),(null),(400),(null);
|
||||||
inc $count; inc $count; inc $count; inc $count;
|
inc $count; inc $count; inc $count; inc $count;
|
||||||
--source include/wait_until_rows_count.inc
|
--source include/wait_until_rows_count.inc
|
||||||
|
|
||||||
|
if (`SELECT @@SESSION.BINLOG_FORMAT = 'STATEMENT'`) {
|
||||||
|
FLUSH TABLES;
|
||||||
|
source include/show_binlog_events.inc;
|
||||||
|
}
|
||||||
|
|
||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -338,10 +338,21 @@ if (`SELECT '$CRC_RET_stmt_sidef' != ''`) {
|
|||||||
SHOW BINLOG EVENTS;
|
SHOW BINLOG EVENTS;
|
||||||
--die Warnings printed
|
--die Warnings printed
|
||||||
}
|
}
|
||||||
# The first event is format_description, the second is
|
|
||||||
# Query_event('BEGIN'), and the third should be our Table_map.
|
|
||||||
--let $event_type= query_get_value(SHOW BINLOG EVENTS, Event_type, 3)
|
--let $event_type= query_get_value(SHOW BINLOG EVENTS, Event_type, 3)
|
||||||
if (`SELECT '$event_type' != 'Table_map'`) {
|
# The first event is format_description, the second is
|
||||||
|
# Query_event('BEGIN'), and the third should be our Query
|
||||||
|
# for 'INSERT DELAYED' unsafe_type 3, which is safe after
|
||||||
|
# the fix of bug#54579.
|
||||||
|
if (`SELECT $unsafe_type = 3 AND '$event_type' != 'Query'`) {
|
||||||
|
--enable_query_log
|
||||||
|
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Query'. ********
|
||||||
|
SHOW BINLOG EVENTS;
|
||||||
|
--die Wrong events in binlog.
|
||||||
|
}
|
||||||
|
# The first event is format_description, the second is
|
||||||
|
# Query_event('BEGIN'), and the third should be our Table_map
|
||||||
|
# for unsafe statement.
|
||||||
|
if (`SELECT $unsafe_type != 3 AND '$event_type' != 'Table_map'`) {
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Table_map'. ********
|
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Table_map'. ********
|
||||||
SHOW BINLOG EVENTS;
|
SHOW BINLOG EVENTS;
|
||||||
|
16
mysql-test/include/ctype_filesort2.inc
Normal file
16
mysql-test/include/ctype_filesort2.inc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#
|
||||||
|
# Testing filesort for full Unicode character sets
|
||||||
|
# with supplementary characters.
|
||||||
|
#
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#55980 Character sets: supplementary character _bin ordering is wrong
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a',1) AS a LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xEFBE9D),(_utf8mb4 0xF0908E84);
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xCE85),(_utf8mb4 0xF4808080);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
ALTER TABLE t1 ADD KEY(a);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
@ -1542,6 +1542,7 @@ show status like 'handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -611,6 +611,31 @@ utf16_bin 00610009
|
|||||||
utf16_bin 0061
|
utf16_bin 0061
|
||||||
utf16_bin 00610020
|
utf16_bin 00610020
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug#55980 Character sets: supplementary character _bin ordering is wrong
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a',1) AS a LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` varchar(1) CHARACTER SET utf16 COLLATE utf16_bin NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xEFBE9D),(_utf8mb4 0xF0908E84);
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xCE85),(_utf8mb4 0xF4808080);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
0385 CE85
|
||||||
|
D800DF84 F0908E84
|
||||||
|
DBC0DC00 F4808080
|
||||||
|
FF9D EFBE9D
|
||||||
|
ALTER TABLE t1 ADD KEY(a);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
0385 CE85
|
||||||
|
D800DF84 F0908E84
|
||||||
|
DBC0DC00 F4808080
|
||||||
|
FF9D EFBE9D
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
select @@collation_connection;
|
select @@collation_connection;
|
||||||
@@collation_connection
|
@@collation_connection
|
||||||
utf16_bin
|
utf16_bin
|
||||||
|
@ -610,6 +610,31 @@ utf32_bin 0000006100000009
|
|||||||
utf32_bin 00000061
|
utf32_bin 00000061
|
||||||
utf32_bin 0000006100000020
|
utf32_bin 0000006100000020
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug#55980 Character sets: supplementary character _bin ordering is wrong
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a',1) AS a LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` varchar(1) CHARACTER SET utf32 COLLATE utf32_bin NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xEFBE9D),(_utf8mb4 0xF0908E84);
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xCE85),(_utf8mb4 0xF4808080);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
00000385 CE85
|
||||||
|
0000FF9D EFBE9D
|
||||||
|
00010384 F0908E84
|
||||||
|
00100000 F4808080
|
||||||
|
ALTER TABLE t1 ADD KEY(a);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
00000385 CE85
|
||||||
|
0000FF9D EFBE9D
|
||||||
|
00010384 F0908E84
|
||||||
|
00100000 F4808080
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
select @@collation_connection;
|
select @@collation_connection;
|
||||||
@@collation_connection
|
@@collation_connection
|
||||||
utf32_bin
|
utf32_bin
|
||||||
@ -1114,5 +1139,18 @@ format(123,2,'no_NO')
|
|||||||
123,00
|
123,00
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# Bug#42511 mysqld: ctype-ucs2.c:2044: my_strnncollsp_utf32: Assertion (tlen % 4) == 0' faied
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
b char(250) CHARACTER SET utf32,
|
||||||
|
key (b)
|
||||||
|
) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES ('d'),('f');
|
||||||
|
SELECT * FROM t1 WHERE b BETWEEN 'a' AND 'z';
|
||||||
|
b
|
||||||
|
d
|
||||||
|
f
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
|
@ -987,6 +987,31 @@ utf8mb4_bin 6109
|
|||||||
utf8mb4_bin 61
|
utf8mb4_bin 61
|
||||||
utf8mb4_bin 6120
|
utf8mb4_bin 6120
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug#55980 Character sets: supplementary character _bin ordering is wrong
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a',1) AS a LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xEFBE9D),(_utf8mb4 0xF0908E84);
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xCE85),(_utf8mb4 0xF4808080);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
CE85 CE85
|
||||||
|
EFBE9D EFBE9D
|
||||||
|
F0908E84 F0908E84
|
||||||
|
F4808080 F4808080
|
||||||
|
ALTER TABLE t1 ADD KEY(a);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
CE85 CE85
|
||||||
|
EFBE9D EFBE9D
|
||||||
|
F0908E84 F0908E84
|
||||||
|
F4808080 F4808080
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
select @@collation_connection;
|
select @@collation_connection;
|
||||||
@@collation_connection
|
@@collation_connection
|
||||||
utf8mb4_bin
|
utf8mb4_bin
|
||||||
|
60
mysql-test/r/handler_read_last.result
Normal file
60
mysql-test/r/handler_read_last.result
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (a INT, INDEX (a));
|
||||||
|
INSERT INTO t1 VALUES (),(),(),(),(),(),(),(),(),();
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a LIMIT 1;
|
||||||
|
a
|
||||||
|
NULL
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_first 1
|
||||||
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
|
Handler_read_next 0
|
||||||
|
Handler_read_prev 0
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_next 0
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a DESC LIMIT 1;
|
||||||
|
a
|
||||||
|
NULL
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_first 0
|
||||||
|
Handler_read_key 0
|
||||||
|
Handler_read_last 1
|
||||||
|
Handler_read_next 0
|
||||||
|
Handler_read_prev 0
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_next 0
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a LIMIT 3;
|
||||||
|
a
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_first 1
|
||||||
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
|
Handler_read_next 2
|
||||||
|
Handler_read_prev 0
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_next 0
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a DESC LIMIT 3;
|
||||||
|
a
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_first 0
|
||||||
|
Handler_read_key 0
|
||||||
|
Handler_read_last 1
|
||||||
|
Handler_read_next 0
|
||||||
|
Handler_read_prev 2
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_next 0
|
||||||
|
DROP TABLE t1;
|
@ -694,6 +694,7 @@ show status like 'Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -854,6 +854,7 @@ show status like 'Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -1238,6 +1238,7 @@ show status like 'Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 5
|
Handler_read_key 5
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -860,9 +860,9 @@ performance-schema-max-file-classes 50
|
|||||||
performance-schema-max-file-handles 32768
|
performance-schema-max-file-handles 32768
|
||||||
performance-schema-max-file-instances 10000
|
performance-schema-max-file-instances 10000
|
||||||
performance-schema-max-mutex-classes 200
|
performance-schema-max-mutex-classes 200
|
||||||
performance-schema-max-mutex-instances 1000
|
performance-schema-max-mutex-instances 1000000
|
||||||
performance-schema-max-rwlock-classes 20
|
performance-schema-max-rwlock-classes 30
|
||||||
performance-schema-max-rwlock-instances 1000
|
performance-schema-max-rwlock-instances 1000000
|
||||||
performance-schema-max-table-handles 100000
|
performance-schema-max-table-handles 100000
|
||||||
performance-schema-max-table-instances 50000
|
performance-schema-max-table-instances 50000
|
||||||
performance-schema-max-thread-classes 50
|
performance-schema-max-thread-classes 50
|
||||||
|
@ -864,9 +864,9 @@ performance-schema-max-file-classes 50
|
|||||||
performance-schema-max-file-handles 32768
|
performance-schema-max-file-handles 32768
|
||||||
performance-schema-max-file-instances 10000
|
performance-schema-max-file-instances 10000
|
||||||
performance-schema-max-mutex-classes 200
|
performance-schema-max-mutex-classes 200
|
||||||
performance-schema-max-mutex-instances 1000
|
performance-schema-max-mutex-instances 1000000
|
||||||
performance-schema-max-rwlock-classes 20
|
performance-schema-max-rwlock-classes 30
|
||||||
performance-schema-max-rwlock-instances 1000
|
performance-schema-max-rwlock-instances 1000000
|
||||||
performance-schema-max-table-handles 100000
|
performance-schema-max-table-handles 100000
|
||||||
performance-schema-max-table-instances 50000
|
performance-schema-max-table-instances 50000
|
||||||
performance-schema-max-thread-classes 50
|
performance-schema-max-thread-classes 50
|
||||||
|
@ -424,6 +424,7 @@ SHOW STATUS LIKE "handler_read%";
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 6
|
Handler_read_key 6
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -359,6 +359,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -377,6 +378,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -407,6 +409,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -423,6 +426,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -439,6 +443,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -455,6 +460,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -4338,6 +4338,7 @@ SHOW STATUS LIKE 'Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -25,6 +25,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -41,6 +42,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -74,6 +76,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -90,6 +93,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
@ -120,6 +124,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -136,6 +141,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -170,6 +176,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -186,6 +193,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -214,6 +222,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -230,6 +239,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -256,6 +266,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -272,6 +283,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -301,6 +313,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 7
|
Handler_read_next 7
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 4
|
Handler_read_rnd 4
|
||||||
@ -322,6 +335,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 7
|
Handler_read_next 7
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 8
|
Handler_read_rnd 8
|
||||||
@ -357,6 +371,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 4
|
Handler_read_prev 4
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -373,6 +388,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 4
|
Handler_read_prev 4
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -406,6 +422,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -422,6 +439,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
@ -464,6 +482,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -486,6 +505,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 1
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 4
|
Handler_read_prev 4
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -502,6 +522,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 1
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 4
|
Handler_read_prev 4
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -536,6 +557,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -552,6 +574,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
@ -590,6 +613,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -606,6 +630,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
@ -641,6 +666,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -657,6 +683,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -691,6 +718,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -707,6 +735,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
@ -735,6 +764,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -751,6 +781,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -778,6 +809,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -794,6 +826,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -824,6 +857,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 7
|
Handler_read_next 7
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 4
|
Handler_read_rnd 4
|
||||||
@ -845,6 +879,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 7
|
Handler_read_next 7
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 8
|
Handler_read_rnd 8
|
||||||
@ -884,6 +919,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 4
|
Handler_read_prev 4
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -900,6 +936,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 4
|
Handler_read_prev 4
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
@ -938,6 +975,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -954,6 +992,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
@ -990,6 +1029,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -1012,6 +1052,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 1
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 4
|
Handler_read_prev 4
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -1028,6 +1069,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 1
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 4
|
Handler_read_prev 4
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
|
@ -113,6 +113,7 @@ show status like '%Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -273,6 +273,7 @@ show status like 'handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -284,6 +285,7 @@ show status like 'handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 2
|
Handler_read_rnd 2
|
||||||
@ -294,6 +296,7 @@ show status like 'handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -304,6 +307,7 @@ show status like 'handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 1
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -315,6 +319,7 @@ show status like 'handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -368,6 +373,7 @@ show status like 'handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 1
|
Handler_read_next 1
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
@ -405,6 +411,7 @@ show status like '%Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -415,6 +422,7 @@ show status like '%Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -424,6 +432,7 @@ show status like '%Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 3
|
Handler_read_key 3
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -433,6 +442,7 @@ show status like '%Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 3
|
Handler_read_key 3
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -1267,8 +1267,9 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
RESET MASTER;
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
||||||
|
insert /*! delayed */ into t1 values (null),(null),(400),(null);
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a
|
a
|
||||||
207
|
207
|
||||||
|
@ -20,12 +20,21 @@ master-bin.000001 # Query # # BEGIN
|
|||||||
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (300)
|
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (300)
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
RESET MASTER;
|
||||||
Warnings:
|
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
insert /*! delayed */ into t1 values (null),(null),(400),(null);
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
FLUSH TABLES;
|
||||||
Warnings:
|
show binlog events from <binlog_start>;
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Query # # BEGIN
|
||||||
|
master-bin.000001 # Intvar # # INSERT_ID=301
|
||||||
|
master-bin.000001 # Query # # use `test`; insert /* before delayed */ /* after delayed */ into t1 values (null),(null),(null),(null)
|
||||||
|
master-bin.000001 # Query # # COMMIT
|
||||||
|
master-bin.000001 # Query # # BEGIN
|
||||||
|
master-bin.000001 # Intvar # # INSERT_ID=305
|
||||||
|
master-bin.000001 # Query # # use `test`; insert /*! */ into t1 values (null),(null),(400),(null)
|
||||||
|
master-bin.000001 # Query # # COMMIT
|
||||||
|
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a
|
a
|
||||||
207
|
207
|
||||||
|
@ -758,8 +758,9 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
master-bin.000001 # Query # # use `test`; FLUSH TABLES
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
RESET MASTER;
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
insert /* before delayed */ delayed /* after delayed */ into t1 values (null),(null),(null),(null);
|
||||||
|
insert /*! delayed */ into t1 values (null),(null),(400),(null);
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a
|
a
|
||||||
207
|
207
|
||||||
|
@ -862,65 +862,51 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
|||||||
* Invoke statement so that return value is dicarded: expect no warning.
|
* Invoke statement so that return value is dicarded: expect no warning.
|
||||||
SELECT * FROM data_table LIMIT 1;
|
SELECT * FROM data_table LIMIT 1;
|
||||||
|
|
||||||
==== Testing INSERT DELAYED unsafeness ====
|
==== Testing INSERT DELAYED safeness after BUG#54579 is fixed ====
|
||||||
|
|
||||||
Invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
Invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); RETURN 0; END;
|
CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); RETURN 0; END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT INTO t1 SELECT func_sidef_1();
|
INSERT INTO t1 SELECT func_sidef_1();
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
|
|
||||||
Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
Invoking function func_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
|
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT INTO t2 SELECT func_sidef_2();
|
INSERT INTO t2 SELECT func_sidef_2();
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP FUNCTION func_sidef_2;
|
DROP FUNCTION func_sidef_2;
|
||||||
|
|
||||||
Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
Invoking procedure proc_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE PROCEDURE proc_2() BEGIN INSERT INTO t1 SELECT func_sidef_1(); INSERT INTO ta2 VALUES (47); END;
|
CREATE PROCEDURE proc_2() BEGIN INSERT INTO t1 SELECT func_sidef_1(); INSERT INTO ta2 VALUES (47); END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
CALL proc_2();
|
CALL proc_2();
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PROCEDURE proc_2;
|
DROP PROCEDURE proc_2;
|
||||||
|
|
||||||
Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
Invoking trigger trig_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
|
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT INTO trigger_table_2 VALUES (1);
|
INSERT INTO trigger_table_2 VALUES (1);
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP TRIGGER trig_2;
|
DROP TRIGGER trig_2;
|
||||||
|
|
||||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||||
Warnings:
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
|
||||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP VIEW view_sidef_2;
|
DROP VIEW view_sidef_2;
|
||||||
|
|
||||||
Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
Invoking prepared statement prep_2 invoking function func_sidef_1 invoking unsafe INSERT DELAYED statement.
|
||||||
PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
|
PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
EXECUTE prep_2;
|
EXECUTE prep_2;
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PREPARE prep_2;
|
DROP PREPARE prep_2;
|
||||||
@ -928,49 +914,39 @@ DROP FUNCTION func_sidef_1;
|
|||||||
|
|
||||||
Invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
Invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE PROCEDURE proc_1() BEGIN INSERT DELAYED INTO t0 VALUES (1), (2); INSERT INTO ta1 VALUES (47); END;
|
CREATE PROCEDURE proc_1() BEGIN INSERT DELAYED INTO t0 VALUES (1), (2); INSERT INTO ta1 VALUES (47); END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
CALL proc_1();
|
CALL proc_1();
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
|
|
||||||
Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
Invoking function func_sidef_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
|
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT INTO t2 SELECT func_sidef_2();
|
INSERT INTO t2 SELECT func_sidef_2();
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP FUNCTION func_sidef_2;
|
DROP FUNCTION func_sidef_2;
|
||||||
|
|
||||||
Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
Invoking procedure proc_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE PROCEDURE proc_2() BEGIN CALL proc_1(); INSERT INTO ta2 VALUES (47); END;
|
CREATE PROCEDURE proc_2() BEGIN CALL proc_1(); INSERT INTO ta2 VALUES (47); END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
CALL proc_2();
|
CALL proc_2();
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PROCEDURE proc_2;
|
DROP PROCEDURE proc_2;
|
||||||
|
|
||||||
Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
Invoking trigger trig_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
|
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT INTO trigger_table_2 VALUES (1);
|
INSERT INTO trigger_table_2 VALUES (1);
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP TRIGGER trig_2;
|
DROP TRIGGER trig_2;
|
||||||
|
|
||||||
Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
Invoking prepared statement prep_2 invoking procedure proc_1 invoking unsafe INSERT DELAYED statement.
|
||||||
PREPARE prep_2 FROM "CALL proc_1()";
|
PREPARE prep_2 FROM "CALL proc_1()";
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
EXECUTE prep_2;
|
EXECUTE prep_2;
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PREPARE prep_2;
|
DROP PREPARE prep_2;
|
||||||
@ -978,49 +954,39 @@ DROP PROCEDURE proc_1;
|
|||||||
|
|
||||||
Invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
Invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); END;
|
CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO t0 VALUES (1), (2); END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT INTO trigger_table_1 VALUES (1);
|
INSERT INTO trigger_table_1 VALUES (1);
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
|
|
||||||
Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
Invoking function func_sidef_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
|
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT INTO t2 SELECT func_sidef_2();
|
INSERT INTO t2 SELECT func_sidef_2();
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP FUNCTION func_sidef_2;
|
DROP FUNCTION func_sidef_2;
|
||||||
|
|
||||||
Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
Invoking procedure proc_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE PROCEDURE proc_2() BEGIN INSERT INTO trigger_table_1 VALUES (1); INSERT INTO ta2 VALUES (47); END;
|
CREATE PROCEDURE proc_2() BEGIN INSERT INTO trigger_table_1 VALUES (1); INSERT INTO ta2 VALUES (47); END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
CALL proc_2();
|
CALL proc_2();
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PROCEDURE proc_2;
|
DROP PROCEDURE proc_2;
|
||||||
|
|
||||||
Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
Invoking trigger trig_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
|
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT INTO trigger_table_2 VALUES (1);
|
INSERT INTO trigger_table_2 VALUES (1);
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP TRIGGER trig_2;
|
DROP TRIGGER trig_2;
|
||||||
|
|
||||||
Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
Invoking prepared statement prep_2 invoking trigger trig_1 invoking unsafe INSERT DELAYED statement.
|
||||||
PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
|
PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
EXECUTE prep_2;
|
EXECUTE prep_2;
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PREPARE prep_2;
|
DROP PREPARE prep_2;
|
||||||
@ -1028,19 +994,15 @@ DROP TRIGGER trig_1;
|
|||||||
|
|
||||||
Invoking prepared statement prep_1 invoking unsafe INSERT DELAYED statement.
|
Invoking prepared statement prep_1 invoking unsafe INSERT DELAYED statement.
|
||||||
PREPARE prep_1 FROM "INSERT DELAYED INTO t0 VALUES (1), (2)";
|
PREPARE prep_1 FROM "INSERT DELAYED INTO t0 VALUES (1), (2)";
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
EXECUTE prep_1;
|
EXECUTE prep_1;
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
DROP PREPARE prep_1;
|
DROP PREPARE prep_1;
|
||||||
|
|
||||||
Invoking unsafe INSERT DELAYED statement.
|
Invoking unsafe INSERT DELAYED statement.
|
||||||
* binlog_format = STATEMENT: expect 1 warnings.
|
* binlog_format = STATEMENT: expect 0 warnings.
|
||||||
INSERT DELAYED INTO t0 VALUES (1), (2);
|
INSERT DELAYED INTO t0 VALUES (1), (2);
|
||||||
Warnings:
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
* SQL_LOG_BIN = 0: expect nothing logged and no warning.
|
||||||
* binlog_format = MIXED: expect row events in binlog and no warning.
|
* binlog_format = MIXED: expect row events in binlog and no warning.
|
||||||
|
|
||||||
@ -1798,11 +1760,10 @@ SELECT COUNT(*) FROM mysql.general_log;
|
|||||||
|
|
||||||
Invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
Invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; RETURN 0; END;
|
CREATE FUNCTION func_sidef_1() RETURNS VARCHAR(100) BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; RETURN 0; END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT INTO t1 SELECT func_sidef_1();
|
INSERT INTO t1 SELECT func_sidef_1();
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1813,11 +1774,10 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
|||||||
|
|
||||||
Invoking function func_sidef_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
Invoking function func_sidef_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
|
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); RETURN 0; END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT INTO t2 SELECT func_sidef_2();
|
INSERT INTO t2 SELECT func_sidef_2();
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1829,11 +1789,10 @@ DROP FUNCTION func_sidef_2;
|
|||||||
|
|
||||||
Invoking procedure proc_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
Invoking procedure proc_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE PROCEDURE proc_2() BEGIN INSERT INTO t1 SELECT func_sidef_1(); INSERT INTO ta2 VALUES (47); END;
|
CREATE PROCEDURE proc_2() BEGIN INSERT INTO t1 SELECT func_sidef_1(); INSERT INTO ta2 VALUES (47); END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
CALL proc_2();
|
CALL proc_2();
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1845,11 +1804,10 @@ DROP PROCEDURE proc_2;
|
|||||||
|
|
||||||
Invoking trigger trig_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
Invoking trigger trig_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
|
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO t1 SELECT func_sidef_1(); END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT INTO trigger_table_2 VALUES (1);
|
INSERT INTO trigger_table_2 VALUES (1);
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1863,17 +1821,15 @@ Invoking view view_sidef_2 invoking function func_sidef_1 invoking statement tha
|
|||||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1885,11 +1841,10 @@ DROP VIEW view_sidef_2;
|
|||||||
|
|
||||||
Invoking prepared statement prep_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
Invoking prepared statement prep_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||||
PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
|
PREPARE prep_2 FROM "INSERT INTO t1 SELECT func_sidef_1()";
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
EXECUTE prep_2;
|
EXECUTE prep_2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1902,11 +1857,10 @@ DROP FUNCTION func_sidef_1;
|
|||||||
|
|
||||||
Invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
Invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE PROCEDURE proc_1() BEGIN INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; INSERT INTO ta1 VALUES (47); END;
|
CREATE PROCEDURE proc_1() BEGIN INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; INSERT INTO ta1 VALUES (47); END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
CALL proc_1();
|
CALL proc_1();
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1917,11 +1871,10 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
|||||||
|
|
||||||
Invoking function func_sidef_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
Invoking function func_sidef_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
|
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); RETURN 0; END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT INTO t2 SELECT func_sidef_2();
|
INSERT INTO t2 SELECT func_sidef_2();
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1933,11 +1886,10 @@ DROP FUNCTION func_sidef_2;
|
|||||||
|
|
||||||
Invoking procedure proc_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
Invoking procedure proc_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE PROCEDURE proc_2() BEGIN CALL proc_1(); INSERT INTO ta2 VALUES (47); END;
|
CREATE PROCEDURE proc_2() BEGIN CALL proc_1(); INSERT INTO ta2 VALUES (47); END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
CALL proc_2();
|
CALL proc_2();
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1949,11 +1901,10 @@ DROP PROCEDURE proc_2;
|
|||||||
|
|
||||||
Invoking trigger trig_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
Invoking trigger trig_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
|
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); CALL proc_1(); END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT INTO trigger_table_2 VALUES (1);
|
INSERT INTO trigger_table_2 VALUES (1);
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1965,11 +1916,10 @@ DROP TRIGGER trig_2;
|
|||||||
|
|
||||||
Invoking prepared statement prep_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
Invoking prepared statement prep_2 invoking procedure proc_1 invoking statement that is unsafe in many ways.
|
||||||
PREPARE prep_2 FROM "CALL proc_1()";
|
PREPARE prep_2 FROM "CALL proc_1()";
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
EXECUTE prep_2;
|
EXECUTE prep_2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1982,11 +1932,10 @@ DROP PROCEDURE proc_1;
|
|||||||
|
|
||||||
Invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
Invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; END;
|
CREATE TRIGGER trig_1 BEFORE INSERT ON trigger_table_1 FOR EACH ROW BEGIN INSERT INTO ta1 VALUES (47); INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1; END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT INTO trigger_table_1 VALUES (1);
|
INSERT INTO trigger_table_1 VALUES (1);
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -1997,11 +1946,10 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
|||||||
|
|
||||||
Invoking function func_sidef_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
Invoking function func_sidef_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
|
CREATE FUNCTION func_sidef_2() RETURNS VARCHAR(100) BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); RETURN 0; END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT INTO t2 SELECT func_sidef_2();
|
INSERT INTO t2 SELECT func_sidef_2();
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -2013,11 +1961,10 @@ DROP FUNCTION func_sidef_2;
|
|||||||
|
|
||||||
Invoking procedure proc_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
Invoking procedure proc_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE PROCEDURE proc_2() BEGIN INSERT INTO trigger_table_1 VALUES (1); INSERT INTO ta2 VALUES (47); END;
|
CREATE PROCEDURE proc_2() BEGIN INSERT INTO trigger_table_1 VALUES (1); INSERT INTO ta2 VALUES (47); END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
CALL proc_2();
|
CALL proc_2();
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -2029,11 +1976,10 @@ DROP PROCEDURE proc_2;
|
|||||||
|
|
||||||
Invoking trigger trig_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
Invoking trigger trig_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||||
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
|
CREATE TRIGGER trig_2 BEFORE INSERT ON trigger_table_2 FOR EACH ROW BEGIN INSERT INTO ta2 VALUES (47); INSERT INTO trigger_table_1 VALUES (1); END;
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT INTO trigger_table_2 VALUES (1);
|
INSERT INTO trigger_table_2 VALUES (1);
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -2045,11 +1991,10 @@ DROP TRIGGER trig_2;
|
|||||||
|
|
||||||
Invoking prepared statement prep_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
Invoking prepared statement prep_2 invoking trigger trig_1 invoking statement that is unsafe in many ways.
|
||||||
PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
|
PREPARE prep_2 FROM "INSERT INTO trigger_table_1 VALUES (1)";
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
EXECUTE prep_2;
|
EXECUTE prep_2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -2062,11 +2007,10 @@ DROP TRIGGER trig_1;
|
|||||||
|
|
||||||
Invoking prepared statement prep_1 invoking statement that is unsafe in many ways.
|
Invoking prepared statement prep_1 invoking statement that is unsafe in many ways.
|
||||||
PREPARE prep_1 FROM "INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1";
|
PREPARE prep_1 FROM "INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1";
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
EXECUTE prep_1;
|
EXECUTE prep_1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -2077,11 +2021,10 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
|||||||
DROP PREPARE prep_1;
|
DROP PREPARE prep_1;
|
||||||
|
|
||||||
Invoking statement that is unsafe in many ways.
|
Invoking statement that is unsafe in many ways.
|
||||||
* binlog_format = STATEMENT: expect 7 warnings.
|
* binlog_format = STATEMENT: expect 6 warnings.
|
||||||
INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1;
|
INSERT DELAYED INTO double_autoinc_table SELECT CONCAT(UUID(), @@hostname, myfunc_int(), NULL) FROM mysql.general_log LIMIT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses INSERT DELAYED. This is unsafe because the times when rows are inserted cannot be predicted.
|
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave.
|
||||||
@ -2554,8 +2497,7 @@ func_limit()
|
|||||||
show binlog events from <binlog_start>;
|
show binlog events from <binlog_start>;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Query # # use `test`; INSERT DELAYED INTO t1 VALUES (1), (2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
|
@ -179,13 +179,13 @@ while (`SELECT $unsafe_type < 9`) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (`SELECT $unsafe_type = 3`) {
|
if (`SELECT $unsafe_type = 3`) {
|
||||||
--echo ==== Testing INSERT DELAYED unsafeness ====
|
--echo ==== Testing INSERT DELAYED safeness after BUG#54579 is fixed ====
|
||||||
--let $desc_0= unsafe INSERT DELAYED statement
|
--let $desc_0= unsafe INSERT DELAYED statement
|
||||||
--let $stmt_sidef_0= INSERT DELAYED INTO t0 VALUES (1), (2)
|
--let $stmt_sidef_0= INSERT DELAYED INTO t0 VALUES (1), (2)
|
||||||
--let $value_0=
|
--let $value_0=
|
||||||
--let $sel_sidef_0=
|
--let $sel_sidef_0=
|
||||||
--let $sel_retval_0=
|
--let $sel_retval_0=
|
||||||
--let $CRC_ARG_expected_number_of_warnings= 1
|
--let $CRC_ARG_expected_number_of_warnings= 0
|
||||||
}
|
}
|
||||||
|
|
||||||
if (`SELECT $unsafe_type = 4`) {
|
if (`SELECT $unsafe_type = 4`) {
|
||||||
@ -227,7 +227,7 @@ while (`SELECT $unsafe_type < 9`) {
|
|||||||
--let $value_0=
|
--let $value_0=
|
||||||
--let $sel_sidef_0=
|
--let $sel_sidef_0=
|
||||||
--let $sel_retval_0=
|
--let $sel_retval_0=
|
||||||
--let $CRC_ARG_expected_number_of_warnings= 7
|
--let $CRC_ARG_expected_number_of_warnings= 6
|
||||||
}
|
}
|
||||||
|
|
||||||
if (`SELECT $unsafe_type = 8`) {
|
if (`SELECT $unsafe_type = 8`) {
|
||||||
|
2
mysql-test/suite/perfschema/r/bad_option_3.result
Normal file
2
mysql-test/suite/perfschema/r/bad_option_3.result
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Found: unknown option '-x'
|
||||||
|
Found: Aborting
|
2
mysql-test/suite/perfschema/r/bad_option_4.result
Normal file
2
mysql-test/suite/perfschema/r/bad_option_4.result
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Found: Can't change dir to.*bad_option_h_param
|
||||||
|
Found: Aborting
|
2
mysql-test/suite/perfschema/r/bad_option_5.result
Normal file
2
mysql-test/suite/perfschema/r/bad_option_5.result
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Found: unknown option '-X'
|
||||||
|
Found: Aborting
|
27
mysql-test/suite/perfschema/r/short_option_1.result
Normal file
27
mysql-test/suite/perfschema/r/short_option_1.result
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
select 'Ok, the server started' as result;
|
||||||
|
result
|
||||||
|
Ok, the server started
|
||||||
|
select @@SQL_MODE;
|
||||||
|
@@SQL_MODE
|
||||||
|
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
|
||||||
|
show variables like 'sql_mode';
|
||||||
|
Variable_name Value
|
||||||
|
sql_mode REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
|
||||||
|
select @@character_set_server;
|
||||||
|
@@character_set_server
|
||||||
|
utf8
|
||||||
|
show variables like 'character_set_system';
|
||||||
|
Variable_name Value
|
||||||
|
character_set_system utf8
|
||||||
|
show variables like 'log';
|
||||||
|
Variable_name Value
|
||||||
|
log ON
|
||||||
|
show variables like 'general_log';
|
||||||
|
Variable_name Value
|
||||||
|
general_log ON
|
||||||
|
show variables like 'new';
|
||||||
|
Variable_name Value
|
||||||
|
new ON
|
||||||
|
show variables like 'log_warnings';
|
||||||
|
Variable_name Value
|
||||||
|
log_warnings 3
|
9
mysql-test/suite/perfschema/r/short_option_2.result
Normal file
9
mysql-test/suite/perfschema/r/short_option_2.result
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
select 'Ok, the server started' as result;
|
||||||
|
result
|
||||||
|
Ok, the server started
|
||||||
|
select @@SQL_MODE;
|
||||||
|
@@SQL_MODE
|
||||||
|
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
|
||||||
|
select @@log_warnings;
|
||||||
|
@@log_warnings
|
||||||
|
5
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 0
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 0
|
performance_schema_max_file_instances 0
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 0
|
performance_schema_max_mutex_classes 0
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
@ -46,8 +46,8 @@ performance_schema_max_file_handles 32768
|
|||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 0
|
performance_schema_max_mutex_instances 0
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 0
|
performance_schema_max_rwlock_classes 0
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
@ -45,8 +45,8 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 0
|
performance_schema_max_rwlock_instances 0
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
@ -56,7 +56,7 @@ show engine PERFORMANCE_SCHEMA status;
|
|||||||
show status like "performance_schema%";
|
show status like "performance_schema%";
|
||||||
show variables like "performance_schema_max_rwlock_classes";
|
show variables like "performance_schema_max_rwlock_classes";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
|
select count(*) > 0 from performance_schema.SETUP_INSTRUMENTS
|
||||||
where name like "wait/synch/rwlock/%";
|
where name like "wait/synch/rwlock/%";
|
||||||
count(*) > 0
|
count(*) > 0
|
||||||
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 0
|
performance_schema_max_thread_classes 0
|
||||||
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
@ -45,9 +45,9 @@ performance_schema_max_file_classes 50
|
|||||||
performance_schema_max_file_handles 32768
|
performance_schema_max_file_handles 32768
|
||||||
performance_schema_max_file_instances 10000
|
performance_schema_max_file_instances 10000
|
||||||
performance_schema_max_mutex_classes 200
|
performance_schema_max_mutex_classes 200
|
||||||
performance_schema_max_mutex_instances 1000
|
performance_schema_max_mutex_instances 1000000
|
||||||
performance_schema_max_rwlock_classes 20
|
performance_schema_max_rwlock_classes 30
|
||||||
performance_schema_max_rwlock_instances 1000
|
performance_schema_max_rwlock_instances 1000000
|
||||||
performance_schema_max_table_handles 100000
|
performance_schema_max_table_handles 100000
|
||||||
performance_schema_max_table_instances 50000
|
performance_schema_max_table_instances 50000
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
|
49
mysql-test/suite/perfschema/t/bad_option_3.test
Normal file
49
mysql-test/suite/perfschema/t/bad_option_3.test
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||||
|
|
||||||
|
# Tests for PERFORMANCE_SCHEMA
|
||||||
|
# Check error handling for invalid server start options
|
||||||
|
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_perfschema.inc
|
||||||
|
|
||||||
|
let $outfile= $MYSQLTEST_VARDIR/tmp/bad_option_3.txt;
|
||||||
|
--error 0,1
|
||||||
|
--remove_file $outfile
|
||||||
|
--error 2
|
||||||
|
--exec $MYSQLD_BOOTSTRAP_CMD --loose-console -a -x > $outfile 2>&1
|
||||||
|
|
||||||
|
perl;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/bad_option_3.txt";
|
||||||
|
open(FILE, "<", $fname) or die;
|
||||||
|
my @lines= <FILE>;
|
||||||
|
# those must be in the file for the test to pass
|
||||||
|
my @patterns=
|
||||||
|
("unknown option '-x'",
|
||||||
|
"Aborting");
|
||||||
|
foreach my $one_line (@lines)
|
||||||
|
{
|
||||||
|
foreach my $one_pattern (@patterns)
|
||||||
|
{
|
||||||
|
# print pattern, not line, to get a stable output
|
||||||
|
print "Found: $one_pattern\n" if ($one_line =~ /$one_pattern/);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close FILE;
|
||||||
|
EOF
|
||||||
|
--remove_file $outfile
|
||||||
|
|
49
mysql-test/suite/perfschema/t/bad_option_4.test
Normal file
49
mysql-test/suite/perfschema/t/bad_option_4.test
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||||
|
|
||||||
|
# Tests for PERFORMANCE_SCHEMA
|
||||||
|
# Check error handling for invalid server start options
|
||||||
|
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_perfschema.inc
|
||||||
|
|
||||||
|
let $outfile= $MYSQLTEST_VARDIR/tmp/bad_option_4.txt;
|
||||||
|
--error 0,1
|
||||||
|
--remove_file $outfile
|
||||||
|
--error 1
|
||||||
|
--exec $MYSQLD_BOOTSTRAP_CMD --loose-console -a -h bad_option_h_param > $outfile 2>&1
|
||||||
|
|
||||||
|
perl;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/bad_option_4.txt";
|
||||||
|
open(FILE, "<", $fname) or die;
|
||||||
|
my @lines= <FILE>;
|
||||||
|
# those must be in the file for the test to pass
|
||||||
|
my @patterns=
|
||||||
|
("Can't change dir to.*bad_option_h_param",
|
||||||
|
"Aborting");
|
||||||
|
foreach my $one_line (@lines)
|
||||||
|
{
|
||||||
|
foreach my $one_pattern (@patterns)
|
||||||
|
{
|
||||||
|
# print pattern, not line, to get a stable output
|
||||||
|
print "Found: $one_pattern\n" if ($one_line =~ /$one_pattern/);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close FILE;
|
||||||
|
EOF
|
||||||
|
--remove_file $outfile
|
||||||
|
|
52
mysql-test/suite/perfschema/t/bad_option_5.test
Normal file
52
mysql-test/suite/perfschema/t/bad_option_5.test
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||||
|
|
||||||
|
# Tests for PERFORMANCE_SCHEMA
|
||||||
|
# Check error handling for invalid server start options
|
||||||
|
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_perfschema.inc
|
||||||
|
|
||||||
|
let $outfile= $MYSQLTEST_VARDIR/tmp/bad_option_5.txt;
|
||||||
|
--error 0,1
|
||||||
|
--remove_file $outfile
|
||||||
|
--error 2
|
||||||
|
--exec $MYSQLD_BOOTSTRAP_CMD --loose-console -aXbroken > $outfile 2>&1
|
||||||
|
|
||||||
|
# -aXbroken should be parsed as -a -Xbroken, or --ansi -Xbroken,
|
||||||
|
# therefore the -X option is what the server should complain about
|
||||||
|
|
||||||
|
perl;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/bad_option_5.txt";
|
||||||
|
open(FILE, "<", $fname) or die;
|
||||||
|
my @lines= <FILE>;
|
||||||
|
# those must be in the file for the test to pass
|
||||||
|
my @patterns=
|
||||||
|
("unknown option '-X'",
|
||||||
|
"Aborting");
|
||||||
|
foreach my $one_line (@lines)
|
||||||
|
{
|
||||||
|
foreach my $one_pattern (@patterns)
|
||||||
|
{
|
||||||
|
# print pattern, not line, to get a stable output
|
||||||
|
print "Found: $one_pattern\n" if ($one_line =~ /$one_pattern/);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close FILE;
|
||||||
|
EOF
|
||||||
|
--remove_file $outfile
|
||||||
|
|
1
mysql-test/suite/perfschema/t/short_option_1-master.opt
Normal file
1
mysql-test/suite/perfschema/t/short_option_1-master.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
-a -n -Cutf8 --collation=utf8_bin -l -T12 -W3
|
35
mysql-test/suite/perfschema/t/short_option_1.test
Normal file
35
mysql-test/suite/perfschema/t/short_option_1.test
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||||
|
|
||||||
|
# Tests for PERFORMANCE_SCHEMA
|
||||||
|
# Check server start for short server start options
|
||||||
|
|
||||||
|
select 'Ok, the server started' as result;
|
||||||
|
|
||||||
|
# See the associated -master.opt file.
|
||||||
|
|
||||||
|
select @@SQL_MODE;
|
||||||
|
show variables like 'sql_mode';
|
||||||
|
|
||||||
|
select @@character_set_server;
|
||||||
|
show variables like 'character_set_system';
|
||||||
|
|
||||||
|
show variables like 'log';
|
||||||
|
show variables like 'general_log';
|
||||||
|
|
||||||
|
show variables like 'new';
|
||||||
|
|
||||||
|
show variables like 'log_warnings';
|
||||||
|
|
1
mysql-test/suite/perfschema/t/short_option_2-master.opt
Normal file
1
mysql-test/suite/perfschema/t/short_option_2-master.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
-aW5
|
29
mysql-test/suite/perfschema/t/short_option_2.test
Normal file
29
mysql-test/suite/perfschema/t/short_option_2.test
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||||
|
|
||||||
|
# Tests for PERFORMANCE_SCHEMA
|
||||||
|
# Check server start for short server start options
|
||||||
|
|
||||||
|
select 'Ok, the server started' as result;
|
||||||
|
|
||||||
|
# See the associated -master.opt file.
|
||||||
|
# -aW5 should be parsed as -a -W5, which are two separate short options
|
||||||
|
# stuffed inside a single argv[i] argument.
|
||||||
|
|
||||||
|
# Should contain ANSI, since we started the server with -a (stands for --ansi)
|
||||||
|
select @@SQL_MODE;
|
||||||
|
|
||||||
|
# Should be 5, since we started the server with -W5
|
||||||
|
select @@log_warnings;
|
@ -326,6 +326,7 @@ SET collation_connection='utf16_general_ci';
|
|||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
SET collation_connection='utf16_bin';
|
SET collation_connection='utf16_bin';
|
||||||
-- source include/ctype_filesort.inc
|
-- source include/ctype_filesort.inc
|
||||||
|
-- source include/ctype_filesort2.inc
|
||||||
-- source include/ctype_like_escape.inc
|
-- source include/ctype_like_escape.inc
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -328,6 +328,7 @@ SET collation_connection='utf32_general_ci';
|
|||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
SET collation_connection='utf32_bin';
|
SET collation_connection='utf32_bin';
|
||||||
-- source include/ctype_filesort.inc
|
-- source include/ctype_filesort.inc
|
||||||
|
-- source include/ctype_filesort2.inc
|
||||||
-- source include/ctype_like_escape.inc
|
-- source include/ctype_like_escape.inc
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -818,6 +819,17 @@ SHOW CREATE TABLE t1;
|
|||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#42511 mysqld: ctype-ucs2.c:2044: my_strnncollsp_utf32: Assertion (tlen % 4) == 0' faied
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
b char(250) CHARACTER SET utf32,
|
||||||
|
key (b)
|
||||||
|
) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES ('d'),('f');
|
||||||
|
SELECT * FROM t1 WHERE b BETWEEN 'a' AND 'z';
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 5.5 tests
|
--echo # End of 5.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -733,6 +733,7 @@ SET collation_connection='utf8mb4_general_ci';
|
|||||||
-- source include/ctype_german.inc
|
-- source include/ctype_german.inc
|
||||||
SET collation_connection='utf8mb4_bin';
|
SET collation_connection='utf8mb4_bin';
|
||||||
-- source include/ctype_filesort.inc
|
-- source include/ctype_filesort.inc
|
||||||
|
-- source include/ctype_filesort2.inc
|
||||||
-- source include/ctype_like_escape.inc
|
-- source include/ctype_like_escape.inc
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
||||||
lowercase_table3 : Bug#54845 2010-06-30 alik main.lowercase_table3 on Mac OSX
|
lowercase_table3 : Bug#54845 2010-06-30 alik main.lowercase_table3 on Mac OSX
|
||||||
|
mysqlhotcopy_myisam : Bug#54129 2010-08-31 alik mysqlhotcopy* fails
|
||||||
|
mysqlhotcopy_archive : Bug#54129 2010-08-31 alik mysqlhotcopy* fails
|
||||||
partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings
|
partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings
|
||||||
plugin : Bug#55966 2010-08-13 alik "plugin" tests fail in 5.5
|
plugin : Bug#55966 2010-08-13 alik "plugin" tests fail in 5.5
|
||||||
plugin_load : Bug#55966 2010-08-13 alik "plugin" tests fail in 5.5
|
plugin_load : Bug#55966 2010-08-13 alik "plugin" tests fail in 5.5
|
||||||
|
40
mysql-test/t/handler_read_last.test
Normal file
40
mysql-test/t/handler_read_last.test
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, INDEX (a));
|
||||||
|
INSERT INTO t1 VALUES (),(),(),(),(),(),(),(),(),();
|
||||||
|
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a LIMIT 1;
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a DESC LIMIT 1;
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a LIMIT 3;
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a DESC LIMIT 3;
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
@ -98,6 +98,49 @@ void my_getopt_register_get_addr(my_getopt_value func_addr)
|
|||||||
matches with one of the options in struct 'my_option'.
|
matches with one of the options in struct 'my_option'.
|
||||||
Check that option was given an argument if it requires one
|
Check that option was given an argument if it requires one
|
||||||
Call the optional 'get_one_option()' function once for each option.
|
Call the optional 'get_one_option()' function once for each option.
|
||||||
|
|
||||||
|
Note that handle_options() can be invoked multiple times to
|
||||||
|
parse a command line in several steps.
|
||||||
|
In this case, use the global flag @c my_getopt_skip_unknown to indicate
|
||||||
|
that options unknown in the current step should be preserved in the
|
||||||
|
command line for later parsing in subsequent steps.
|
||||||
|
|
||||||
|
For 'long' options (--a_long_option), @c my_getopt_skip_unknown is
|
||||||
|
fully supported. Command line parameters such as:
|
||||||
|
- "--a_long_option"
|
||||||
|
- "--a_long_option=value"
|
||||||
|
- "--a_long_option value"
|
||||||
|
will be preserved as is when the option is not known.
|
||||||
|
|
||||||
|
For 'short' options (-S), support for @c my_getopt_skip_unknown
|
||||||
|
comes with some limitation, because several short options
|
||||||
|
can also be specified together in the same command line argument,
|
||||||
|
as in "-XYZ".
|
||||||
|
|
||||||
|
The first use case supported is: all short options are declared.
|
||||||
|
handle_options() will be able to interpret "-XYZ" as one of:
|
||||||
|
- an unknown X option
|
||||||
|
- "-X -Y -Z", three short options with no arguments
|
||||||
|
- "-X -YZ", where Y is a short option with argument Z
|
||||||
|
- "-XYZ", where X is a short option with argument YZ
|
||||||
|
based on the full short options specifications.
|
||||||
|
|
||||||
|
The second use case supported is: no short option is declared.
|
||||||
|
handle_options() will reject "-XYZ" as unknown, to be parsed later.
|
||||||
|
|
||||||
|
The use case that is explicitly not supported is to provide
|
||||||
|
only a partial list of short options to handle_options().
|
||||||
|
This function can not be expected to extract some option Y
|
||||||
|
in the middle of the string "-XYZ" in these conditions,
|
||||||
|
without knowing if X will be declared an option later.
|
||||||
|
|
||||||
|
Note that this limitation only impacts parsing of several
|
||||||
|
short options from the same command line argument,
|
||||||
|
as in "mysqld -anW5".
|
||||||
|
When each short option is properly separated out in the command line
|
||||||
|
argument, for example in "mysqld -a -n -w5", the code would actually
|
||||||
|
work even with partial options specs given at each stage.
|
||||||
|
|
||||||
@param [in, out] argc command line options (count)
|
@param [in, out] argc command line options (count)
|
||||||
@param [in, out] argv command line options (values)
|
@param [in, out] argv command line options (values)
|
||||||
@param [in] longopts descriptor of all valid options
|
@param [in] longopts descriptor of all valid options
|
||||||
@ -464,14 +507,40 @@ int handle_options(int *argc, char ***argv,
|
|||||||
}
|
}
|
||||||
if (!opt_found)
|
if (!opt_found)
|
||||||
{
|
{
|
||||||
if (my_getopt_print_errors)
|
if (my_getopt_skip_unknown)
|
||||||
my_getopt_error_reporter(ERROR_LEVEL,
|
{
|
||||||
"%s: unknown option '-%c'",
|
/*
|
||||||
my_progname, *optend);
|
We are currently parsing a single argv[] argument
|
||||||
return EXIT_UNKNOWN_OPTION;
|
of the form "-XYZ".
|
||||||
|
One or the argument found (say Y) is not an option.
|
||||||
|
Hack the string "-XYZ" to make a "-YZ" substring in it,
|
||||||
|
and push that to the output as an unrecognized parameter.
|
||||||
|
*/
|
||||||
|
DBUG_ASSERT(optend > *pos);
|
||||||
|
DBUG_ASSERT(optend >= cur_arg);
|
||||||
|
DBUG_ASSERT(optend <= *pos + strlen(*pos));
|
||||||
|
DBUG_ASSERT(*optend);
|
||||||
|
optend--;
|
||||||
|
optend[0]= '-'; /* replace 'X' or '-' by '-' */
|
||||||
|
(*argv)[argvpos++]= optend;
|
||||||
|
/*
|
||||||
|
Do not continue to parse at the current "-XYZ" argument,
|
||||||
|
skip to the next argv[] argument instead.
|
||||||
|
*/
|
||||||
|
optend= (char*) " ";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (my_getopt_print_errors)
|
||||||
|
my_getopt_error_reporter(ERROR_LEVEL,
|
||||||
|
"%s: unknown option '-%c'",
|
||||||
|
my_progname, *optend);
|
||||||
|
return EXIT_UNKNOWN_OPTION;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(*argc)--; /* option handled (short), decrease argument count */
|
if (opt_found)
|
||||||
|
(*argc)--; /* option handled (short), decrease argument count */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((error= setval(optp, value, argument, set_maximum_value)))
|
if ((error= setval(optp, value, argument, set_maximum_value)))
|
||||||
@ -479,7 +548,7 @@ int handle_options(int *argc, char ***argv,
|
|||||||
if (get_one_option && get_one_option(optp->id, optp, argument))
|
if (get_one_option && get_one_option(optp->id, optp, argument))
|
||||||
return EXIT_UNSPECIFIED_ERROR;
|
return EXIT_UNSPECIFIED_ERROR;
|
||||||
|
|
||||||
(*argc)--; /* option handled (short or long), decrease argument count */
|
(*argc)--; /* option handled (long), decrease argument count */
|
||||||
}
|
}
|
||||||
else /* non-option found */
|
else /* non-option found */
|
||||||
(*argv)[argvpos++]= cur_arg;
|
(*argv)[argvpos++]= cur_arg;
|
||||||
|
@ -6439,6 +6439,7 @@ SHOW_VAR status_vars[]= {
|
|||||||
{"Handler_prepare", (char*) offsetof(STATUS_VAR, ha_prepare_count), SHOW_LONG_STATUS},
|
{"Handler_prepare", (char*) offsetof(STATUS_VAR, ha_prepare_count), SHOW_LONG_STATUS},
|
||||||
{"Handler_read_first", (char*) offsetof(STATUS_VAR, ha_read_first_count), SHOW_LONG_STATUS},
|
{"Handler_read_first", (char*) offsetof(STATUS_VAR, ha_read_first_count), SHOW_LONG_STATUS},
|
||||||
{"Handler_read_key", (char*) offsetof(STATUS_VAR, ha_read_key_count), SHOW_LONG_STATUS},
|
{"Handler_read_key", (char*) offsetof(STATUS_VAR, ha_read_key_count), SHOW_LONG_STATUS},
|
||||||
|
{"Handler_read_last", (char*) offsetof(STATUS_VAR, ha_read_last_count), SHOW_LONG_STATUS},
|
||||||
{"Handler_read_next", (char*) offsetof(STATUS_VAR, ha_read_next_count), SHOW_LONG_STATUS},
|
{"Handler_read_next", (char*) offsetof(STATUS_VAR, ha_read_next_count), SHOW_LONG_STATUS},
|
||||||
{"Handler_read_prev", (char*) offsetof(STATUS_VAR, ha_read_prev_count), SHOW_LONG_STATUS},
|
{"Handler_read_prev", (char*) offsetof(STATUS_VAR, ha_read_prev_count), SHOW_LONG_STATUS},
|
||||||
{"Handler_read_rnd", (char*) offsetof(STATUS_VAR, ha_read_rnd_count), SHOW_LONG_STATUS},
|
{"Handler_read_rnd", (char*) offsetof(STATUS_VAR, ha_read_rnd_count), SHOW_LONG_STATUS},
|
||||||
|
@ -153,6 +153,17 @@ sys_var::sys_var(sys_var_chain *chain, const char *name_arg,
|
|||||||
guard(lock), offset(off), on_check(on_check_func), on_update(on_update_func),
|
guard(lock), offset(off), on_check(on_check_func), on_update(on_update_func),
|
||||||
is_os_charset(FALSE)
|
is_os_charset(FALSE)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
There is a limitation in handle_options() related to short options:
|
||||||
|
- either all short options should be declared when parsing in multiple stages,
|
||||||
|
- or none should be declared.
|
||||||
|
Because a lot of short options are used in the normal parsing phase
|
||||||
|
for mysqld, we enforce here that no short option is present
|
||||||
|
in the first (PARSE_EARLY) stage.
|
||||||
|
See handle_options() for details.
|
||||||
|
*/
|
||||||
|
DBUG_ASSERT(parse_flag == PARSE_NORMAL || getopt_id <= 0 || getopt_id >= 255);
|
||||||
|
|
||||||
name.str= name_arg;
|
name.str= name_arg;
|
||||||
name.length= strlen(name_arg);
|
name.length= strlen(name_arg);
|
||||||
DBUG_ASSERT(name.length <= NAME_CHAR_LEN);
|
DBUG_ASSERT(name.length <= NAME_CHAR_LEN);
|
||||||
|
@ -620,6 +620,32 @@ bool open_and_lock_for_insert_delayed(THD *thd, TABLE_LIST *table_list)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a new query string for removing DELAYED keyword for
|
||||||
|
multi INSERT DEALAYED statement.
|
||||||
|
|
||||||
|
@param[in] thd Thread handler
|
||||||
|
@param[in] buf Query string
|
||||||
|
|
||||||
|
@return
|
||||||
|
0 ok
|
||||||
|
1 error
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
create_insert_stmt_from_insert_delayed(THD *thd, String *buf)
|
||||||
|
{
|
||||||
|
/* Append the part of thd->query before "DELAYED" keyword */
|
||||||
|
if (buf->append(thd->query(),
|
||||||
|
thd->lex->keyword_delayed_begin - thd->query()))
|
||||||
|
return 1;
|
||||||
|
/* Append the part of thd->query after "DELAYED" keyword */
|
||||||
|
if (buf->append(thd->lex->keyword_delayed_begin + 7))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
INSERT statement implementation
|
INSERT statement implementation
|
||||||
|
|
||||||
@ -999,13 +1025,28 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
such case the flag is ignored for constructing binlog event.
|
such case the flag is ignored for constructing binlog event.
|
||||||
*/
|
*/
|
||||||
DBUG_ASSERT(thd->killed != THD::KILL_BAD_DATA || error > 0);
|
DBUG_ASSERT(thd->killed != THD::KILL_BAD_DATA || error > 0);
|
||||||
if (thd->binlog_query(THD::ROW_QUERY_TYPE,
|
if (was_insert_delayed && table_list->lock_type == TL_WRITE)
|
||||||
thd->query(), thd->query_length(),
|
|
||||||
transactional_table, FALSE, FALSE,
|
|
||||||
errcode))
|
|
||||||
{
|
{
|
||||||
|
/* Binlog multi INSERT DELAYED as INSERT without DELAYED. */
|
||||||
|
String log_query;
|
||||||
|
if (create_insert_stmt_from_insert_delayed(thd, &log_query))
|
||||||
|
{
|
||||||
|
sql_print_error("Event Error: An error occurred while creating query string"
|
||||||
|
"for INSERT DELAYED stmt, before writing it into binary log.");
|
||||||
|
|
||||||
|
error= 1;
|
||||||
|
}
|
||||||
|
else if (thd->binlog_query(THD::ROW_QUERY_TYPE,
|
||||||
|
log_query.c_ptr(), log_query.length(),
|
||||||
|
transactional_table, FALSE, FALSE,
|
||||||
|
errcode))
|
||||||
|
error= 1;
|
||||||
|
}
|
||||||
|
else if (thd->binlog_query(THD::ROW_QUERY_TYPE,
|
||||||
|
thd->query(), thd->query_length(),
|
||||||
|
transactional_table, FALSE, FALSE,
|
||||||
|
errcode))
|
||||||
error= 1;
|
error= 1;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DBUG_ASSERT(transactional_table || !changed ||
|
DBUG_ASSERT(transactional_table || !changed ||
|
||||||
|
@ -2354,8 +2354,14 @@ struct LEX: public Query_tables_list
|
|||||||
|
|
||||||
This pointer is required to add possibly omitted DEFINER-clause to the
|
This pointer is required to add possibly omitted DEFINER-clause to the
|
||||||
DDL-statement before dumping it to the binlog.
|
DDL-statement before dumping it to the binlog.
|
||||||
|
|
||||||
|
keyword_delayed_begin points to the begin of the DELAYED keyword in
|
||||||
|
INSERT DELAYED statement.
|
||||||
*/
|
*/
|
||||||
const char *stmt_definition_begin;
|
union {
|
||||||
|
const char *stmt_definition_begin;
|
||||||
|
const char *keyword_delayed_begin;
|
||||||
|
};
|
||||||
|
|
||||||
const char *stmt_definition_end;
|
const char *stmt_definition_end;
|
||||||
|
|
||||||
|
@ -10446,8 +10446,8 @@ insert_lock_option:
|
|||||||
| LOW_PRIORITY { $$= TL_WRITE_LOW_PRIORITY; }
|
| LOW_PRIORITY { $$= TL_WRITE_LOW_PRIORITY; }
|
||||||
| DELAYED_SYM
|
| DELAYED_SYM
|
||||||
{
|
{
|
||||||
|
Lex->keyword_delayed_begin= YYLIP->get_tok_start();
|
||||||
$$= TL_WRITE_DELAYED;
|
$$= TL_WRITE_DELAYED;
|
||||||
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_INSERT_DELAYED);
|
|
||||||
}
|
}
|
||||||
| HIGH_PRIORITY { $$= TL_WRITE; }
|
| HIGH_PRIORITY { $$= TL_WRITE; }
|
||||||
;
|
;
|
||||||
@ -10456,8 +10456,8 @@ replace_lock_option:
|
|||||||
opt_low_priority { $$= $1; }
|
opt_low_priority { $$= $1; }
|
||||||
| DELAYED_SYM
|
| DELAYED_SYM
|
||||||
{
|
{
|
||||||
|
Lex->keyword_delayed_begin= YYLIP->get_tok_start();
|
||||||
$$= TL_WRITE_DELAYED;
|
$$= TL_WRITE_DELAYED;
|
||||||
Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_INSERT_DELAYED);
|
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ static Sys_var_ulong Sys_pfs_max_mutex_instances(
|
|||||||
"performance_schema_max_mutex_instances",
|
"performance_schema_max_mutex_instances",
|
||||||
"Maximum number of instrumented MUTEX objects.",
|
"Maximum number of instrumented MUTEX objects.",
|
||||||
READ_ONLY GLOBAL_VAR(pfs_param.m_mutex_sizing),
|
READ_ONLY GLOBAL_VAR(pfs_param.m_mutex_sizing),
|
||||||
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 1024*1024),
|
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 100*1024*1024),
|
||||||
DEFAULT(PFS_MAX_MUTEX),
|
DEFAULT(PFS_MAX_MUTEX),
|
||||||
BLOCK_SIZE(1), PFS_TRAILING_PROPERTIES);
|
BLOCK_SIZE(1), PFS_TRAILING_PROPERTIES);
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ static Sys_var_ulong Sys_pfs_max_rwlock_instances(
|
|||||||
"performance_schema_max_rwlock_instances",
|
"performance_schema_max_rwlock_instances",
|
||||||
"Maximum number of instrumented RWLOCK objects.",
|
"Maximum number of instrumented RWLOCK objects.",
|
||||||
READ_ONLY GLOBAL_VAR(pfs_param.m_rwlock_sizing),
|
READ_ONLY GLOBAL_VAR(pfs_param.m_rwlock_sizing),
|
||||||
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 1024*1024),
|
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 100*1024*1024),
|
||||||
DEFAULT(PFS_MAX_RWLOCK),
|
DEFAULT(PFS_MAX_RWLOCK),
|
||||||
BLOCK_SIZE(1), PFS_TRAILING_PROPERTIES);
|
BLOCK_SIZE(1), PFS_TRAILING_PROPERTIES);
|
||||||
|
|
||||||
|
@ -253,18 +253,17 @@ uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key, uchar *old,
|
|||||||
pos=old;
|
pos=old;
|
||||||
if (keyseg->flag & HA_SPACE_PACK)
|
if (keyseg->flag & HA_SPACE_PACK)
|
||||||
{
|
{
|
||||||
uchar *end=pos+length;
|
|
||||||
if (type == HA_KEYTYPE_NUM)
|
if (type == HA_KEYTYPE_NUM)
|
||||||
{
|
{
|
||||||
while (pos < end && pos[0] == ' ')
|
uchar *end= pos + length;
|
||||||
pos++;
|
while (pos < end && pos[0] == ' ')
|
||||||
|
pos++;
|
||||||
|
length= (uint) (end - pos);
|
||||||
}
|
}
|
||||||
else if (type != HA_KEYTYPE_BINARY)
|
else if (type != HA_KEYTYPE_BINARY)
|
||||||
{
|
{
|
||||||
while (end > pos && end[-1] == ' ')
|
length= cs->cset->lengthsp(cs, (char*) pos, length);
|
||||||
end--;
|
|
||||||
}
|
}
|
||||||
length=(uint) (end-pos);
|
|
||||||
FIX_LENGTH(cs, pos, length, char_length);
|
FIX_LENGTH(cs, pos, length, char_length);
|
||||||
store_key_length_inc(key,char_length);
|
store_key_length_inc(key,char_length);
|
||||||
memcpy((uchar*) key,pos,(size_t) char_length);
|
memcpy((uchar*) key,pos,(size_t) char_length);
|
||||||
|
@ -1625,18 +1625,26 @@ static void end_mutex_wait_v1(PSI_mutex_locker* locker, int rc)
|
|||||||
if (flag_events_waits_history_long)
|
if (flag_events_waits_history_long)
|
||||||
insert_events_waits_history_long(wait);
|
insert_events_waits_history_long(wait);
|
||||||
|
|
||||||
if (rc == 0 && wait->m_timer_state == TIMER_STATE_TIMED)
|
if (rc == 0)
|
||||||
{
|
{
|
||||||
/* Thread safe: we are protected by the instrumented mutex */
|
/* Thread safe: we are protected by the instrumented mutex */
|
||||||
PFS_single_stat_chain *stat;
|
|
||||||
PFS_mutex *mutex= pfs_locker->m_target.m_mutex;
|
PFS_mutex *mutex= pfs_locker->m_target.m_mutex;
|
||||||
|
PFS_single_stat_chain *stat= find_per_thread_mutex_class_wait_stat(wait->m_thread, mutex->m_class);
|
||||||
mutex->m_owner= wait->m_thread;
|
mutex->m_owner= wait->m_thread;
|
||||||
mutex->m_last_locked= wait->m_timer_end;
|
mutex->m_last_locked= wait->m_timer_end;
|
||||||
|
|
||||||
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
/* If timed then aggregate stats, else increment the value counts only */
|
||||||
aggregate_single_stat_chain(&mutex->m_wait_stat, wait_time);
|
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
||||||
stat= find_per_thread_mutex_class_wait_stat(wait->m_thread, mutex->m_class);
|
{
|
||||||
aggregate_single_stat_chain(stat, wait_time);
|
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
||||||
|
aggregate_single_stat_chain(&mutex->m_wait_stat, wait_time);
|
||||||
|
aggregate_single_stat_chain(stat, wait_time);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
increment_single_stat_chain(&mutex->m_wait_stat);
|
||||||
|
increment_single_stat_chain(stat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
wait->m_thread->m_wait_locker_count--;
|
wait->m_thread->m_wait_locker_count--;
|
||||||
}
|
}
|
||||||
@ -1682,20 +1690,26 @@ static void end_rwlock_rdwait_v1(PSI_rwlock_locker* locker, int rc)
|
|||||||
The statistics generated are not safe, which is why they are
|
The statistics generated are not safe, which is why they are
|
||||||
just statistics, not facts.
|
just statistics, not facts.
|
||||||
*/
|
*/
|
||||||
PFS_single_stat_chain *stat;
|
|
||||||
PFS_rwlock *rwlock= pfs_locker->m_target.m_rwlock;
|
PFS_rwlock *rwlock= pfs_locker->m_target.m_rwlock;
|
||||||
|
PFS_single_stat_chain *stat= find_per_thread_rwlock_class_wait_stat(wait->m_thread, rwlock->m_class);
|
||||||
|
|
||||||
if (rwlock->m_readers == 0)
|
if (rwlock->m_readers == 0)
|
||||||
rwlock->m_last_read= wait->m_timer_end;
|
rwlock->m_last_read= wait->m_timer_end;
|
||||||
rwlock->m_writer= NULL;
|
rwlock->m_writer= NULL;
|
||||||
rwlock->m_readers++;
|
rwlock->m_readers++;
|
||||||
|
|
||||||
|
/* If timed then aggregate stats, else increment the value counts only */
|
||||||
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
||||||
{
|
{
|
||||||
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
||||||
aggregate_single_stat_chain(&rwlock->m_wait_stat, wait_time);
|
aggregate_single_stat_chain(&rwlock->m_wait_stat, wait_time);
|
||||||
stat= find_per_thread_rwlock_class_wait_stat(wait->m_thread, rwlock->m_class);
|
|
||||||
aggregate_single_stat_chain(stat, wait_time);
|
aggregate_single_stat_chain(stat, wait_time);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
increment_single_stat_chain(&rwlock->m_wait_stat);
|
||||||
|
increment_single_stat_chain(stat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
wait->m_thread->m_wait_locker_count--;
|
wait->m_thread->m_wait_locker_count--;
|
||||||
}
|
}
|
||||||
@ -1735,21 +1749,26 @@ static void end_rwlock_wrwait_v1(PSI_rwlock_locker* locker, int rc)
|
|||||||
if (rc == 0)
|
if (rc == 0)
|
||||||
{
|
{
|
||||||
/* Thread safe : we are protected by the instrumented rwlock */
|
/* Thread safe : we are protected by the instrumented rwlock */
|
||||||
PFS_single_stat_chain *stat;
|
|
||||||
PFS_rwlock *rwlock= pfs_locker->m_target.m_rwlock;
|
PFS_rwlock *rwlock= pfs_locker->m_target.m_rwlock;
|
||||||
|
PFS_single_stat_chain *stat= find_per_thread_rwlock_class_wait_stat(wait->m_thread, rwlock->m_class);
|
||||||
rwlock->m_writer= wait->m_thread;
|
rwlock->m_writer= wait->m_thread;
|
||||||
rwlock->m_last_written= wait->m_timer_end;
|
rwlock->m_last_written= wait->m_timer_end;
|
||||||
/* Reset the readers stats, they could be off */
|
/* Reset the readers stats, they could be off */
|
||||||
rwlock->m_readers= 0;
|
rwlock->m_readers= 0;
|
||||||
rwlock->m_last_read= 0;
|
rwlock->m_last_read= 0;
|
||||||
|
|
||||||
|
/* If timed then aggregate stats, else increment the value counts only */
|
||||||
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
||||||
{
|
{
|
||||||
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
||||||
aggregate_single_stat_chain(&rwlock->m_wait_stat, wait_time);
|
aggregate_single_stat_chain(&rwlock->m_wait_stat, wait_time);
|
||||||
stat= find_per_thread_rwlock_class_wait_stat(wait->m_thread, rwlock->m_class);
|
|
||||||
aggregate_single_stat_chain(stat, wait_time);
|
aggregate_single_stat_chain(stat, wait_time);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
increment_single_stat_chain(&rwlock->m_wait_stat);
|
||||||
|
increment_single_stat_chain(stat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
wait->m_thread->m_wait_locker_count--;
|
wait->m_thread->m_wait_locker_count--;
|
||||||
}
|
}
|
||||||
@ -1803,16 +1822,21 @@ static void end_cond_wait_v1(PSI_cond_locker* locker, int rc)
|
|||||||
in condition B.
|
in condition B.
|
||||||
This is accepted, the data will be slightly inaccurate.
|
This is accepted, the data will be slightly inaccurate.
|
||||||
*/
|
*/
|
||||||
PFS_single_stat_chain *stat;
|
|
||||||
PFS_cond *cond= pfs_locker->m_target.m_cond;
|
PFS_cond *cond= pfs_locker->m_target.m_cond;
|
||||||
|
PFS_single_stat_chain *stat= find_per_thread_cond_class_wait_stat(wait->m_thread, cond->m_class);
|
||||||
|
|
||||||
|
/* If timed then aggregate stats, else increment the value counts only */
|
||||||
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
||||||
{
|
{
|
||||||
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
||||||
aggregate_single_stat_chain(&cond->m_wait_stat, wait_time);
|
aggregate_single_stat_chain(&cond->m_wait_stat, wait_time);
|
||||||
stat= find_per_thread_cond_class_wait_stat(wait->m_thread, cond->m_class);
|
|
||||||
aggregate_single_stat_chain(stat, wait_time);
|
aggregate_single_stat_chain(stat, wait_time);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
increment_single_stat_chain(&cond->m_wait_stat);
|
||||||
|
increment_single_stat_chain(stat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
wait->m_thread->m_wait_locker_count--;
|
wait->m_thread->m_wait_locker_count--;
|
||||||
}
|
}
|
||||||
@ -1855,12 +1879,18 @@ static void end_table_wait_v1(PSI_table_locker* locker)
|
|||||||
if (flag_events_waits_history_long)
|
if (flag_events_waits_history_long)
|
||||||
insert_events_waits_history_long(wait);
|
insert_events_waits_history_long(wait);
|
||||||
|
|
||||||
|
PFS_table *table= pfs_locker->m_target.m_table;
|
||||||
|
|
||||||
|
/* If timed then aggregate stats, else increment the value counts only */
|
||||||
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
||||||
{
|
{
|
||||||
PFS_table *table= pfs_locker->m_target.m_table;
|
|
||||||
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
||||||
aggregate_single_stat_chain(&table->m_wait_stat, wait_time);
|
aggregate_single_stat_chain(&table->m_wait_stat, wait_time);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
increment_single_stat_chain(&table->m_wait_stat);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
There is currently no per table and per thread aggregation.
|
There is currently no per table and per thread aggregation.
|
||||||
@ -1962,14 +1992,21 @@ static void end_file_wait_v1(PSI_file_locker *locker,
|
|||||||
if (flag_events_waits_history_long)
|
if (flag_events_waits_history_long)
|
||||||
insert_events_waits_history_long(wait);
|
insert_events_waits_history_long(wait);
|
||||||
|
|
||||||
PFS_single_stat_chain *stat;
|
|
||||||
PFS_file *file= pfs_locker->m_target.m_file;
|
PFS_file *file= pfs_locker->m_target.m_file;
|
||||||
|
PFS_single_stat_chain *stat= find_per_thread_file_class_wait_stat(wait->m_thread, file->m_class);
|
||||||
|
|
||||||
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
/* If timed then aggregate stats, else increment the value counts only */
|
||||||
aggregate_single_stat_chain(&file->m_wait_stat, wait_time);
|
if (wait->m_timer_state == TIMER_STATE_TIMED)
|
||||||
stat= find_per_thread_file_class_wait_stat(wait->m_thread,
|
{
|
||||||
file->m_class);
|
ulonglong wait_time= wait->m_timer_end - wait->m_timer_start;
|
||||||
aggregate_single_stat_chain(stat, wait_time);
|
aggregate_single_stat_chain(&file->m_wait_stat, wait_time);
|
||||||
|
aggregate_single_stat_chain(stat, wait_time);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
increment_single_stat_chain(&file->m_wait_stat);
|
||||||
|
increment_single_stat_chain(stat);
|
||||||
|
}
|
||||||
|
|
||||||
PFS_file_class *klass= file->m_class;
|
PFS_file_class *klass= file->m_class;
|
||||||
|
|
||||||
|
@ -25,13 +25,13 @@
|
|||||||
#define PFS_MAX_MUTEX_CLASS 200
|
#define PFS_MAX_MUTEX_CLASS 200
|
||||||
#endif
|
#endif
|
||||||
#ifndef PFS_MAX_MUTEX
|
#ifndef PFS_MAX_MUTEX
|
||||||
#define PFS_MAX_MUTEX 1000
|
#define PFS_MAX_MUTEX 1000000
|
||||||
#endif
|
#endif
|
||||||
#ifndef PFS_MAX_RWLOCK_CLASS
|
#ifndef PFS_MAX_RWLOCK_CLASS
|
||||||
#define PFS_MAX_RWLOCK_CLASS 20
|
#define PFS_MAX_RWLOCK_CLASS 30
|
||||||
#endif
|
#endif
|
||||||
#ifndef PFS_MAX_RWLOCK
|
#ifndef PFS_MAX_RWLOCK
|
||||||
#define PFS_MAX_RWLOCK 1000
|
#define PFS_MAX_RWLOCK 1000000
|
||||||
#endif
|
#endif
|
||||||
#ifndef PFS_MAX_COND_CLASS
|
#ifndef PFS_MAX_COND_CLASS
|
||||||
#define PFS_MAX_COND_CLASS 80
|
#define PFS_MAX_COND_CLASS 80
|
||||||
|
@ -83,6 +83,22 @@ inline void aggregate_single_stat_chain(PFS_single_stat_chain *stat,
|
|||||||
while (stat);
|
while (stat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Increment the value counts in a statistic chain.
|
||||||
|
Used for instruments that are 'ENABLED' but not 'TIMED'.
|
||||||
|
@param stat the aggregated statistic chain
|
||||||
|
*/
|
||||||
|
inline void increment_single_stat_chain(PFS_single_stat_chain *stat)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (*stat->m_control_flag)
|
||||||
|
stat->m_count++;
|
||||||
|
stat= stat->m_parent;
|
||||||
|
}
|
||||||
|
while (stat);
|
||||||
|
}
|
||||||
|
|
||||||
/** Statistics for COND usage. */
|
/** Statistics for COND usage. */
|
||||||
struct PFS_cond_stat
|
struct PFS_cond_stat
|
||||||
{
|
{
|
||||||
|
@ -1469,7 +1469,7 @@ my_strnncoll_utf16_bin(CHARSET_INFO *cs,
|
|||||||
}
|
}
|
||||||
if (s_wc != t_wc)
|
if (s_wc != t_wc)
|
||||||
{
|
{
|
||||||
return s_wc > t_wc ? 1 : -1;
|
return my_bincmp(s, s + s_res, t, t + t_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
s+= s_res;
|
s+= s_res;
|
||||||
@ -1511,7 +1511,7 @@ my_strnncollsp_utf16_bin(CHARSET_INFO *cs,
|
|||||||
|
|
||||||
if (s_wc != t_wc)
|
if (s_wc != t_wc)
|
||||||
{
|
{
|
||||||
return s_wc > t_wc ? 1 : -1;
|
return my_bincmp(s, s + s_res, t, t + t_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
s+= s_res;
|
s+= s_res;
|
||||||
@ -1684,8 +1684,8 @@ static MY_COLLATION_HANDLER my_collation_utf16_bin_handler =
|
|||||||
NULL, /* init */
|
NULL, /* init */
|
||||||
my_strnncoll_utf16_bin,
|
my_strnncoll_utf16_bin,
|
||||||
my_strnncollsp_utf16_bin,
|
my_strnncollsp_utf16_bin,
|
||||||
my_strnxfrm_unicode,
|
my_strnxfrm_unicode_full_bin,
|
||||||
my_strnxfrmlen_simple,
|
my_strnxfrmlen_unicode_full_bin,
|
||||||
my_like_range_utf16,
|
my_like_range_utf16,
|
||||||
my_wildcmp_utf16_bin,
|
my_wildcmp_utf16_bin,
|
||||||
my_strcasecmp_mb2_or_mb4,
|
my_strcasecmp_mb2_or_mb4,
|
||||||
@ -2711,8 +2711,8 @@ static MY_COLLATION_HANDLER my_collation_utf32_bin_handler =
|
|||||||
NULL, /* init */
|
NULL, /* init */
|
||||||
my_strnncoll_utf32_bin,
|
my_strnncoll_utf32_bin,
|
||||||
my_strnncollsp_utf32_bin,
|
my_strnncollsp_utf32_bin,
|
||||||
my_strnxfrm_unicode,
|
my_strnxfrm_unicode_full_bin,
|
||||||
my_strnxfrmlen_utf32,
|
my_strnxfrmlen_unicode_full_bin,
|
||||||
my_like_range_utf32,
|
my_like_range_utf32,
|
||||||
my_wildcmp_utf32_bin,
|
my_wildcmp_utf32_bin,
|
||||||
my_strcasecmp_mb2_or_mb4,
|
my_strcasecmp_mb2_or_mb4,
|
||||||
|
@ -1893,7 +1893,13 @@ my_wildcmp_unicode(CHARSET_INFO *cs,
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This function is shared between utf8mb3/utf8mb4/ucs2/utf16/utf32
|
Store sorting weights using 2 bytes per character.
|
||||||
|
|
||||||
|
This function is shared between
|
||||||
|
- utf8mb3_general_ci, utf8_bin, ucs2_general_ci, ucs2_bin
|
||||||
|
which support BMP only (U+0000..U+FFFF).
|
||||||
|
- utf8mb4_general_ci, utf16_general_ci, utf32_general_ci,
|
||||||
|
which map all supplementary characters to weight 0xFFFD.
|
||||||
*/
|
*/
|
||||||
size_t
|
size_t
|
||||||
my_strnxfrm_unicode(CHARSET_INFO *cs,
|
my_strnxfrm_unicode(CHARSET_INFO *cs,
|
||||||
@ -1937,6 +1943,70 @@ my_strnxfrm_unicode(CHARSET_INFO *cs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Store sorting weights using 3 bytes per character.
|
||||||
|
This function is shared between utf8mb4_bin, utf16_bin, utf32_bin.
|
||||||
|
*/
|
||||||
|
size_t
|
||||||
|
my_strnxfrm_unicode_full_bin(CHARSET_INFO *cs,
|
||||||
|
uchar *dst, size_t dstlen,
|
||||||
|
const uchar *src, size_t srclen)
|
||||||
|
{
|
||||||
|
my_wc_t wc;
|
||||||
|
uchar *de= dst + dstlen;
|
||||||
|
uchar *de_beg= de - 2; /* The beginning of the last chunk */
|
||||||
|
const uchar *se = src + srclen;
|
||||||
|
|
||||||
|
LINT_INIT(wc);
|
||||||
|
DBUG_ASSERT(src);
|
||||||
|
DBUG_ASSERT(cs->state & MY_CS_BINSORT);
|
||||||
|
|
||||||
|
while (dst < de_beg)
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
|
||||||
|
break;
|
||||||
|
src+= res;
|
||||||
|
if (cs->mbminlen == 2) /* utf16_bin */
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Reorder code points to weights as follows:
|
||||||
|
U+0000..U+D7FF -> [00][00][00]..[00][D7][FF] BMP part #1
|
||||||
|
U+10000..U+10FFFF -> [01][00][00]..[10][FF][FF] Supplementary
|
||||||
|
U+E000..U+FFFF -> [20][E0][00]..[20][FF][FF] BMP part #2
|
||||||
|
*/
|
||||||
|
if (wc >= 0xE000 && wc <= 0xFFFF)
|
||||||
|
wc+= 0x200000;
|
||||||
|
}
|
||||||
|
*dst++= (uchar) (wc >> 16);
|
||||||
|
*dst++= (uchar) ((wc >> 8) & 0xFF);
|
||||||
|
*dst++= (uchar) (wc & 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (dst < de_beg) /* Fill the tail with keys for space character */
|
||||||
|
{
|
||||||
|
*dst++= 0x00;
|
||||||
|
*dst++= 0x00;
|
||||||
|
*dst++= 0x20;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clear the last one or two bytes, if "dstlen" was not divisible by 3 */
|
||||||
|
if (dst < de)
|
||||||
|
{
|
||||||
|
*dst++= 0x00;
|
||||||
|
if (dst < de)
|
||||||
|
*dst= 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dstlen;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
size_t
|
||||||
|
my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *cs, size_t len)
|
||||||
|
{
|
||||||
|
return ((len + 3) / cs->mbmaxlen) * 3;
|
||||||
|
}
|
||||||
#endif /* HAVE_UNIDATA */
|
#endif /* HAVE_UNIDATA */
|
||||||
|
|
||||||
|
|
||||||
@ -5067,8 +5137,8 @@ static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
|
|||||||
NULL, /* init */
|
NULL, /* init */
|
||||||
my_strnncoll_mb_bin,
|
my_strnncoll_mb_bin,
|
||||||
my_strnncollsp_mb_bin,
|
my_strnncollsp_mb_bin,
|
||||||
my_strnxfrm_unicode,
|
my_strnxfrm_unicode_full_bin,
|
||||||
my_strnxfrmlen_utf8mb4,
|
my_strnxfrmlen_unicode_full_bin,
|
||||||
my_like_range_mb,
|
my_like_range_mb,
|
||||||
my_wildcmp_mb_bin,
|
my_wildcmp_mb_bin,
|
||||||
my_strcasecmp_mb_bin,
|
my_strcasecmp_mb_bin,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user