Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
73570819
Commit
73570819
authored
Aug 27, 2010
by
Marc Alff
Browse files
Options
Browse Files
Download
Plain Diff
local merge
parents
d2df3a8a
c2c833e4
Changes
48
Show whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
903 additions
and
113 deletions
+903
-113
Makefile.am
Makefile.am
+2
-1
cmake/abi_check.cmake
cmake/abi_check.cmake
+10
-8
cmake/do_abi_check.cmake
cmake/do_abi_check.cmake
+3
-2
include/mysql/plugin_audit.h.pp
include/mysql/plugin_audit.h.pp
+196
-0
include/mysql/plugin_ftparser.h.pp
include/mysql/plugin_ftparser.h.pp
+46
-46
mysql-test/mysql-test-run.pl
mysql-test/mysql-test-run.pl
+2
-3
mysql-test/r/create.result
mysql-test/r/create.result
+1
-0
mysql-test/r/ctype_utf32.result
mysql-test/r/ctype_utf32.result
+13
-0
mysql-test/r/handler_read_last.result
mysql-test/r/handler_read_last.result
+60
-0
mysql-test/r/insert_select.result
mysql-test/r/insert_select.result
+1
-0
mysql-test/r/join.result
mysql-test/r/join.result
+1
-0
mysql-test/r/join_outer.result
mysql-test/r/join_outer.result
+1
-0
mysql-test/r/mysql.result
mysql-test/r/mysql.result
+0
-3
mysql-test/r/mysql_not_windows.result
mysql-test/r/mysql_not_windows.result
+5
-0
mysql-test/r/null_key.result
mysql-test/r/null_key.result
+1
-0
mysql-test/r/partition.result
mysql-test/r/partition.result
+6
-0
mysql-test/r/select.result
mysql-test/r/select.result
+1
-0
mysql-test/r/single_delete_update.result
mysql-test/r/single_delete_update.result
+42
-0
mysql-test/r/subselect3.result
mysql-test/r/subselect3.result
+1
-0
mysql-test/r/update.result
mysql-test/r/update.result
+10
-0
mysql-test/suite/ndb/r/ndb_binlog_ddl_multi.result
mysql-test/suite/ndb/r/ndb_binlog_ddl_multi.result
+1
-1
mysql-test/suite/ndb/r/ndb_binlog_ignore_db.result
mysql-test/suite/ndb/r/ndb_binlog_ignore_db.result
+1
-1
mysql-test/suite/ndb/r/ndb_binlog_log_bin.result
mysql-test/suite/ndb/r/ndb_binlog_log_bin.result
+2
-2
mysql-test/suite/ndb/r/ndb_binlog_multi.result
mysql-test/suite/ndb/r/ndb_binlog_multi.result
+2
-2
mysql-test/suite/perfschema/r/bad_option_3.result
mysql-test/suite/perfschema/r/bad_option_3.result
+2
-0
mysql-test/suite/perfschema/r/bad_option_4.result
mysql-test/suite/perfschema/r/bad_option_4.result
+2
-0
mysql-test/suite/perfschema/r/bad_option_5.result
mysql-test/suite/perfschema/r/bad_option_5.result
+2
-0
mysql-test/suite/perfschema/r/short_option_1.result
mysql-test/suite/perfschema/r/short_option_1.result
+27
-0
mysql-test/suite/perfschema/r/short_option_2.result
mysql-test/suite/perfschema/r/short_option_2.result
+9
-0
mysql-test/suite/perfschema/t/bad_option_3.test
mysql-test/suite/perfschema/t/bad_option_3.test
+49
-0
mysql-test/suite/perfschema/t/bad_option_4.test
mysql-test/suite/perfschema/t/bad_option_4.test
+49
-0
mysql-test/suite/perfschema/t/bad_option_5.test
mysql-test/suite/perfschema/t/bad_option_5.test
+52
-0
mysql-test/suite/perfschema/t/short_option_1-master.opt
mysql-test/suite/perfschema/t/short_option_1-master.opt
+1
-0
mysql-test/suite/perfschema/t/short_option_1.test
mysql-test/suite/perfschema/t/short_option_1.test
+35
-0
mysql-test/suite/perfschema/t/short_option_2-master.opt
mysql-test/suite/perfschema/t/short_option_2-master.opt
+1
-0
mysql-test/suite/perfschema/t/short_option_2.test
mysql-test/suite/perfschema/t/short_option_2.test
+29
-0
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
+3
-3
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
+3
-3
mysql-test/t/ctype_utf32.test
mysql-test/t/ctype_utf32.test
+11
-0
mysql-test/t/handler_read_last.test
mysql-test/t/handler_read_last.test
+40
-0
mysql-test/t/mysql.test
mysql-test/t/mysql.test
+0
-6
mysql-test/t/mysql_not_windows.test
mysql-test/t/mysql_not_windows.test
+15
-0
mysys/my_getopt.c
mysys/my_getopt.c
+76
-7
sql/mysqld.cc
sql/mysqld.cc
+1
-0
sql/set_var.cc
sql/set_var.cc
+11
-0
storage/myisam/mi_key.c
storage/myisam/mi_key.c
+5
-6
storage/perfschema/pfs.cc
storage/perfschema/pfs.cc
+56
-19
storage/perfschema/pfs_stat.h
storage/perfschema/pfs_stat.h
+16
-0
No files found.
Makefile.am
View file @
73570819
...
...
@@ -264,7 +264,8 @@ test-full-qa:
# 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/psi/psi_abi_v1.h
\
$(top_srcdir)
/include/mysql/psi/psi_abi_v2.h
...
...
cmake/abi_check.cmake
View file @
73570819
...
...
@@ -15,7 +15,8 @@
#
# 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
# 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
}
)
ENDIF
()
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/psi/psi_abi_v1.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
}
-DSOURCE_DIR=
${
CMAKE_SOURCE_DIR
}
-DBINARY_DIR=
${
CMAKE_BINARY_DIR
}
"-D
DMYSQL_ABI_CHECK -D
ABI_HEADERS=
${
API_PREPROCESSOR_HEADER
}
"
"-DABI_HEADERS=
${
API_PREPROCESSOR_HEADER
}
"
-P
${
CMAKE_SOURCE_DIR
}
/cmake/do_abi_check.cmake
VERBATIM
)
ADD_CUSTOM_TARGET
(
abi_check_all
COMMAND
${
CMAKE_COMMAND
}
-DC
MAKE_C_C
OMPILER=
${
COMPILER
}
-D
CMAKE_
SOURCE_DIR=
${
CMAKE_SOURCE_DIR
}
-D
CMAKE_
BINARY_DIR=
${
CMAKE_BINARY_DIR
}
"-D
MYSQL_ABI_CHECK -D
ABI_HEADERS=
${
API_PREPROCESSOR_HEADER
}
"
-P
${
CMAKE_SOURCE_DIR
}
/cmake/
scripts/
do_abi_check.cmake
-DCOMPILER=
${
COMPILER
}
-DSOURCE_DIR=
${
CMAKE_SOURCE_DIR
}
-DBINARY_DIR=
${
CMAKE_BINARY_DIR
}
"-DABI_HEADERS=
${
API_PREPROCESSOR_HEADER
}
"
-P
${
CMAKE_SOURCE_DIR
}
/cmake/do_abi_check.cmake
VERBATIM
)
ENDIF
()
...
...
cmake/do_abi_check.cmake
View file @
73570819
...
...
@@ -56,8 +56,9 @@ FOREACH(file ${ABI_HEADERS})
SET
(
tmpfile
${
file
}
.pp.tmp
)
EXECUTE_PROCESS
(
COMMAND
${
COMPILER
}
-E -nostdinc -dI -I
${
SOURCE_DIR
}
/include -I
${
BINARY_DIR
}
/include
-I
${
SOURCE_DIR
}
/include/mysql -I
${
SOURCE_DIR
}
/sql
${
file
}
-E -nostdinc -dI -DMYSQL_ABI_CHECK -I
${
SOURCE_DIR
}
/include
-I
${
BINARY_DIR
}
/include -I
${
SOURCE_DIR
}
/include/mysql -I
${
SOURCE_DIR
}
/sql
${
file
}
ERROR_QUIET OUTPUT_FILE
${
tmpfile
}
)
EXECUTE_PROCESS
(
COMMAND sed -e
...
...
include/mysql/plugin_audit.h.pp
0 → 100644
View file @
73570819
#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
];
};
include/mysql/plugin.h.pp
→
include/mysql/plugin
_ftparser
.h.pp
View file @
73570819
#include "plugin.h"
#include <mysql/services.h>
#include <mysql/service_my_snprintf.h>
extern
struct
my_snprintf_service_st
{
...
...
@@ -74,7 +75,51 @@ struct st_mysql_plugin
void
*
__reserved1
;
};
#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
{
MYSQL_FTPARSER_SIMPLE_MODE
=
0
,
...
...
@@ -121,48 +166,3 @@ struct st_mysql_ftparser
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
);
mysql-test/mysql-test-run.pl
View file @
73570819
...
...
@@ -2155,9 +2155,8 @@ sub environment_setup {
# mysqlhotcopy
# ----------------------------------------------------
my
$mysqlhotcopy
=
mtr_pl_maybe_exists
("
$bindir
/scripts/mysqlhotcopy
");
# Since mysqltest interprets the real path as "false" in an if,
# use 1 ("true") to indicate "not exists" so it can be tested for
mtr_pl_maybe_exists
("
$bindir
/scripts/mysqlhotcopy
")
||
mtr_pl_maybe_exists
("
$path_client_bindir
/mysqlhotcopy
");
if
(
$mysqlhotcopy
)
{
$ENV
{'
MYSQLHOTCOPY
'}
=
$mysqlhotcopy
;
...
...
mysql-test/r/create.result
View file @
73570819
...
...
@@ -1542,6 +1542,7 @@ show status like 'handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
mysql-test/r/ctype_utf32.result
View file @
73570819
...
...
@@ -1114,5 +1114,18 @@ format(123,2,'no_NO')
123,00
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
#
mysql-test/r/handler_read_last.result
0 → 100644
View file @
73570819
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;
mysql-test/r/insert_select.result
View file @
73570819
...
...
@@ -694,6 +694,7 @@ 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
...
...
mysql-test/r/join.result
View file @
73570819
...
...
@@ -854,6 +854,7 @@ show status like 'Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
mysql-test/r/join_outer.result
View file @
73570819
...
...
@@ -1238,6 +1238,7 @@ show status like 'Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 5
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
mysql-test/r/mysql.result
View file @
73570819
...
...
@@ -432,8 +432,5 @@ Bug #47147: mysql client option --skip-column-names does not apply to vertical o
*************************** 1. row ***************************
1
Bug #54466 client 5.5 built from source lacks "pager" support
a
1
End of tests
mysql-test/r/mysql_not_windows.result
0 → 100644
View file @
73570819
Bug #54466 client 5.5 built from source lacks "pager" support
a
1
End of tests
mysql-test/r/null_key.result
View file @
73570819
...
...
@@ -424,6 +424,7 @@ SHOW STATUS LIKE "handler_read%";
Variable_name Value
Handler_read_first 0
Handler_read_key 6
Handler_read_last 0
Handler_read_next 2
Handler_read_prev 0
Handler_read_rnd 0
...
...
mysql-test/r/partition.result
View file @
73570819
...
...
@@ -359,6 +359,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 2
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -377,6 +378,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 2
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -407,6 +409,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 2
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -423,6 +426,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 2
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -439,6 +443,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 2
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -455,6 +460,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 2
Handler_read_prev 0
Handler_read_rnd 0
...
...
mysql-test/r/select.result
View file @
73570819
...
...
@@ -4338,6 +4338,7 @@ SHOW STATUS LIKE 'Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 2
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
mysql-test/r/single_delete_update.result
View file @
73570819
...
...
@@ -25,6 +25,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -41,6 +42,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -74,6 +76,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -90,6 +93,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 5
...
...
@@ -120,6 +124,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -136,6 +141,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -170,6 +176,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 1
Handler_read_key 0
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -186,6 +193,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 1
Handler_read_key 0
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -214,6 +222,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -230,6 +239,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -256,6 +266,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -272,6 +283,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -301,6 +313,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 2
Handler_read_last 0
Handler_read_next 7
Handler_read_prev 0
Handler_read_rnd 4
...
...
@@ -322,6 +335,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 2
Handler_read_last 0
Handler_read_next 7
Handler_read_prev 0
Handler_read_rnd 8
...
...
@@ -357,6 +371,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 4
Handler_read_rnd 0
...
...
@@ -373,6 +388,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 4
Handler_read_rnd 0
...
...
@@ -406,6 +422,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -422,6 +439,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 5
...
...
@@ -464,6 +482,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 1
Handler_read_key 0
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -486,6 +505,7 @@ 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 4
Handler_read_rnd 0
...
...
@@ -502,6 +522,7 @@ 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 4
Handler_read_rnd 0
...
...
@@ -536,6 +557,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -552,6 +574,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 5
...
...
@@ -590,6 +613,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -606,6 +630,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 5
...
...
@@ -641,6 +666,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -657,6 +683,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -691,6 +718,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 1
Handler_read_key 0
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -707,6 +735,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 1
Handler_read_key 0
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 5
...
...
@@ -735,6 +764,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -751,6 +781,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -778,6 +809,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -794,6 +826,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -824,6 +857,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 2
Handler_read_last 0
Handler_read_next 7
Handler_read_prev 0
Handler_read_rnd 4
...
...
@@ -845,6 +879,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 2
Handler_read_last 0
Handler_read_next 7
Handler_read_prev 0
Handler_read_rnd 8
...
...
@@ -884,6 +919,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 4
Handler_read_rnd 0
...
...
@@ -900,6 +936,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 4
Handler_read_rnd 5
...
...
@@ -938,6 +975,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -954,6 +992,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 5
...
...
@@ -990,6 +1029,7 @@ SHOW STATUS LIKE 'Handler_read_%';
Variable_name Value
Handler_read_first 1
Handler_read_key 0
Handler_read_last 0
Handler_read_next 4
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -1012,6 +1052,7 @@ 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 4
Handler_read_rnd 0
...
...
@@ -1028,6 +1069,7 @@ 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 4
Handler_read_rnd 5
...
...
mysql-test/r/subselect3.result
View file @
73570819
...
...
@@ -113,6 +113,7 @@ show status like '%Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
mysql-test/r/update.result
View file @
73570819
...
...
@@ -273,6 +273,7 @@ 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
...
...
@@ -284,6 +285,7 @@ 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 2
...
...
@@ -294,6 +296,7 @@ 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
...
...
@@ -304,6 +307,7 @@ 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
...
...
@@ -315,6 +319,7 @@ show status like 'handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -368,6 +373,7 @@ show status like 'handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 1
Handler_read_prev 0
Handler_read_rnd 1
...
...
@@ -405,6 +411,7 @@ show status like '%Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -415,6 +422,7 @@ show status like '%Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 2
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -424,6 +432,7 @@ show status like '%Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 3
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
@@ -433,6 +442,7 @@ show status like '%Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 3
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
...
...
mysql-test/suite/ndb/r/ndb_binlog_ddl_multi.result
View file @
73570819
...
...
@@ -193,4 +193,4 @@ mysqld-bin.000001 # Table_map 2 # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows 2 # table_id: #
mysqld-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query 2 # COMMIT
mysqld-bin.000001 # Query 2 # use `test`;
drop table t2
mysqld-bin.000001 # Query 2 # use `test`;
DROP TABLE `t2` /* generated by server */
mysql-test/suite/ndb/r/ndb_binlog_ignore_db.result
View file @
73570819
...
...
@@ -7,5 +7,5 @@ create table t1 (a int primary key, b int) engine=ndb;
insert into t1 values (1, 1);
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-bin.000001 # Query 1 # use `test`;
drop table if exists t1
mysqld-bin.000001 # Query 1 # use `test`;
DROP TABLE IF EXISTS `t1` /* generated by server */
drop database mysqltest;
mysql-test/suite/ndb/r/ndb_binlog_log_bin.result
View file @
73570819
...
...
@@ -47,8 +47,8 @@ mysqld-bin.000001 # Table_map 1 # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows 1 # table_id: #
mysqld-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query 1 # COMMIT
mysqld-bin.000001 # Query 1 # use `mysqltest`;
drop table t1
mysqld-bin.000001 # Query 1 # use `mysqltest`;
drop table t2
mysqld-bin.000001 # Query 1 # use `mysqltest`;
DROP TABLE `t1` /* generated by server */
mysqld-bin.000001 # Query 1 # use `mysqltest`;
DROP TABLE `t2` /* generated by server */
mysqld-bin.000001 # Query 1 # use `mysqltest`; create table t1 (d int key, e int) engine=ndb
mysqld-bin.000001 # Query 1 # use `mysqltest`; create table t2 (d int key, e int) engine=ndb
mysqld-bin.000001 # Query 1 # BEGIN
...
...
mysql-test/suite/ndb/r/ndb_binlog_multi.result
View file @
73570819
...
...
@@ -37,7 +37,7 @@ mysqld-bin.000001 # Table_map 1 # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows 1 # table_id: #
mysqld-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query 1 # COMMIT
mysqld-bin.000001 # Query 1 # use `test`; DROP TABLE
t2
mysqld-bin.000001 # Query 1 # use `test`; DROP TABLE
`t2` /* generated by server */
SELECT inserts,updates,deletes,schemaops FROM
mysql.ndb_binlog_index WHERE epoch=<the_epoch>;
inserts updates deletes schemaops
...
...
@@ -73,7 +73,7 @@ mysqld-bin.000001 # Table_map 2 # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows 2 # table_id: #
mysqld-bin.000001 # Write_rows 2 # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query 2 # COMMIT
mysqld-bin.000001 # Query 2 # use `test`;
drop table t1
mysqld-bin.000001 # Query 2 # use `test`;
DROP TABLE `t1` /* generated by server */
SELECT inserts,updates,deletes,schemaops FROM
mysql.ndb_binlog_index WHERE epoch > <the_epoch> AND epoch <= <the_epoch2>;
inserts updates deletes schemaops
...
...
mysql-test/suite/perfschema/r/bad_option_3.result
0 → 100644
View file @
73570819
Found: unknown option '-x'
Found: Aborting
mysql-test/suite/perfschema/r/bad_option_4.result
0 → 100644
View file @
73570819
Found: Can't change dir to.*bad_option_h_param
Found: Aborting
mysql-test/suite/perfschema/r/bad_option_5.result
0 → 100644
View file @
73570819
Found: unknown option '-X'
Found: Aborting
mysql-test/suite/perfschema/r/short_option_1.result
0 → 100644
View file @
73570819
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
mysql-test/suite/perfschema/r/short_option_2.result
0 → 100644
View file @
73570819
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
mysql-test/suite/perfschema/t/bad_option_3.test
0 → 100644
View file @
73570819
# 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
mysql-test/suite/perfschema/t/bad_option_4.test
0 → 100644
View file @
73570819
# 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
mysql-test/suite/perfschema/t/bad_option_5.test
0 → 100644
View file @
73570819
# 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
mysql-test/suite/perfschema/t/short_option_1-master.opt
0 → 100644
View file @
73570819
-a -n -Cutf8 --collation=utf8_bin -l -T12 -W3
mysql-test/suite/perfschema/t/short_option_1.test
0 → 100644
View file @
73570819
# 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'
;
mysql-test/suite/perfschema/t/short_option_2-master.opt
0 → 100644
View file @
73570819
-aW5
mysql-test/suite/perfschema/t/short_option_2.test
0 → 100644
View file @
73570819
# 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
;
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
View file @
73570819
...
...
@@ -25,7 +25,7 @@ master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`;
drop table t1
master-bin.000001 # Query # # use `test`;
DROP TABLE `t1` /* generated by server */
master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
...
...
@@ -204,7 +204,7 @@ master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`;
drop table t1
master-bin.000001 # Query # # use `test`;
DROP TABLE `t1` /* generated by server */
master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
...
...
@@ -240,7 +240,7 @@ slave-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
slave-bin.000001 # Write_rows # # table_id: #
slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
slave-bin.000001 # Query # # COMMIT
slave-bin.000001 # Query # # use `test`;
drop table t1
slave-bin.000001 # Query # # use `test`;
DROP TABLE `t1` /* generated by server */
slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
slave-bin.000001 # Query # # BEGIN
slave-bin.000001 # Table_map # # table_id: # (test.t1)
...
...
mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
View file @
73570819
...
...
@@ -37,7 +37,7 @@ master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
master-bin.000001 # Query # # use `test`; DROP TABLE
t1
master-bin.000001 # Query # # use `test`; DROP TABLE
`t1` /* generated by server */
**** On Master ****
CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB;
INSERT INTO t1 VALUES (1,1), (2,2);
...
...
@@ -72,7 +72,7 @@ master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
master-bin.000001 # Query # # use `test`; DROP TABLE
t1
master-bin.000001 # Query # # use `test`; DROP TABLE
`t1` /* generated by server */
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
...
...
@@ -86,4 +86,4 @@ master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; DROP TABLE
t1
master-bin.000001 # Query # # use `test`; DROP TABLE
`t1` /* generated by server */
mysql-test/t/ctype_utf32.test
View file @
73570819
...
...
@@ -818,6 +818,17 @@ SHOW CREATE TABLE t1;
SELECT
*
FROM
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
# End of 5.5 tests
--
echo
#
mysql-test/t/handler_read_last.test
0 → 100644
View file @
73570819
# 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
;
mysql-test/t/mysql.test
View file @
73570819
...
...
@@ -425,11 +425,5 @@ drop table t1;
--
echo
--
exec
$MYSQL
--
skip
-
column
-
names
--
vertical
test
-
e
"select 1 as a"
#
# Bug #54466 client 5.5 built from source lacks "pager" support
#
--
echo
Bug
#54466 client 5.5 built from source lacks "pager" support
--
exec
$MYSQL
--
pager
test
-
e
"select 1 as a"
--
echo
--
echo
End
of
tests
mysql-test/t/mysql_not_windows.test
0 → 100644
View file @
73570819
--
source
include
/
not_windows
.
inc
# This test should work in embedded server after we fix mysqltest
--
source
include
/
not_embedded
.
inc
#
# Testing the MySQL command line client(mysql)
#
#
# Bug #54466 client 5.5 built from source lacks "pager" support
#
--
echo
Bug
#54466 client 5.5 built from source lacks "pager" support
--
exec
$MYSQL
--
pager
test
-
e
"select 1 as a"
--
echo
--
echo
End
of
tests
mysys/my_getopt.c
View file @
73570819
...
...
@@ -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'.
Check that option was given an argument if it requires one
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] argv command line options (values)
@param [in] longopts descriptor of all valid options
...
...
@@ -463,6 +506,30 @@ int handle_options(int *argc, char ***argv,
}
}
if
(
!
opt_found
)
{
if
(
my_getopt_skip_unknown
)
{
/*
We are currently parsing a single argv[] argument
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
,
...
...
@@ -471,6 +538,8 @@ int handle_options(int *argc, char ***argv,
return
EXIT_UNKNOWN_OPTION
;
}
}
}
if
(
opt_found
)
(
*
argc
)
--
;
/* option handled (short), decrease argument count */
continue
;
}
...
...
@@ -479,7 +548,7 @@ int handle_options(int *argc, char ***argv,
if
(
get_one_option
&&
get_one_option
(
optp
->
id
,
optp
,
argument
))
return
EXIT_UNSPECIFIED_ERROR
;
(
*
argc
)
--
;
/* option handled (
short or
long), decrease argument count */
(
*
argc
)
--
;
/* option handled (long), decrease argument count */
}
else
/* non-option found */
(
*
argv
)[
argvpos
++
]
=
cur_arg
;
...
...
sql/mysqld.cc
View file @
73570819
...
...
@@ -6439,6 +6439,7 @@ SHOW_VAR status_vars[]= {
{
"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_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_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
},
...
...
sql/set_var.cc
View file @
73570819
...
...
@@ -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
),
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
.
length
=
strlen
(
name_arg
);
DBUG_ASSERT
(
name
.
length
<=
NAME_CHAR_LEN
);
...
...
storage/myisam/mi_key.c
View file @
73570819
...
...
@@ -253,18 +253,17 @@ uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key, uchar *old,
pos
=
old
;
if
(
keyseg
->
flag
&
HA_SPACE_PACK
)
{
uchar
*
end
=
pos
+
length
;
if
(
type
==
HA_KEYTYPE_NUM
)
{
uchar
*
end
=
pos
+
length
;
while
(
pos
<
end
&&
pos
[
0
]
==
' '
)
pos
++
;
length
=
(
uint
)
(
end
-
pos
);
}
else
if
(
type
!=
HA_KEYTYPE_BINARY
)
{
while
(
end
>
pos
&&
end
[
-
1
]
==
' '
)
end
--
;
length
=
cs
->
cset
->
lengthsp
(
cs
,
(
char
*
)
pos
,
length
);
}
length
=
(
uint
)
(
end
-
pos
);
FIX_LENGTH
(
cs
,
pos
,
length
,
char_length
);
store_key_length_inc
(
key
,
char_length
);
memcpy
((
uchar
*
)
key
,
pos
,(
size_t
)
char_length
);
...
...
storage/perfschema/pfs.cc
View file @
73570819
...
...
@@ -1625,19 +1625,27 @@ static void end_mutex_wait_v1(PSI_mutex_locker* locker, int rc)
if
(
flag_events_waits_history_long
)
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 */
PFS_single_stat_chain
*
stat
;
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_last_locked
=
wait
->
m_timer_end
;
/* If timed then aggregate stats, else increment the value counts only */
if
(
wait
->
m_timer_state
==
TIMER_STATE_TIMED
)
{
ulonglong
wait_time
=
wait
->
m_timer_end
-
wait
->
m_timer_start
;
aggregate_single_stat_chain
(
&
mutex
->
m_wait_stat
,
wait_time
);
stat
=
find_per_thread_mutex_class_wait_stat
(
wait
->
m_thread
,
mutex
->
m_class
);
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
--
;
}
...
...
@@ -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
just statistics, not facts.
*/
PFS_single_stat_chain
*
stat
;
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
)
rwlock
->
m_last_read
=
wait
->
m_timer_end
;
rwlock
->
m_writer
=
NULL
;
rwlock
->
m_readers
++
;
/* If timed then aggregate stats, else increment the value counts only */
if
(
wait
->
m_timer_state
==
TIMER_STATE_TIMED
)
{
ulonglong
wait_time
=
wait
->
m_timer_end
-
wait
->
m_timer_start
;
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
);
}
else
{
increment_single_stat_chain
(
&
rwlock
->
m_wait_stat
);
increment_single_stat_chain
(
stat
);
}
}
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
)
{
/* Thread safe : we are protected by the instrumented rwlock */
PFS_single_stat_chain
*
stat
;
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_last_written
=
wait
->
m_timer_end
;
/* Reset the readers stats, they could be off */
rwlock
->
m_readers
=
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
)
{
ulonglong
wait_time
=
wait
->
m_timer_end
-
wait
->
m_timer_start
;
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
);
}
else
{
increment_single_stat_chain
(
&
rwlock
->
m_wait_stat
);
increment_single_stat_chain
(
stat
);
}
}
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.
This is accepted, the data will be slightly inaccurate.
*/
PFS_single_stat_chain
*
stat
;
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
)
{
ulonglong
wait_time
=
wait
->
m_timer_end
-
wait
->
m_timer_start
;
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
);
}
else
{
increment_single_stat_chain
(
&
cond
->
m_wait_stat
);
increment_single_stat_chain
(
stat
);
}
}
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
)
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
)
{
PFS_table
*
table
=
pfs_locker
->
m_target
.
m_table
;
ulonglong
wait_time
=
wait
->
m_timer_end
-
wait
->
m_timer_start
;
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.
...
...
@@ -1962,14 +1992,21 @@ static void end_file_wait_v1(PSI_file_locker *locker,
if
(
flag_events_waits_history_long
)
insert_events_waits_history_long
(
wait
);
PFS_single_stat_chain
*
stat
;
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
);
/* If timed then aggregate stats, else increment the value counts only */
if
(
wait
->
m_timer_state
==
TIMER_STATE_TIMED
)
{
ulonglong
wait_time
=
wait
->
m_timer_end
-
wait
->
m_timer_start
;
aggregate_single_stat_chain
(
&
file
->
m_wait_stat
,
wait_time
);
stat
=
find_per_thread_file_class_wait_stat
(
wait
->
m_thread
,
file
->
m_class
);
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
;
...
...
storage/perfschema/pfs_stat.h
View file @
73570819
...
...
@@ -83,6 +83,22 @@ inline void aggregate_single_stat_chain(PFS_single_stat_chain *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. */
struct
PFS_cond_stat
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment