mirror of
https://github.com/MariaDB/server.git
synced 2026-05-06 23:25:34 +02:00
Merge with the latest changes of 5.2
This commit is contained in:
commit
32a4805c5c
105 changed files with 2471 additions and 520 deletions
|
|
@ -9,6 +9,6 @@ PATH=$PATH:/usr/ccs/bin:/usr/local/bin
|
|||
path=`dirname $0`
|
||||
. "$path/autorun.sh"
|
||||
|
||||
CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa" CXX=gcc CXXFLAGS="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa -g" LIBS="-lmtmalloc" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client
|
||||
CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa $EXTRA_FLAGS $EXTRA_CFLAGS" CXX=gcc CXXFLAGS="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa -g $EXTRA_FLAGS $EXTRA_CXXFLAGS" LIBS="-lmtmalloc" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client
|
||||
|
||||
make -j 4
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ ADD_DEFINITIONS(-DMYSQL_DATADIR="c:/Program Files/MySQL/MySQL Server ${MYSQL_BAS
|
|||
ADD_DEFINITIONS(-DDEFAULT_CHARSET_HOME="c:/Program Files/MySQL/MySQL Server ${MYSQL_BASE_VERSION}/")
|
||||
ADD_DEFINITIONS(-DPACKAGE=mysql)
|
||||
ADD_DEFINITIONS(-DSHAREDIR="share")
|
||||
ADD_DEFINITIONS(-DPLUGINDIR="lib/plugin")
|
||||
|
||||
# Set debug options
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
||||
|
|
@ -260,7 +261,7 @@ FOREACH(SUBDIR ${STORAGE_SUBDIRS})
|
|||
ENDIF(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
||||
|
||||
IF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${PLUGIN_NAME}_plugin")
|
||||
SET (maria_plugin_defs "${maria_plugin_defs},builtin_maria_${PLUGIN_NAME}_plugin")
|
||||
SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${PLUGIN_NAME})
|
||||
SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_${ENGINE}_STORAGE_ENGINE")
|
||||
SET (WITH_${ENGINE}_STORAGE_ENGINE TRUE)
|
||||
|
|
@ -279,7 +280,7 @@ ENDFOREACH(SUBDIR ${STORAGE_SUBDIRS})
|
|||
# Special handling for partition(not really pluggable)
|
||||
IF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
||||
SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_PARTITION_STORAGE_ENGINE")
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin")
|
||||
SET (maria_plugin_defs "${maria_plugin_defs},builtin_maria_partition_plugin")
|
||||
ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
||||
|
||||
# Special handling for tmp tables with the maria engine
|
||||
|
|
|
|||
|
|
@ -95,10 +95,9 @@ static char break_chars[] = { ' ', '\t', '\n', '"', '\\', '\'', '`', '@', '$',
|
|||
char *
|
||||
fn_tilde_expand(const char *txt)
|
||||
{
|
||||
struct passwd pwres, *pass;
|
||||
struct passwd *pass;
|
||||
char *temp;
|
||||
size_t len = 0;
|
||||
char pwbuf[1024];
|
||||
|
||||
if (txt[0] != '~')
|
||||
return (strdup(txt));
|
||||
|
|
|
|||
|
|
@ -460,7 +460,7 @@ dnl Although this is "pretty", it breaks libmysqld build
|
|||
])
|
||||
])
|
||||
])
|
||||
mysql_plugin_defs="$mysql_plugin_defs, [builtin_]$2[_plugin]"
|
||||
maria_plugin_defs="$maria_plugin_defs, [builtin_maria_]$2[_plugin]"
|
||||
[with_plugin_]$2=yes
|
||||
AC_MSG_RESULT([yes])
|
||||
m4_ifdef([$11], [
|
||||
|
|
|
|||
|
|
@ -2872,7 +2872,7 @@ AC_SUBST(server_scripts)
|
|||
|
||||
AC_SUBST(mysql_plugin_dirs)
|
||||
AC_SUBST(mysql_plugin_libs)
|
||||
AC_SUBST(mysql_plugin_defs)
|
||||
AC_SUBST(maria_plugin_defs)
|
||||
|
||||
|
||||
# Now that sql_client_dirs and sql_server_dirs are stable, determine the union.
|
||||
|
|
|
|||
|
|
@ -660,7 +660,7 @@ static ha_checksum checksum_format_specifier(const char* msg)
|
|||
case 'u':
|
||||
case 'x':
|
||||
case 's':
|
||||
chksum= my_checksum(chksum, start, (uint) (p + 1 - start));
|
||||
chksum= my_checksum(chksum, (uchar*) start, (uint) (p + 1 - start));
|
||||
start= 0; /* Not in format specifier anymore */
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -75,8 +75,7 @@ bufferevent_add(struct event *ev, int timeout)
|
|||
*/
|
||||
|
||||
void
|
||||
bufferevent_read_pressure_cb(struct evbuffer *buf,
|
||||
size_t old __attribute__((unused)), size_t now,
|
||||
bufferevent_read_pressure_cb(struct evbuffer *buf, size_t old, size_t now,
|
||||
void *arg) {
|
||||
struct bufferevent *bufev = arg;
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -394,8 +394,7 @@ event_base_get_method(struct event_base *base)
|
|||
}
|
||||
|
||||
static void
|
||||
event_loopexit_cb(int fd __attribute__((unused)),
|
||||
short what __attribute__((unused)), void *arg)
|
||||
event_loopexit_cb(int fd, short what, void *arg)
|
||||
{
|
||||
struct event_base *base = arg;
|
||||
base->event_gotterm = 1;
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ kq_init(struct event_base *base)
|
|||
*/
|
||||
if (kevent(kq,
|
||||
kqueueop->changes, 1, kqueueop->events, NEVENT, NULL) != 1 ||
|
||||
kqueueop->events[0].ident != -1 ||
|
||||
((int) kqueueop->events[0].ident) != -1 ||
|
||||
kqueueop->events[0].flags != EV_ERROR) {
|
||||
event_warn("%s: detected broken kqueue; not using.", __func__);
|
||||
free(kqueueop->changes);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ static void evsignal_handler(int sig);
|
|||
|
||||
/* Callback for when the signal handler write a byte to our signaling socket */
|
||||
static void
|
||||
evsignal_cb(int fd, short what __attribute((unused)), void *arg __attribute((unused)))
|
||||
evsignal_cb(int fd, short what, void *arg)
|
||||
{
|
||||
static char signals[100];
|
||||
#ifdef WIN32
|
||||
|
|
|
|||
|
|
@ -311,7 +311,9 @@ struct charset_info_st
|
|||
#define ILLEGAL_CHARSET_INFO_NUMBER (~0U)
|
||||
|
||||
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_bin;
|
||||
extern struct charset_info_st my_charset_bin;
|
||||
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_latin1;
|
||||
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_filename;
|
||||
|
||||
extern struct charset_info_st my_charset_big5_chinese_ci;
|
||||
extern struct charset_info_st my_charset_big5_bin;
|
||||
extern struct charset_info_st my_charset_cp932_japanese_ci;
|
||||
|
|
@ -324,7 +326,6 @@ extern struct charset_info_st my_charset_gb2312_chinese_ci;
|
|||
extern struct charset_info_st my_charset_gb2312_bin;
|
||||
extern struct charset_info_st my_charset_gbk_chinese_ci;
|
||||
extern struct charset_info_st my_charset_gbk_bin;
|
||||
extern struct charset_info_st my_charset_latin1;
|
||||
extern struct charset_info_st my_charset_latin1_german2_ci;
|
||||
extern struct charset_info_st my_charset_latin1_bin;
|
||||
extern struct charset_info_st my_charset_latin2_czech_ci;
|
||||
|
|
@ -341,7 +342,6 @@ extern struct charset_info_st my_charset_utf8_general_ci;
|
|||
extern struct charset_info_st my_charset_utf8_unicode_ci;
|
||||
extern struct charset_info_st my_charset_utf8_bin;
|
||||
extern struct charset_info_st my_charset_cp1250_czech_ci;
|
||||
extern struct charset_info_st my_charset_filename;
|
||||
|
||||
/* declarations for simple charsets */
|
||||
extern size_t my_strnxfrm_simple(CHARSET_INFO *, uchar *, size_t,
|
||||
|
|
|
|||
|
|
@ -1522,6 +1522,9 @@ do { doubleget_union _tmp; \
|
|||
#elif defined(HAVE_DLFCN_H)
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
#ifndef HAVE_DLERROR
|
||||
#define dlerror() ""
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* FreeBSD 2.2.2 does not define RTLD_NOW) */
|
||||
|
|
@ -1529,7 +1532,7 @@ do { doubleget_union _tmp; \
|
|||
#define RTLD_NOW 1
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_DLERROR
|
||||
#ifndef HAVE_DLOPEN
|
||||
#define dlerror() "No support for dynamic loading (static build?)"
|
||||
#define dlopen(A,B) 0
|
||||
#define dlsym(A,B) 0
|
||||
|
|
|
|||
|
|
@ -57,7 +57,10 @@ typedef struct st_mysql_xid MYSQL_XID;
|
|||
Plugin API. Common for all plugin types.
|
||||
*/
|
||||
|
||||
/* MySQL plugin interface version */
|
||||
#define MYSQL_PLUGIN_INTERFACE_VERSION 0x0101
|
||||
/* MariaDB plugin interface version */
|
||||
#define MARIA_PLUGIN_INTERFACE_VERSION 0x0100
|
||||
|
||||
/*
|
||||
The allowable types of plugins
|
||||
|
|
@ -81,6 +84,14 @@ typedef struct st_mysql_xid MYSQL_XID;
|
|||
#define PLUGIN_LICENSE_GPL_STRING "GPL"
|
||||
#define PLUGIN_LICENSE_BSD_STRING "BSD"
|
||||
|
||||
/* definitions of code maturity for plugins */
|
||||
#define MariaDB_PLUGIN_MATURITY_UNKNOWN 0
|
||||
#define MariaDB_PLUGIN_MATURITY_EXPERIMENTAL 1
|
||||
#define MariaDB_PLUGIN_MATURITY_ALPHA 2
|
||||
#define MariaDB_PLUGIN_MATURITY_BETA 3
|
||||
#define MariaDB_PLUGIN_MATURITY_GAMMA 4
|
||||
#define MariaDB_PLUGIN_MATURITY_STABLE 5
|
||||
|
||||
/*
|
||||
Macros for beginning and ending plugin declarations. Between
|
||||
mysql_declare_plugin and mysql_declare_plugin_end there should
|
||||
|
|
@ -93,11 +104,24 @@ typedef struct st_mysql_xid MYSQL_XID;
|
|||
int VERSION= MYSQL_PLUGIN_INTERFACE_VERSION; \
|
||||
int PSIZE= sizeof(struct st_mysql_plugin); \
|
||||
struct st_mysql_plugin DECLS[]= {
|
||||
|
||||
#define MARIA_DECLARE_PLUGIN__(NAME, VERSION, PSIZE, DECLS) \
|
||||
int VERSION= MARIA_PLUGIN_INTERFACE_VERSION; \
|
||||
int PSIZE= sizeof(struct st_maria_plugin); \
|
||||
struct st_maria_plugin DECLS[]= {
|
||||
|
||||
#else
|
||||
|
||||
#define __MYSQL_DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \
|
||||
MYSQL_PLUGIN_EXPORT int _mysql_plugin_interface_version_= MYSQL_PLUGIN_INTERFACE_VERSION; \
|
||||
MYSQL_PLUGIN_EXPORT int _mysql_sizeof_struct_st_plugin_= sizeof(struct st_mysql_plugin); \
|
||||
MYSQL_PLUGIN_EXPORT struct st_mysql_plugin _mysql_plugin_declarations_[]= {
|
||||
|
||||
#define MARIA_DECLARE_PLUGIN__(NAME, VERSION, PSIZE, DECLS) \
|
||||
MYSQL_PLUGIN_EXPORT int _maria_plugin_interface_version_= MARIA_PLUGIN_INTERFACE_VERSION; \
|
||||
MYSQL_PLUGIN_EXPORT int _maria_sizeof_struct_st_plugin_= sizeof(struct st_maria_plugin); \
|
||||
MYSQL_PLUGIN_EXPORT struct st_maria_plugin _maria_plugin_declarations_[]= {
|
||||
|
||||
#endif
|
||||
|
||||
#define mysql_declare_plugin(NAME) \
|
||||
|
|
@ -106,7 +130,14 @@ __MYSQL_DECLARE_PLUGIN(NAME, \
|
|||
builtin_ ## NAME ## _sizeof_struct_st_plugin, \
|
||||
builtin_ ## NAME ## _plugin)
|
||||
|
||||
#define maria_declare_plugin(NAME) \
|
||||
MARIA_DECLARE_PLUGIN__(NAME, \
|
||||
builtin_maria_ ## NAME ## _plugin_interface_version, \
|
||||
builtin_maria_ ## NAME ## _sizeof_struct_st_plugin, \
|
||||
builtin_maria_ ## NAME ## _plugin)
|
||||
|
||||
#define mysql_declare_plugin_end ,{0,0,0,0,0,0,0,0,0,0,0,0}}
|
||||
#define maria_declare_plugin_end ,{0,0,0,0,0,0,0,0,0,0,0,0,0}}
|
||||
|
||||
/*
|
||||
declarations for SHOW STATUS support in plugins
|
||||
|
|
@ -403,6 +434,30 @@ struct st_mysql_plugin
|
|||
void * __reserved1; /* reserved for dependency checking */
|
||||
};
|
||||
|
||||
/*
|
||||
MariaDB extension for plugins declaration structure.
|
||||
|
||||
It also copy current MySQL plugin fields to have more independency
|
||||
in plugins extension
|
||||
*/
|
||||
|
||||
struct st_maria_plugin
|
||||
{
|
||||
int type; /* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
void *info; /* pointer to type-specific plugin descriptor */
|
||||
const char *name; /* plugin name */
|
||||
const char *author; /* plugin author (for SHOW PLUGINS) */
|
||||
const char *descr; /* general descriptive text (for SHOW PLUGINS ) */
|
||||
int license; /* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
int (*init)(void *); /* the function to invoke when plugin is loaded */
|
||||
int (*deinit)(void *);/* the function to invoke when plugin is unloaded */
|
||||
unsigned int version; /* plugin version (for SHOW PLUGINS) */
|
||||
struct st_mysql_show_var *status_vars;
|
||||
struct st_mysql_sys_var **system_vars;
|
||||
const char *version_info; /* plugin version string */
|
||||
int maturity; /* MariaDB_PLUGIN_MATURITY_XXX */
|
||||
};
|
||||
|
||||
/*************************************************************************
|
||||
API for Full-text parser plugin. (MYSQL_FTPARSER_PLUGIN)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -77,6 +77,22 @@ struct st_mysql_plugin
|
|||
struct st_mysql_sys_var **system_vars;
|
||||
void * __reserved1;
|
||||
};
|
||||
struct st_maria_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;
|
||||
const char *version_info;
|
||||
int maturity;
|
||||
};
|
||||
enum enum_ftparser_mode
|
||||
{
|
||||
MYSQL_FTPARSER_SIMPLE_MODE= 0,
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ void set_mysql_extended_error(MYSQL *mysql, int errcode, const char *sqlstate,
|
|||
struct st_plugin_vio_info;
|
||||
void mpvio_info(Vio *vio, struct st_plugin_vio_info *info);
|
||||
int run_plugin_auth(MYSQL *mysql, char *data, uint data_len,
|
||||
char *data_plugin, const char *db);
|
||||
const char *data_plugin, const char *db);
|
||||
int mysql_client_plugin_init();
|
||||
void mysql_client_plugin_deinit();
|
||||
struct st_mysql_client_plugin;
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ SET(LIBMYSQLD_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
|||
../sql-common/client.c ../sql-common/my_time.c
|
||||
../sql-common/my_user.c ../sql-common/pack.c
|
||||
../sql/password.c ../sql/discover.cc ../sql/derror.cc
|
||||
../sql/field.cc ../sql/field_conv.cc
|
||||
../sql/field.cc ../sql/field_conv.cc ../sql-common/client_plugin.c
|
||||
../sql/filesort.cc ../sql/gstream.cc ../sql/ha_partition.cc
|
||||
../sql/handler.cc ../sql/hash_filo.cc ../sql/hostname.cc
|
||||
../sql/init.cc ../sql/item_buff.cc ../sql/item_cmpfunc.cc
|
||||
|
|
|
|||
|
|
@ -157,3 +157,4 @@ INSERT INTO t1 VALUES (1);
|
|||
|
||||
DROP TEMPORARY TABLE t1;
|
||||
|
||||
--sync_slave_with_master
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
[mysqld]
|
||||
open-files-limit= 1024
|
||||
local-infile
|
||||
default-character-set= latin1
|
||||
character-set-server= latin1
|
||||
|
||||
# Increase default connect_timeout to avoid intermittent
|
||||
# disconnects when test servers are put under load see BUG#28359
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ int main(int argc, char* const argv[] )
|
|||
signal(SIGCHLD, handle_signal);
|
||||
signal(SIGABRT, handle_abort);
|
||||
|
||||
sprintf(safe_process_name, "safe_process[%d]", own_pid);
|
||||
sprintf(safe_process_name, "safe_process[%d]", (int) own_pid);
|
||||
|
||||
message("Started");
|
||||
|
||||
|
|
|
|||
|
|
@ -681,6 +681,8 @@ sub optimize_cases {
|
|||
if ( $default_engine =~ /^ndb/i );
|
||||
$tinfo->{'innodb_test'}= 1
|
||||
if ( $default_engine =~ /^innodb/i );
|
||||
$tinfo->{'pbxt_test'}= 1
|
||||
if ( $default_engine =~ /^pbxt/i );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -778,6 +780,8 @@ sub collect_one_test_case {
|
|||
my $disabled= shift;
|
||||
my $suite_opts= shift;
|
||||
|
||||
my $local_default_storage_engine= $default_storage_engine;
|
||||
|
||||
#print "collect_one_test_case\n";
|
||||
#print " suitedir: $suitedir\n";
|
||||
#print " testdir: $testdir\n";
|
||||
|
|
@ -932,15 +936,26 @@ sub collect_one_test_case {
|
|||
|
||||
tags_from_test_file($tinfo,"$testdir/${tname}.test");
|
||||
|
||||
if ( defined $default_storage_engine )
|
||||
# Get default storage engine from suite.opt file
|
||||
|
||||
if (defined $suite_opts &&
|
||||
"@$suite_opts" =~ "default-storage-engine=\s*([^\s]*)")
|
||||
{
|
||||
$local_default_storage_engine= $1;
|
||||
}
|
||||
|
||||
if ( defined $local_default_storage_engine )
|
||||
{
|
||||
# Different default engine is used
|
||||
# tag test to require that engine
|
||||
$tinfo->{'ndb_test'}= 1
|
||||
if ( $default_storage_engine =~ /^ndb/i );
|
||||
if ( $local_default_storage_engine =~ /^ndb/i );
|
||||
|
||||
$tinfo->{'innodb_test'}= 1
|
||||
if ( $default_storage_engine =~ /^innodb/i );
|
||||
if ( $local_default_storage_engine =~ /^innodb/i );
|
||||
|
||||
$tinfo->{'pbxt_test'}= 1
|
||||
if ( $local_default_storage_engine =~ /^pbxt/i );
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1103,6 +1118,28 @@ sub collect_one_test_case {
|
|||
$tinfo->{template_path}= $config;
|
||||
}
|
||||
|
||||
if ( $tinfo->{'pbxt_test'} )
|
||||
{
|
||||
# This is a test that needs pbxt
|
||||
if ( $::mysqld_variables{'pbxt'} eq "OFF" ||
|
||||
! exists $::mysqld_variables{'pbxt'} )
|
||||
{
|
||||
# Engine is not supported, skip it
|
||||
$tinfo->{'skip'}= 1;
|
||||
return $tinfo;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
# Only disable engine if it's on by default (to avoid warnings about
|
||||
# not existing loose options
|
||||
if ( $::mysqld_variables{'pbxt'} eq "ON")
|
||||
{
|
||||
push(@{$tinfo->{'master_opt'}}, "--loose-skip-pbxt");
|
||||
push(@{$tinfo->{'slave_opt'}}, "--loose-skip-pbxt");
|
||||
}
|
||||
}
|
||||
|
||||
if ( $tinfo->{'example_plugin_test'} )
|
||||
{
|
||||
if ( !$ENV{'EXAMPLE_PLUGIN'} )
|
||||
|
|
@ -1156,6 +1193,7 @@ my @tags=
|
|||
["include/have_log_bin.inc", "need_binlog", 1],
|
||||
|
||||
["include/have_innodb.inc", "innodb_test", 1],
|
||||
["include/have_pbxt.inc", "pbxt_test", 1],
|
||||
["include/big_test.inc", "big_test", 1],
|
||||
["include/have_debug.inc", "need_debug", 1],
|
||||
["include/have_ndb.inc", "ndb_test", 1],
|
||||
|
|
|
|||
|
|
@ -3965,7 +3965,7 @@ sub mysqld_arguments ($$$$) {
|
|||
}
|
||||
}
|
||||
|
||||
mtr_add_arg($args, "%s--default-character-set=latin1", $prefix);
|
||||
mtr_add_arg($args, "%s--character-set-server-set=latin1", $prefix);
|
||||
mtr_add_arg($args, "%s--language=%s", $prefix, $path_language);
|
||||
mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ ROWS_INSERTED 8
|
|||
ROWS_UPDATED 5
|
||||
SELECT_COMMANDS 3
|
||||
UPDATE_COMMANDS 11
|
||||
OTHER_COMMANDS 9
|
||||
OTHER_COMMANDS 7
|
||||
COMMIT_TRANSACTIONS 19
|
||||
ROLLBACK_TRANSACTIONS 2
|
||||
DENIED_CONNECTIONS 0
|
||||
|
|
@ -154,7 +154,7 @@ ROWS_INSERTED 8
|
|||
ROWS_UPDATED 5
|
||||
SELECT_COMMANDS 3
|
||||
UPDATE_COMMANDS 11
|
||||
OTHER_COMMANDS 9
|
||||
OTHER_COMMANDS 7
|
||||
COMMIT_TRANSACTIONS 19
|
||||
ROLLBACK_TRANSACTIONS 2
|
||||
DENIED_CONNECTIONS 0
|
||||
|
|
|
|||
|
|
@ -271,10 +271,12 @@ NULL information_schema PBXT_STATISTICS ID 1 0 NO int NULL NULL 10 0 NULL NULL i
|
|||
NULL information_schema PBXT_STATISTICS Name 2 NO varchar 40 120 NULL NULL utf8 utf8_general_ci varchar(40) select
|
||||
NULL information_schema PBXT_STATISTICS Value 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(8) select
|
||||
NULL information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PLUGINS PLUGIN_AUTH_VERSION 12 NULL YES varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
NULL information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
|
||||
NULL information_schema PLUGINS PLUGIN_LICENSE 10 NULL YES varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
NULL information_schema PLUGINS PLUGIN_MATURITY 11 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
|
||||
NULL information_schema PLUGINS PLUGIN_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema PLUGINS PLUGIN_STATUS 3 NO varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
|
||||
NULL information_schema PLUGINS PLUGIN_TYPE 4 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
|
|
@ -791,6 +793,8 @@ NULL information_schema PBXT_STATISTICS Value bigint NULL NULL NULL NULL bigint(
|
|||
3.0000 information_schema PLUGINS PLUGIN_AUTHOR varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
1.0000 information_schema PLUGINS PLUGIN_DESCRIPTION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema PLUGINS PLUGIN_LICENSE varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
3.0000 information_schema PLUGINS PLUGIN_MATURITY varchar 12 36 utf8 utf8_general_ci varchar(12)
|
||||
3.0000 information_schema PLUGINS PLUGIN_AUTH_VERSION varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
NULL information_schema PROCESSLIST ID bigint NULL NULL NULL NULL bigint(4)
|
||||
3.0000 information_schema PROCESSLIST USER varchar 16 48 utf8 utf8_general_ci varchar(16)
|
||||
3.0000 information_schema PROCESSLIST HOST varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
--source include/have_partition.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/master-slave.inc
|
||||
--source include/big_test.inc
|
||||
|
||||
--vertical_results
|
||||
|
||||
|
|
|
|||
18
mysql-test/suite/pbxt/r/pbxt_xa.result
Normal file
18
mysql-test/suite/pbxt/r/pbxt_xa.result
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
drop table if exists t1, t2;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb;
|
||||
CREATE TABLE t2 (b INT PRIMARY KEY) ENGINE=pbxt;
|
||||
BEGIN;
|
||||
SELECT @@log_bin;
|
||||
@@log_bin
|
||||
0
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2);
|
||||
COMMIT;
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
select * from t2;
|
||||
b
|
||||
2
|
||||
drop table t1, t2;
|
||||
drop database pbxt;
|
||||
23
mysql-test/suite/pbxt/t/pbxt_xa.test
Normal file
23
mysql-test/suite/pbxt/t/pbxt_xa.test
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
-- source include/have_innodb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# bug lp:544173, xa crash with two 2pc-capable storage engines without binlog
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb;
|
||||
CREATE TABLE t2 (b INT PRIMARY KEY) ENGINE=pbxt;
|
||||
BEGIN;
|
||||
# verify that binlog is off
|
||||
SELECT @@log_bin;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2);
|
||||
COMMIT;
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
drop table t1, t2;
|
||||
drop database pbxt;
|
||||
|
||||
1
mysql-test/suite/pbxt/t/suite.opt
Normal file
1
mysql-test/suite/pbxt/t/suite.opt
Normal file
|
|
@ -0,0 +1 @@
|
|||
--default-storage-engine=pbxt
|
||||
|
|
@ -165,10 +165,9 @@ USE test;
|
|||
DROP FUNCTION bug42217_db.upgrade_del_func;
|
||||
DROP FUNCTION bug42217_db.upgrade_alter_func;
|
||||
DROP DATABASE bug42217_db;
|
||||
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||
stop slave;
|
||||
DROP USER 'create_rout_db'@'localhost';
|
||||
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||
USE mtr;
|
||||
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||
######## BUG#49119 #######
|
||||
### i) test case from the 'how to repeat section'
|
||||
stop slave;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ reset master;
|
|||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
drop tables if exists t1;
|
||||
CALL mtr.add_suppression('Statement may not be safe to log in statement format.');
|
||||
create table t1 (a int not null auto_increment primary key, b int, key(b));
|
||||
INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
||||
|
|
|
|||
|
|
@ -209,12 +209,18 @@ USE test;
|
|||
DROP FUNCTION bug42217_db.upgrade_del_func;
|
||||
DROP FUNCTION bug42217_db.upgrade_alter_func;
|
||||
DROP DATABASE bug42217_db;
|
||||
DROP USER 'create_rout_db'@'localhost';
|
||||
|
||||
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||
|
||||
sync_slave_with_master;
|
||||
|
||||
# Drop the user that was already dropped on the slave
|
||||
connection slave;
|
||||
USE mtr;
|
||||
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||
--disable_warnings
|
||||
stop slave;
|
||||
connection master;
|
||||
DROP USER 'create_rout_db'@'localhost';
|
||||
--enable_warnings
|
||||
|
||||
# BUG#49119: Master crashes when executing 'REVOKE ... ON
|
||||
# {PROCEDURE|FUNCTION} FROM ...'
|
||||
|
|
|
|||
|
|
@ -45,3 +45,4 @@ select * from t1 order by id;
|
|||
connection master;
|
||||
drop table t1;
|
||||
drop procedure test_procedure;
|
||||
--sync_slave_with_master
|
||||
|
|
|
|||
|
|
@ -15,6 +15,10 @@
|
|||
-- source include/not_staging.inc
|
||||
-- source include/master-slave.inc
|
||||
|
||||
--disable_warnings
|
||||
drop tables if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
CALL mtr.add_suppression('Statement may not be safe to log in statement format.');
|
||||
|
||||
create table t1 (a int not null auto_increment primary key, b int, key(b));
|
||||
|
|
@ -51,10 +55,9 @@ sync_with_master; # won't work if slave SQL thread stopped
|
|||
|
||||
connection master; # cleanup
|
||||
drop table t1;
|
||||
connection slave;
|
||||
sync_with_master;
|
||||
sync_slave_with_master;
|
||||
|
||||
# If the machine is so fast that slave syncs before OPTIMIZE
|
||||
# starts, this test wil demonstrate nothing but will pass.
|
||||
# starts, this test will demonstrate nothing but will pass.
|
||||
|
||||
# End of 4.1 tests
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ UPDATE t1 SET a=99 WHERE a = 0;
|
|||
SHOW BINLOG EVENTS;
|
||||
|
||||
DROP TABLE t1;
|
||||
--sync_slave_with_master
|
||||
|
||||
# BUG#17620: Replicate (Row Based) Fails when Query Cache enabled on
|
||||
# slave
|
||||
|
|
|
|||
|
|
@ -149,6 +149,8 @@ DROP TABLE IF EXISTS test.t2;
|
|||
DROP TABLE IF EXISTS test.t3;
|
||||
--enable_warnings
|
||||
|
||||
sync_slave_with_master;
|
||||
|
||||
diff_files $MYSQLTEST_VARDIR/tmp/trg003_master.sql $MYSQLTEST_VARDIR/tmp/trg003_slave.sql;
|
||||
|
||||
# End of 5.0 test case
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
--default-character-set=utf8 --skip-character-set-client-handshake
|
||||
--character-set-server=utf8 --skip-character-set-client-handshake
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
--default-character-set=latin1 --default-collation=latin1_german2_ci
|
||||
--character-set-server=latin1 --default-collation=latin1_german2_ci
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
--default-collation=ucs2_unicode_ci --default-character-set=ucs2,latin1
|
||||
--default-collation=ucs2_unicode_ci --character-set-server=ucs2,latin1
|
||||
|
|
|
|||
|
|
@ -4222,6 +4222,12 @@ restart:
|
|||
uint next_status;
|
||||
uint hash_requests;
|
||||
|
||||
LINT_INIT(next_hash_link);
|
||||
LINT_INIT(next_diskpos);
|
||||
LINT_INIT(next_file);
|
||||
LINT_INIT(next_status);
|
||||
LINT_INIT(hash_requests);
|
||||
|
||||
total_found++;
|
||||
found++;
|
||||
KEYCACHE_DBUG_ASSERT(found <= keycache->blocks_used);
|
||||
|
|
|
|||
|
|
@ -91,9 +91,12 @@ extern pthread_mutex_t LOCK_gethostbyname_r;
|
|||
is finished with the structure.
|
||||
*/
|
||||
|
||||
struct hostent *my_gethostbyname_r(const char *name,
|
||||
struct hostent *result, char *buffer,
|
||||
int buflen, int *h_errnop)
|
||||
struct hostent *
|
||||
my_gethostbyname_r(const char *name,
|
||||
struct hostent *result __attribute__((unused)),
|
||||
char *buffer __attribute__((unused)),
|
||||
int buflen __attribute__((unused)),
|
||||
int *h_errnop)
|
||||
{
|
||||
struct hostent *hp;
|
||||
pthread_mutex_lock(&LOCK_gethostbyname_r);
|
||||
|
|
|
|||
|
|
@ -99,4 +99,21 @@ mysql_declare_plugin(socket_auth)
|
|||
NULL
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(socket_auth)
|
||||
{
|
||||
MYSQL_AUTHENTICATION_PLUGIN,
|
||||
&socket_auth_handler,
|
||||
"socket_peercred",
|
||||
"Sergei Golubchik",
|
||||
"Unix Socket based authentication",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
NULL,
|
||||
NULL,
|
||||
0x0100,
|
||||
NULL,
|
||||
NULL,
|
||||
"1.0",
|
||||
MariaDB_PLUGIN_MATURITY_BETA
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
|
||||
|
|
|
|||
|
|
@ -171,6 +171,38 @@ mysql_declare_plugin(dialog)
|
|||
NULL
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(dialog)
|
||||
{
|
||||
MYSQL_AUTHENTICATION_PLUGIN,
|
||||
&two_handler,
|
||||
"two_questions",
|
||||
"Sergei Golubchik",
|
||||
"Dialog plugin demo 1",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
NULL,
|
||||
NULL,
|
||||
0x0100,
|
||||
NULL,
|
||||
NULL,
|
||||
"1.0",
|
||||
MariaDB_PLUGIN_MATURITY_BETA
|
||||
},
|
||||
{
|
||||
MYSQL_AUTHENTICATION_PLUGIN,
|
||||
&three_handler,
|
||||
"three_attempts",
|
||||
"Sergei Golubchik",
|
||||
"Dialog plugin demo 2",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
NULL,
|
||||
NULL,
|
||||
0x0100,
|
||||
NULL,
|
||||
NULL,
|
||||
"1.0",
|
||||
MariaDB_PLUGIN_MATURITY_BETA
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
||||
/********************* CLIENT SIDE ***************************************/
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -200,3 +200,20 @@ mysql_declare_plugin(daemon_example)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(daemon_example)
|
||||
{
|
||||
MYSQL_DAEMON_PLUGIN,
|
||||
&daemon_example_plugin,
|
||||
"daemon_example",
|
||||
"Brian Aker",
|
||||
"Daemon example, creates a heartbeat beat file in mysql-heartbeat.log",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
daemon_example_plugin_init, /* Plugin Init */
|
||||
daemon_example_plugin_deinit, /* Plugin Deinit */
|
||||
0x0100 /* 1.0 */,
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_EXPERIMENTAL /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -270,4 +270,21 @@ mysql_declare_plugin(ftexample)
|
|||
NULL
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(ftexample)
|
||||
{
|
||||
MYSQL_FTPARSER_PLUGIN, /* type */
|
||||
&simple_parser_descriptor, /* descriptor */
|
||||
"simple_parser", /* name */
|
||||
"MySQL AB", /* author */
|
||||
"Simple Full-Text Parser", /* description */
|
||||
PLUGIN_LICENSE_GPL,
|
||||
simple_parser_plugin_init, /* init function (when loaded) */
|
||||
simple_parser_plugin_deinit,/* deinit function (when unloaded) */
|
||||
0x0001, /* version */
|
||||
simple_status, /* status variables */
|
||||
simple_system_variables, /* system variables */
|
||||
"0.01", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_EXPERIMENTAL /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ ADD_EXECUTABLE(mysqlmanager buffer.cc command.cc commands.cc guardian.cc instanc
|
|||
user_management_commands.cc
|
||||
../../sql/net_serv.cc ../../sql-common/pack.c ../../sql/password.c
|
||||
../../sql/sql_state.c ../../sql-common/client.c ../../libmysql/get_password.c
|
||||
../../libmysql/errmsg.c)
|
||||
../../libmysql/errmsg.c ../../sql-common/client_plugin.c)
|
||||
|
||||
ADD_DEPENDENCIES(mysqlmanager GenError)
|
||||
TARGET_LINK_LIBRARIES(mysqlmanager dbug mysys strings taocrypt vio yassl zlib wsock32)
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ ADD_EXECUTABLE(mysqlmanager buffer.cc command.cc commands.cc guardian.cc instanc
|
|||
user_management_commands.cc ../../mysys/my_rnd.c
|
||||
../../sql/net_serv.cc ../../sql-common/pack.c ../../sql/password.c
|
||||
../../sql/sql_state.c ../../sql-common/client.c ../../libmysql/get_password.c
|
||||
../../libmysql/errmsg.c)
|
||||
../../libmysql/errmsg.c ../../sql-common/client_plugin.c)
|
||||
|
||||
ADD_DEPENDENCIES(mysqlmanager GenError)
|
||||
TARGET_LINK_LIBRARIES(mysqlmanager debug dbug mysys strings taocrypt vio yassl zlib wsock32)
|
||||
|
|
|
|||
|
|
@ -2345,7 +2345,7 @@ void mpvio_info(Vio *vio, MYSQL_PLUGIN_VIO_INFO *info)
|
|||
case VIO_TYPE_SSL:
|
||||
{
|
||||
struct sockaddr addr;
|
||||
socklen_t addrlen= sizeof(addr);
|
||||
SOCKET_SIZE_TYPE addrlen= sizeof(addr);
|
||||
if (getsockname(vio->sd, &addr, &addrlen))
|
||||
return;
|
||||
info->protocol= addr.sa_family == AF_UNIX ?
|
||||
|
|
@ -2360,7 +2360,7 @@ void mpvio_info(Vio *vio, MYSQL_PLUGIN_VIO_INFO *info)
|
|||
return;
|
||||
case VIO_TYPE_SHARED_MEMORY:
|
||||
info->protocol= MYSQL_VIO_MEMORY;
|
||||
info->handle= vio->handle_client_file_map; /* or what ? */
|
||||
info->handle= vio->handle_file_map; /* or what ? */
|
||||
return;
|
||||
#endif
|
||||
default: DBUG_ASSERT(0);
|
||||
|
|
@ -2394,7 +2394,7 @@ static void client_mpvio_info(MYSQL_PLUGIN_VIO *vio,
|
|||
*/
|
||||
|
||||
int run_plugin_auth(MYSQL *mysql, char *data, uint data_len,
|
||||
char *data_plugin, const char *db)
|
||||
const char *data_plugin, const char *db)
|
||||
{
|
||||
const char *auth_plugin_name;
|
||||
auth_plugin_t *auth_plugin;
|
||||
|
|
@ -2540,7 +2540,8 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
|||
char buff[NAME_LEN+USERNAME_LENGTH+100];
|
||||
int scramble_data_len, pkt_scramble_len;
|
||||
char *end, *host_info=0, *server_version_end, *pkt_end;
|
||||
char *scramble_data, *scramble_plugin;
|
||||
char *scramble_data;
|
||||
const char *scramble_plugin;
|
||||
my_socket sock;
|
||||
in_addr_t ip_addr;
|
||||
struct sockaddr_in sock_addr;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@
|
|||
#define mysql_master_send_query(A, B, C) 1
|
||||
#define mysql_slave_send_query(A, B, C) 1
|
||||
#define mysql_rpl_probe(mysql) 0
|
||||
#undef HAVE_SMEM
|
||||
#undef _CUSTOMCONFIG_
|
||||
|
||||
#define mysql_server_init(a,b,c) mysql_client_plugin_init()
|
||||
|
|
|
|||
|
|
@ -10564,6 +10564,23 @@ mysql_declare_plugin(ndbcluster)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(ndbcluster)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&ndbcluster_storage_engine,
|
||||
ndbcluster_hton_name,
|
||||
"MySQL AB",
|
||||
"Clustered, fault-tolerant tables",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
ndbcluster_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0100 /* 1.0 */,
|
||||
ndb_status_variables_export,/* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
||||
#else
|
||||
int Sun_ar_require_a_symbol_here= 0;
|
||||
|
|
|
|||
|
|
@ -6715,5 +6715,22 @@ mysql_declare_plugin(partition)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(partition)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&partition_storage_engine,
|
||||
"partition",
|
||||
"Mikael Ronstrom, MySQL AB",
|
||||
"Partition Storage Engine Helper",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
partition_initialize, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0100, /* 1.0 */
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -4282,7 +4282,7 @@ int handler::read_multi_range_first(KEY_MULTI_RANGE **found_range_p,
|
|||
*/
|
||||
int handler::read_multi_range_next(KEY_MULTI_RANGE **found_range_p)
|
||||
{
|
||||
int result;
|
||||
int result= 0;
|
||||
DBUG_ENTER("handler::read_multi_range_next");
|
||||
|
||||
/* We should not be called after the last call returned EOF. */
|
||||
|
|
|
|||
|
|
@ -7040,7 +7040,7 @@ bool Item_cache_int::cache_value()
|
|||
}
|
||||
|
||||
|
||||
void Item_cache_int::store(Item *item, longlong val_arg)
|
||||
void Item_cache_int::store_longlong(Item *item, longlong val_arg)
|
||||
{
|
||||
/* An explicit values is given, save it. */
|
||||
value_cached= TRUE;
|
||||
|
|
|
|||
|
|
@ -1132,7 +1132,8 @@ class Field_enumerator
|
|||
{
|
||||
public:
|
||||
virtual void visit_field(Field *field)= 0;
|
||||
virtual ~Field_enumerator() {}; /* purecov: inspected */
|
||||
virtual ~Field_enumerator() {}; /* purecov: inspected */
|
||||
Field_enumerator() {} /* Remove gcc warning */
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -3148,7 +3149,7 @@ public:
|
|||
Item_cache_int(enum_field_types field_type_arg):
|
||||
Item_cache(field_type_arg), value(0) {}
|
||||
|
||||
void store(Item *item, longlong val_arg);
|
||||
void store_longlong(Item *item, longlong val_arg);
|
||||
double val_real();
|
||||
longlong val_int();
|
||||
String* val_str(String *str);
|
||||
|
|
|
|||
|
|
@ -879,7 +879,7 @@ get_time_value(THD *thd, Item ***item_arg, Item **cache_arg,
|
|||
Item_cache_int *cache= new Item_cache_int();
|
||||
/* Mark the cache as non-const to prevent re-caching. */
|
||||
cache->set_used_tables(1);
|
||||
cache->store(item, value);
|
||||
cache->store_longlong(item, value);
|
||||
*cache_arg= cache;
|
||||
*item_arg= cache_arg;
|
||||
}
|
||||
|
|
@ -917,13 +917,13 @@ int Arg_comparator::set_cmp_func(Item_result_field *owner_arg,
|
|||
cache->set_used_tables(1);
|
||||
if (!(*a)->is_datetime())
|
||||
{
|
||||
cache->store((*a), const_value);
|
||||
cache->store_longlong((*a), const_value);
|
||||
a_cache= cache;
|
||||
a= (Item **)&a_cache;
|
||||
}
|
||||
else
|
||||
{
|
||||
cache->store((*b), const_value);
|
||||
cache->store_longlong((*b), const_value);
|
||||
b_cache= cache;
|
||||
b= (Item **)&b_cache;
|
||||
}
|
||||
|
|
@ -1145,7 +1145,7 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg,
|
|||
Item_cache_int *cache= new Item_cache_int(MYSQL_TYPE_DATETIME);
|
||||
/* Mark the cache as non-const to prevent re-caching. */
|
||||
cache->set_used_tables(1);
|
||||
cache->store(item, value);
|
||||
cache->store_longlong(item, value);
|
||||
*cache_arg= cache;
|
||||
*item_arg= cache_arg;
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -91,8 +91,9 @@ public:
|
|||
@param item_list The list of arguments to the function, can be NULL
|
||||
@return An item representing the parsed function call
|
||||
*/
|
||||
virtual Item* create(THD *thd, LEX_STRING db, LEX_STRING name,
|
||||
bool use_explicit_name, List<Item> *item_list) = 0;
|
||||
virtual Item *create_with_db(THD *thd, LEX_STRING db, LEX_STRING name,
|
||||
bool use_explicit_name,
|
||||
List<Item> *item_list) = 0;
|
||||
|
||||
protected:
|
||||
/** Constructor. */
|
||||
|
|
|
|||
|
|
@ -642,7 +642,7 @@ Item_sum_hybrid::fix_fields(THD *thd, Item **ref)
|
|||
default:
|
||||
DBUG_ASSERT(0);
|
||||
};
|
||||
setup(args[0], NULL);
|
||||
setup_item(args[0], NULL);
|
||||
/* MIN/MAX can return NULL for empty set indepedent of the used column */
|
||||
maybe_null= 1;
|
||||
unsigned_flag=item->unsigned_flag;
|
||||
|
|
@ -676,7 +676,7 @@ Item_sum_hybrid::fix_fields(THD *thd, Item **ref)
|
|||
of the original MIN/MAX object and it is saved in this object's cache.
|
||||
*/
|
||||
|
||||
void Item_sum_hybrid::setup(Item *item, Item *value_arg)
|
||||
void Item_sum_hybrid::setup_item(Item *item, Item *value_arg)
|
||||
{
|
||||
value= Item_cache::get_cache(item);
|
||||
value->setup(item);
|
||||
|
|
@ -1646,7 +1646,7 @@ void Item_sum_hybrid::no_rows_in_result()
|
|||
Item *Item_sum_min::copy_or_same(THD* thd)
|
||||
{
|
||||
Item_sum_min *item= new (thd->mem_root) Item_sum_min(thd, this);
|
||||
item->setup(args[0], value);
|
||||
item->setup_item(args[0], value);
|
||||
return item;
|
||||
}
|
||||
|
||||
|
|
@ -1669,7 +1669,7 @@ bool Item_sum_min::add()
|
|||
Item *Item_sum_max::copy_or_same(THD* thd)
|
||||
{
|
||||
Item_sum_max *item= new (thd->mem_root) Item_sum_max(thd, this);
|
||||
item->setup(args[0], value);
|
||||
item->setup_item(args[0], value);
|
||||
return item;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -870,7 +870,7 @@ protected:
|
|||
was_values(item->was_values)
|
||||
{ }
|
||||
bool fix_fields(THD *, Item **);
|
||||
void setup(Item *item, Item *value_arg);
|
||||
void setup_item(Item *item, Item *value_arg);
|
||||
void clear();
|
||||
double val_real();
|
||||
longlong val_int();
|
||||
|
|
|
|||
29
sql/log.cc
29
sql/log.cc
|
|
@ -5424,7 +5424,7 @@ int TC_LOG_MMAP::open(const char *opt_name)
|
|||
pg->state=POOL;
|
||||
pthread_mutex_init(&pg->lock, MY_MUTEX_INIT_FAST);
|
||||
pthread_cond_init (&pg->cond, 0);
|
||||
pg->start=(my_xid *)(data + i*tc_log_page_size);
|
||||
pg->ptr= pg->start=(my_xid *)(data + i*tc_log_page_size);
|
||||
pg->size=pg->free=tc_log_page_size/sizeof(my_xid);
|
||||
pg->end=pg->start + pg->size;
|
||||
}
|
||||
|
|
@ -5659,7 +5659,15 @@ int TC_LOG_MMAP::sync()
|
|||
/* marking 'syncing' slot free */
|
||||
pthread_mutex_lock(&LOCK_sync);
|
||||
syncing=0;
|
||||
pthread_cond_signal(&active->cond); // wake up a new syncer
|
||||
/*
|
||||
we check the "active" pointer without LOCK_active. Still, it's safe -
|
||||
"active" can change from NULL to not NULL any time, but it
|
||||
will take LOCK_sync before waiting on active->cond. That is, it can never
|
||||
miss a signal.
|
||||
And "active" can change to NULL only after LOCK_sync, so this is safe too.
|
||||
*/
|
||||
if (active)
|
||||
pthread_cond_signal(&active->cond); // wake up a new syncer
|
||||
pthread_mutex_unlock(&LOCK_sync);
|
||||
return err;
|
||||
}
|
||||
|
|
@ -6028,3 +6036,20 @@ mysql_declare_plugin(binlog)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(binlog)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&binlog_storage_engine,
|
||||
"binlog",
|
||||
"MySQL AB",
|
||||
"This is a pseudo storage engine to represent the binlog in a transaction",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
binlog_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0100 /* 1.0 */,
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -1716,8 +1716,7 @@ beg:
|
|||
|
||||
case MYSQL_TYPE_DATETIME:
|
||||
{
|
||||
size_t d, t;
|
||||
uint64 i64= uint8korr(ptr); /* YYYYMMDDhhmmss */
|
||||
uint64 d, t, i64= uint8korr(ptr); /* YYYYMMDDhhmmss */
|
||||
d= i64 / 1000000;
|
||||
t= i64 % 1000000;
|
||||
my_b_printf(file, "%04d-%02d-%02d %02d:%02d:%02d",
|
||||
|
|
|
|||
|
|
@ -6646,8 +6646,6 @@ Can't be set to 1 if --log-slave-updates is used.",
|
|||
{"shared-memory", OPT_ENABLE_SHARED_MEMORY,
|
||||
"Enable the shared memory.",(uchar**) &opt_enable_shared_memory, (uchar**) &opt_enable_shared_memory,
|
||||
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
#ifdef HAVE_SMEM
|
||||
{"shared-memory-base-name",OPT_SHARED_MEMORY_BASE_NAME,
|
||||
"Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name,
|
||||
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
|
@ -8378,6 +8376,8 @@ mysqld_get_one_option(int optid,
|
|||
case (int) OPT_INIT_RPL_ROLE:
|
||||
{
|
||||
int role;
|
||||
LINT_INIT(role);
|
||||
|
||||
if (!find_opt_type(argument, &rpl_role_typelib, opt->name, &role))
|
||||
{
|
||||
rpl_status = (role == 1) ? RPL_AUTH_MASTER : RPL_IDLE_SLAVE;
|
||||
|
|
@ -8434,6 +8434,8 @@ mysqld_get_one_option(int optid,
|
|||
case OPT_BINLOG_FORMAT:
|
||||
{
|
||||
int id;
|
||||
LINT_INIT(id);
|
||||
|
||||
if (!find_opt_type(argument, &binlog_format_typelib, opt->name, &id))
|
||||
{
|
||||
global_system_variables.binlog_format= opt_binlog_format_id= id - 1;
|
||||
|
|
@ -8684,6 +8686,8 @@ mysqld_get_one_option(int optid,
|
|||
else
|
||||
{
|
||||
int type;
|
||||
LINT_INIT(type);
|
||||
|
||||
if (!find_opt_type(argument, &delay_key_write_typelib, opt->name, &type))
|
||||
delay_key_write_options= (uint) type-1;
|
||||
}
|
||||
|
|
@ -8695,6 +8699,8 @@ mysqld_get_one_option(int optid,
|
|||
case OPT_TX_ISOLATION:
|
||||
{
|
||||
int type;
|
||||
LINT_INIT(type);
|
||||
|
||||
if (!find_opt_type(argument, &tx_isolation_typelib, opt->name, &type))
|
||||
global_system_variables.tx_isolation= (type-1);
|
||||
break;
|
||||
|
|
@ -8782,6 +8788,7 @@ mysqld_get_one_option(int optid,
|
|||
ulong method_conv;
|
||||
int method;
|
||||
LINT_INIT(method_conv);
|
||||
LINT_INIT(method);
|
||||
|
||||
myisam_stats_method_str= argument;
|
||||
if (!find_opt_type(argument, &myisam_stats_method_typelib,
|
||||
|
|
@ -8844,6 +8851,7 @@ mysqld_get_one_option(int optid,
|
|||
case OPT_THREAD_HANDLING:
|
||||
{
|
||||
int id;
|
||||
LINT_INIT(id);
|
||||
if (!find_opt_type(argument, &thread_handling_typelib, opt->name, &id))
|
||||
global_system_variables.thread_handling= id - 1;
|
||||
opt_thread_handling= thread_handling_typelib.type_names[global_system_variables.thread_handling];
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ static int net_data_is_ready(my_socket sd)
|
|||
@param clear_buffer if <> 0, then clear all data from comm buff
|
||||
*/
|
||||
|
||||
void net_clear(NET *net, my_bool clear_buffer)
|
||||
void net_clear(NET *net, my_bool clear_buffer __attribute__((unused)))
|
||||
{
|
||||
#if !defined(EMBEDDED_LIBRARY) && defined(DBUG_OFF)
|
||||
size_t count;
|
||||
|
|
|
|||
|
|
@ -1269,16 +1269,16 @@ uchar *sys_var_set::value_ptr(THD *thd, enum_var_type type,
|
|||
|
||||
void sys_var_set_slave_mode::set_default(THD *thd, enum_var_type type)
|
||||
{
|
||||
slave_exec_mode_options= 0;
|
||||
bit_do_set(slave_exec_mode_options, SLAVE_EXEC_MODE_STRICT);
|
||||
slave_exec_mode_options= (ULL(1) << SLAVE_EXEC_MODE_STRICT);
|
||||
}
|
||||
|
||||
bool sys_var_set_slave_mode::check(THD *thd, set_var *var)
|
||||
{
|
||||
bool rc= sys_var_set::check(thd, var);
|
||||
if (!rc &&
|
||||
bit_is_set(var->save_result.ulong_value, SLAVE_EXEC_MODE_STRICT) == 1 &&
|
||||
bit_is_set(var->save_result.ulong_value, SLAVE_EXEC_MODE_IDEMPOTENT) == 1)
|
||||
test_all_bits(var->save_result.ulong_value,
|
||||
((ULL(1) << SLAVE_EXEC_MODE_STRICT) |
|
||||
(ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT))))
|
||||
{
|
||||
rc= true;
|
||||
my_error(ER_SLAVE_AMBIGOUS_EXEC_MODE, MYF(0), "");
|
||||
|
|
@ -1300,15 +1300,16 @@ void fix_slave_exec_mode(enum_var_type type)
|
|||
DBUG_ENTER("fix_slave_exec_mode");
|
||||
compile_time_assert(sizeof(slave_exec_mode_options) * CHAR_BIT
|
||||
> SLAVE_EXEC_MODE_LAST_BIT - 1);
|
||||
if (bit_is_set(slave_exec_mode_options, SLAVE_EXEC_MODE_STRICT) == 1 &&
|
||||
bit_is_set(slave_exec_mode_options, SLAVE_EXEC_MODE_IDEMPOTENT) == 1)
|
||||
if (test_all_bits(slave_exec_mode_options,
|
||||
((ULL(1) << SLAVE_EXEC_MODE_STRICT) |
|
||||
(ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT))))
|
||||
{
|
||||
sql_print_error("Ambiguous slave modes combination."
|
||||
" STRICT will be used");
|
||||
bit_do_clear(slave_exec_mode_options, SLAVE_EXEC_MODE_IDEMPOTENT);
|
||||
slave_exec_mode_options&= ~(ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT);
|
||||
}
|
||||
if (bit_is_set(slave_exec_mode_options, SLAVE_EXEC_MODE_IDEMPOTENT) == 0)
|
||||
bit_do_set(slave_exec_mode_options, SLAVE_EXEC_MODE_STRICT);
|
||||
if (!(slave_exec_mode_options & (ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT)))
|
||||
slave_exec_mode_options|= (ULL(1)<< SLAVE_EXEC_MODE_STRICT);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2089,6 +2089,8 @@ sp_head::reset_lex(THD *thd)
|
|||
sublex->dec= NULL;
|
||||
sublex->interval_list.empty();
|
||||
sublex->type= 0;
|
||||
sublex->uint_geom_type= 0;
|
||||
sublex->vcol_info= 0;
|
||||
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -536,6 +536,9 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
|
|||
while (!(read_record_info.read_record(&read_record_info)))
|
||||
{
|
||||
ACL_USER user;
|
||||
char *password;
|
||||
uint password_len;
|
||||
|
||||
bzero(&user, sizeof(user));
|
||||
update_hostname(&user.host, get_field(&mem, table->field[0]));
|
||||
user.user= get_field(&mem, table->field[1]);
|
||||
|
|
@ -548,8 +551,8 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
|
|||
continue;
|
||||
}
|
||||
|
||||
char *password= get_field(thd->mem_root, table->field[2]);
|
||||
uint password_len= password ? strlen(password) : 0;
|
||||
password= get_field(&mem, table->field[2]);
|
||||
password_len= password ? strlen(password) : 0;
|
||||
user.auth_string.str= password ? password : const_cast<char*>("");
|
||||
user.auth_string.length= password_len;
|
||||
set_user_salt(&user, password, password_len);
|
||||
|
|
@ -6846,6 +6849,7 @@ bool check_routine_level_acl(THD *thd, const char *db, const char *name,
|
|||
#define initialized 0
|
||||
#define decrease_user_connections(X) /* nothing */
|
||||
#define check_for_max_user_connections(X,Y) 0
|
||||
#define get_or_create_user_conn(A,B,C,D) 0
|
||||
#endif
|
||||
#endif
|
||||
#ifndef HAVE_OPENSSL
|
||||
|
|
@ -7826,15 +7830,15 @@ static int do_auth_once(THD *thd, LEX_STRING *auth_plugin_name,
|
|||
bool unlock_plugin= false;
|
||||
plugin_ref plugin;
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
plugin= native_password_plugin;
|
||||
#else
|
||||
if (auth_plugin_name->str == native_password_plugin_name.str)
|
||||
plugin= native_password_plugin;
|
||||
else
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
if (auth_plugin_name->str == old_password_plugin_name.str)
|
||||
else if (auth_plugin_name->str == old_password_plugin_name.str)
|
||||
plugin= old_password_plugin;
|
||||
else
|
||||
if ((plugin= my_plugin_lock_by_name(thd, auth_plugin_name,
|
||||
MYSQL_AUTHENTICATION_PLUGIN)))
|
||||
else if ((plugin= my_plugin_lock_by_name(thd, auth_plugin_name,
|
||||
MYSQL_AUTHENTICATION_PLUGIN)))
|
||||
unlock_plugin= true;
|
||||
#endif
|
||||
|
||||
|
|
@ -8257,3 +8261,35 @@ mysql_declare_plugin(mysql_password)
|
|||
}
|
||||
mysql_declare_plugin_end;
|
||||
|
||||
maria_declare_plugin(mysql_password)
|
||||
{
|
||||
MYSQL_AUTHENTICATION_PLUGIN, /* type constant */
|
||||
&native_password_handler, /* type descriptor */
|
||||
native_password_plugin_name.str, /* Name */
|
||||
"R.J.Silk, Sergei Golubchik", /* Author */
|
||||
"Native MySQL authentication", /* Description */
|
||||
PLUGIN_LICENSE_GPL, /* License */
|
||||
NULL, /* Init function */
|
||||
NULL, /* Deinit function */
|
||||
0x0100, /* Version (1.0) */
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* String version */
|
||||
MariaDB_PLUGIN_MATURITY_BETA /* Maturity */
|
||||
},
|
||||
{
|
||||
MYSQL_AUTHENTICATION_PLUGIN, /* type constant */
|
||||
&old_password_handler, /* type descriptor */
|
||||
old_password_plugin_name.str, /* Name */
|
||||
"R.J.Silk, Sergei Golubchik", /* Author */
|
||||
"Old MySQL-4.0 authentication", /* Description */
|
||||
PLUGIN_LICENSE_GPL, /* License */
|
||||
NULL, /* Init function */
|
||||
NULL, /* Deinit function */
|
||||
0x0100, /* Version (1.0) */
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* String version */
|
||||
MariaDB_PLUGIN_MATURITY_BETA /* Maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -16,13 +16,12 @@
|
|||
#include <my_global.h>
|
||||
#include <mysql/plugin.h>
|
||||
|
||||
typedef struct st_mysql_plugin builtin_plugin[];
|
||||
typedef struct st_maria_plugin builtin_maria_plugin[];
|
||||
|
||||
extern builtin_plugin
|
||||
builtin_binlog_plugin, builtin_mysql_password_plugin@mysql_plugin_defs@;
|
||||
extern builtin_maria_plugin
|
||||
builtin_maria_binlog_plugin, builtin_maria_mysql_password_plugin@maria_plugin_defs@;
|
||||
|
||||
struct st_mysql_plugin *mysqld_builtins[]=
|
||||
struct st_maria_plugin *mariadb_builtins[]=
|
||||
{
|
||||
builtin_binlog_plugin, builtin_mysql_password_plugin@mysql_plugin_defs@,(struct st_mysql_plugin *)0
|
||||
builtin_maria_binlog_plugin, builtin_maria_mysql_password_plugin@maria_plugin_defs@,(struct st_maria_plugin *)0
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -924,7 +924,7 @@ void THD::update_stats(void)
|
|||
/* A SQL query. */
|
||||
if (lex->sql_command == SQLCOM_SELECT)
|
||||
select_commands++;
|
||||
else if (! sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND)
|
||||
else if (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND)
|
||||
{
|
||||
/* Ignore 'SHOW ' commands */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ public:
|
|||
bool report_error(THD *thd);
|
||||
bool is_invalidated() const { return m_invalidated; }
|
||||
void reset_reprepare_observer() { m_invalidated= FALSE; }
|
||||
Reprepare_observer() {} /* Remove gcc warning */
|
||||
private:
|
||||
bool m_invalidated;
|
||||
};
|
||||
|
|
@ -1117,6 +1118,7 @@ public:
|
|||
/* Ignore error */
|
||||
return TRUE;
|
||||
}
|
||||
Dummy_error_handler() {} /* Remove gcc warning */
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
#define REPORT_TO_LOG 1
|
||||
#define REPORT_TO_USER 2
|
||||
|
||||
extern struct st_mysql_plugin *mysqld_builtins[];
|
||||
extern struct st_maria_plugin *mariadb_builtins[];
|
||||
|
||||
/**
|
||||
@note The order of the enumeration is critical.
|
||||
|
|
@ -78,6 +78,14 @@ static const char *sizeof_st_plugin_sym=
|
|||
"_mysql_sizeof_struct_st_plugin_";
|
||||
static const char *plugin_declarations_sym= "_mysql_plugin_declarations_";
|
||||
static int min_plugin_interface_version= MYSQL_PLUGIN_INTERFACE_VERSION & ~0xFF;
|
||||
static const char *maria_plugin_interface_version_sym=
|
||||
"_maria_plugin_interface_version_";
|
||||
static const char *maria_sizeof_st_plugin_sym=
|
||||
"_maria_sizeof_struct_st_plugin_";
|
||||
static const char *maria_plugin_declarations_sym=
|
||||
"_maria_plugin_declarations_";
|
||||
static int min_maria_plugin_interface_version=
|
||||
MARIA_PLUGIN_INTERFACE_VERSION & ~0xFF;
|
||||
#endif
|
||||
|
||||
/* Note that 'int version' must be the first field of every plugin
|
||||
|
|
@ -211,7 +219,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, int *argc, char **argv,
|
|||
const char *list);
|
||||
static int test_plugin_options(MEM_ROOT *, struct st_plugin_int *,
|
||||
int *, char **);
|
||||
static bool register_builtin(struct st_mysql_plugin *, struct st_plugin_int *,
|
||||
static bool register_builtin(struct st_maria_plugin *, struct st_plugin_int *,
|
||||
struct st_plugin_int **);
|
||||
static void unlock_variables(THD *thd, struct system_variables *vars);
|
||||
static void cleanup_variables(THD *thd, struct system_variables *vars);
|
||||
|
|
@ -368,6 +376,225 @@ static inline void free_plugin_mem(struct st_plugin_dl *p)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Reads data from mysql plugin interface
|
||||
|
||||
@param plugin_dl Structure where the data should be put
|
||||
@param sym Reverence on version info
|
||||
@param dlpath Path to the module
|
||||
@param report What errors should be reported
|
||||
|
||||
@retval FALSE OK
|
||||
@retval TRUE ERROR
|
||||
*/
|
||||
|
||||
#ifdef HAVE_DLOPEN
|
||||
static my_bool read_mysql_plugin_info(struct st_plugin_dl *plugin_dl,
|
||||
void *sym, char *dlpath,
|
||||
int report)
|
||||
{
|
||||
DBUG_ENTER("read_maria_plugin_info");
|
||||
/* Determine interface version */
|
||||
if (!sym)
|
||||
{
|
||||
free_plugin_mem(plugin_dl);
|
||||
report_error(report, ER_CANT_FIND_DL_ENTRY, plugin_interface_version_sym);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
plugin_dl->mariaversion= 0;
|
||||
plugin_dl->mysqlversion= *(int *)sym;
|
||||
/* Versioning */
|
||||
if (plugin_dl->mysqlversion < min_plugin_interface_version ||
|
||||
(plugin_dl->mysqlversion >> 8) > (MYSQL_PLUGIN_INTERFACE_VERSION >> 8))
|
||||
{
|
||||
free_plugin_mem(plugin_dl);
|
||||
report_error(report, ER_CANT_OPEN_LIBRARY, dlpath, 0,
|
||||
"plugin interface version mismatch");
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
/* Find plugin declarations */
|
||||
if (!(sym= dlsym(plugin_dl->handle, plugin_declarations_sym)))
|
||||
{
|
||||
free_plugin_mem(plugin_dl);
|
||||
report_error(report, ER_CANT_FIND_DL_ENTRY, plugin_declarations_sym);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
|
||||
/* convert mysql declaration to maria one */
|
||||
{
|
||||
int i;
|
||||
uint sizeof_st_plugin;
|
||||
struct st_mysql_plugin *old;
|
||||
struct st_maria_plugin *cur;
|
||||
char *ptr= (char *)sym;
|
||||
|
||||
if ((sym= dlsym(plugin_dl->handle, sizeof_st_plugin_sym)))
|
||||
sizeof_st_plugin= *(int *)sym;
|
||||
else
|
||||
{
|
||||
DBUG_ASSERT(min_plugin_interface_version == 0);
|
||||
sizeof_st_plugin= (int)offsetof(struct st_mysql_plugin, version);
|
||||
}
|
||||
|
||||
for (i= 0;
|
||||
((struct st_mysql_plugin *)(ptr + i * sizeof_st_plugin))->info;
|
||||
i++)
|
||||
/* no op */;
|
||||
|
||||
cur= (struct st_maria_plugin*)
|
||||
my_malloc((i + 1) * sizeof(struct st_maria_plugin),
|
||||
MYF(MY_ZEROFILL|MY_WME));
|
||||
if (!cur)
|
||||
{
|
||||
free_plugin_mem(plugin_dl);
|
||||
report_error(report, ER_OUTOFMEMORY, plugin_dl->dl.length);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
/*
|
||||
All st_plugin fields not initialized in the plugin explicitly, are
|
||||
set to 0. It matches C standard behaviour for struct initializers that
|
||||
have less values than the struct definition.
|
||||
*/
|
||||
for (i=0;
|
||||
(old= (struct st_mysql_plugin *)(ptr + i * sizeof_st_plugin))->info;
|
||||
i++)
|
||||
{
|
||||
|
||||
cur->type= old->type;
|
||||
cur->info= old->info;
|
||||
cur->name= old->name;
|
||||
cur->author= old->author;
|
||||
cur->descr= old->descr;
|
||||
cur->license= old->license;
|
||||
cur->init= old->init;
|
||||
cur->deinit= old->deinit;
|
||||
cur->version= old->version;
|
||||
cur->status_vars= old->status_vars;
|
||||
cur->system_vars= old->system_vars;
|
||||
/*
|
||||
Something like this should be added to process
|
||||
new mysql plugin versions:
|
||||
if (plugin_dl->mysqlversion > 0x0101)
|
||||
{
|
||||
cur->newfield= CONSTANT_MEANS_UNKNOWN;
|
||||
}
|
||||
else
|
||||
{
|
||||
cur->newfield= old->newfield;
|
||||
}
|
||||
*/
|
||||
/* Maria only fields */
|
||||
cur->version_info= "Unknown";
|
||||
cur->maturity= MariaDB_PLUGIN_MATURITY_UNKNOWN;
|
||||
}
|
||||
plugin_dl->allocated= true;
|
||||
plugin_dl->plugins= (struct st_maria_plugin *)cur;
|
||||
}
|
||||
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Reads data from maria plugin interface
|
||||
|
||||
@param plugin_dl Structure where the data should be put
|
||||
@param sym Reverence on version info
|
||||
@param dlpath Path to the module
|
||||
@param report what errors should be reported
|
||||
|
||||
@retval FALSE OK
|
||||
@retval TRUE ERROR
|
||||
*/
|
||||
|
||||
static my_bool read_maria_plugin_info(struct st_plugin_dl *plugin_dl,
|
||||
void *sym, char *dlpath,
|
||||
int report)
|
||||
{
|
||||
DBUG_ENTER("read_maria_plugin_info");
|
||||
|
||||
/* Determine interface version */
|
||||
if (!(sym))
|
||||
{
|
||||
/*
|
||||
Actually this branch impossible because in case of absence of maria
|
||||
version we try mysql version.
|
||||
*/
|
||||
free_plugin_mem(plugin_dl);
|
||||
report_error(report, ER_CANT_FIND_DL_ENTRY,
|
||||
maria_plugin_interface_version_sym);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
plugin_dl->mariaversion= *(int *)sym;
|
||||
plugin_dl->mysqlversion= 0;
|
||||
/* Versioning */
|
||||
if (plugin_dl->mariaversion < min_maria_plugin_interface_version ||
|
||||
(plugin_dl->mariaversion >> 8) > (MARIA_PLUGIN_INTERFACE_VERSION >> 8))
|
||||
{
|
||||
free_plugin_mem(plugin_dl);
|
||||
report_error(report, ER_CANT_OPEN_LIBRARY, dlpath, 0,
|
||||
"plugin interface version mismatch");
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
/* Find plugin declarations */
|
||||
if (!(sym= dlsym(plugin_dl->handle, maria_plugin_declarations_sym)))
|
||||
{
|
||||
free_plugin_mem(plugin_dl);
|
||||
report_error(report, ER_CANT_FIND_DL_ENTRY, maria_plugin_declarations_sym);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
if (plugin_dl->mariaversion != MARIA_PLUGIN_INTERFACE_VERSION)
|
||||
{
|
||||
uint sizeof_st_plugin;
|
||||
struct st_maria_plugin *old, *cur;
|
||||
char *ptr= (char *)sym;
|
||||
|
||||
if ((sym= dlsym(plugin_dl->handle, maria_sizeof_st_plugin_sym)))
|
||||
sizeof_st_plugin= *(int *)sym;
|
||||
else
|
||||
{
|
||||
free_plugin_mem(plugin_dl);
|
||||
report_error(report, ER_CANT_FIND_DL_ENTRY, maria_sizeof_st_plugin_sym);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
|
||||
if (sizeof_st_plugin != sizeof(st_mysql_plugin))
|
||||
{
|
||||
int i;
|
||||
for (i= 0;
|
||||
((struct st_maria_plugin *)(ptr + i * sizeof_st_plugin))->info;
|
||||
i++)
|
||||
/* no op */;
|
||||
|
||||
cur= (struct st_maria_plugin*)
|
||||
my_malloc((i + 1) * sizeof(struct st_maria_plugin),
|
||||
MYF(MY_ZEROFILL|MY_WME));
|
||||
if (!cur)
|
||||
{
|
||||
free_plugin_mem(plugin_dl);
|
||||
report_error(report, ER_OUTOFMEMORY, plugin_dl->dl.length);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
/*
|
||||
All st_plugin fields not initialized in the plugin explicitly, are
|
||||
set to 0. It matches C standard behaviour for struct initializers that
|
||||
have less values than the struct definition.
|
||||
*/
|
||||
for (i=0;
|
||||
(old= (struct st_maria_plugin *)(ptr + i * sizeof_st_plugin))->info;
|
||||
i++)
|
||||
memcpy(cur + i, old, min(sizeof(cur[i]), sizeof_st_plugin));
|
||||
|
||||
sym= cur;
|
||||
plugin_dl->allocated= true;
|
||||
}
|
||||
}
|
||||
plugin_dl->plugins= (struct st_maria_plugin *)sym;
|
||||
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
#endif HAVE_DLOPEN
|
||||
|
||||
static st_plugin_dl *plugin_dl_add(const LEX_STRING *dl, int report)
|
||||
{
|
||||
#ifdef HAVE_DLOPEN
|
||||
|
|
@ -415,22 +642,21 @@ static st_plugin_dl *plugin_dl_add(const LEX_STRING *dl, int report)
|
|||
report_error(report, ER_CANT_OPEN_LIBRARY, dlpath, errno, errmsg);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
/* Determine interface version */
|
||||
if (!(sym= dlsym(plugin_dl.handle, plugin_interface_version_sym)))
|
||||
|
||||
/* Checks which plugin interface present and reads info */
|
||||
if (!(sym= dlsym(plugin_dl.handle, maria_plugin_interface_version_sym)))
|
||||
{
|
||||
free_plugin_mem(&plugin_dl);
|
||||
report_error(report, ER_CANT_FIND_DL_ENTRY, plugin_interface_version_sym);
|
||||
DBUG_RETURN(0);
|
||||
if (read_mysql_plugin_info(&plugin_dl,
|
||||
dlsym(plugin_dl.handle,
|
||||
plugin_interface_version_sym),
|
||||
dlpath,
|
||||
report))
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
plugin_dl.version= *(int *)sym;
|
||||
/* Versioning */
|
||||
if (plugin_dl.version < min_plugin_interface_version ||
|
||||
(plugin_dl.version >> 8) > (MYSQL_PLUGIN_INTERFACE_VERSION >> 8))
|
||||
else
|
||||
{
|
||||
free_plugin_mem(&plugin_dl);
|
||||
report_error(report, ER_CANT_OPEN_LIBRARY, dlpath, 0,
|
||||
"plugin interface version mismatch");
|
||||
DBUG_RETURN(0);
|
||||
if (read_maria_plugin_info(&plugin_dl, sym, dlpath, report))
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
/* link the services in */
|
||||
|
|
@ -438,7 +664,7 @@ static st_plugin_dl *plugin_dl_add(const LEX_STRING *dl, int report)
|
|||
{
|
||||
if ((sym= dlsym(plugin_dl.handle, list_of_services[i].name)))
|
||||
{
|
||||
uint ver= (uint)(intptr)*(void**)sym;
|
||||
uint ver= (uint)(intptr) *(void **)sym;
|
||||
if (ver > list_of_services[i].version ||
|
||||
(ver >> 8) < (list_of_services[i].version >> 8))
|
||||
{
|
||||
|
|
@ -449,73 +675,10 @@ static st_plugin_dl *plugin_dl_add(const LEX_STRING *dl, int report)
|
|||
report_error(report, ER_CANT_OPEN_LIBRARY, dlpath, 0, buf);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
*(void**)sym= list_of_services[i].service;
|
||||
*(void **)sym= list_of_services[i].service;
|
||||
}
|
||||
}
|
||||
|
||||
/* Find plugin declarations */
|
||||
if (!(sym= dlsym(plugin_dl.handle, plugin_declarations_sym)))
|
||||
{
|
||||
free_plugin_mem(&plugin_dl);
|
||||
report_error(report, ER_CANT_FIND_DL_ENTRY, plugin_declarations_sym);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
if (plugin_dl.version != MYSQL_PLUGIN_INTERFACE_VERSION)
|
||||
{
|
||||
uint sizeof_st_plugin;
|
||||
struct st_mysql_plugin *old, *cur;
|
||||
char *ptr= (char *)sym;
|
||||
|
||||
if ((sym= dlsym(plugin_dl.handle, sizeof_st_plugin_sym)))
|
||||
sizeof_st_plugin= *(int *)sym;
|
||||
else
|
||||
{
|
||||
#ifdef ERROR_ON_NO_SIZEOF_PLUGIN_SYMBOL
|
||||
free_plugin_mem(&plugin_dl);
|
||||
report_error(report, ER_CANT_FIND_DL_ENTRY, sizeof_st_plugin_sym);
|
||||
DBUG_RETURN(0);
|
||||
#else
|
||||
/*
|
||||
When the following assert starts failing, we'll have to switch
|
||||
to the upper branch of the #ifdef
|
||||
*/
|
||||
DBUG_ASSERT(min_plugin_interface_version == 0);
|
||||
sizeof_st_plugin= (int)offsetof(struct st_mysql_plugin, version);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (sizeof_st_plugin != sizeof(st_mysql_plugin))
|
||||
{
|
||||
for (i= 0;
|
||||
((struct st_mysql_plugin *)(ptr+i*sizeof_st_plugin))->info;
|
||||
i++)
|
||||
/* no op */;
|
||||
|
||||
cur= (struct st_mysql_plugin*)
|
||||
my_malloc((i+1)*sizeof(struct st_mysql_plugin), MYF(MY_ZEROFILL|MY_WME));
|
||||
if (!cur)
|
||||
{
|
||||
free_plugin_mem(&plugin_dl);
|
||||
report_error(report, ER_OUTOFMEMORY, plugin_dl.dl.length);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
/*
|
||||
All st_plugin fields not initialized in the plugin explicitly, are
|
||||
set to 0. It matches C standard behaviour for struct initializers that
|
||||
have less values than the struct definition.
|
||||
*/
|
||||
for (i=0;
|
||||
(old=(struct st_mysql_plugin *)(ptr+i*sizeof_st_plugin))->info;
|
||||
i++)
|
||||
memcpy(cur+i, old, min(sizeof(cur[i]), sizeof_st_plugin));
|
||||
|
||||
sym= cur;
|
||||
plugin_dl.allocated= true;
|
||||
}
|
||||
}
|
||||
plugin_dl.plugins= (struct st_mysql_plugin *)sym;
|
||||
|
||||
/* Duplicate and convert dll name */
|
||||
plugin_dl.dl.length= dl->length * files_charset_info->mbmaxlen + 1;
|
||||
if (! (plugin_dl.dl.str= (char*) my_malloc(plugin_dl.dl.length, MYF(0))))
|
||||
|
|
@ -756,7 +919,7 @@ static bool plugin_add(MEM_ROOT *tmp_root,
|
|||
int *argc, char **argv, int report)
|
||||
{
|
||||
struct st_plugin_int tmp;
|
||||
struct st_mysql_plugin *plugin;
|
||||
struct st_maria_plugin *plugin;
|
||||
DBUG_ENTER("plugin_add");
|
||||
if (plugin_find_internal(name, MYSQL_ANY_PLUGIN))
|
||||
{
|
||||
|
|
@ -1161,8 +1324,8 @@ int plugin_init(int *argc, char **argv, int flags)
|
|||
{
|
||||
uint i;
|
||||
bool is_myisam;
|
||||
struct st_mysql_plugin **builtins;
|
||||
struct st_mysql_plugin *plugin;
|
||||
struct st_maria_plugin **builtins;
|
||||
struct st_maria_plugin *plugin;
|
||||
struct st_plugin_int tmp, *plugin_ptr, **reap;
|
||||
MEM_ROOT tmp_root;
|
||||
bool reaped_mandatory_plugin= FALSE;
|
||||
|
|
@ -1201,7 +1364,7 @@ int plugin_init(int *argc, char **argv, int flags)
|
|||
/*
|
||||
First we register builtin plugins
|
||||
*/
|
||||
for (builtins= mysqld_builtins; *builtins; builtins++)
|
||||
for (builtins= mariadb_builtins; *builtins; builtins++)
|
||||
{
|
||||
for (plugin= *builtins; plugin->info; plugin++)
|
||||
{
|
||||
|
|
@ -1316,7 +1479,7 @@ err:
|
|||
}
|
||||
|
||||
|
||||
static bool register_builtin(struct st_mysql_plugin *plugin,
|
||||
static bool register_builtin(struct st_maria_plugin *plugin,
|
||||
struct st_plugin_int *tmp,
|
||||
struct st_plugin_int **ptr)
|
||||
{
|
||||
|
|
@ -1352,7 +1515,7 @@ static bool register_builtin(struct st_mysql_plugin *plugin,
|
|||
RETURN
|
||||
false - plugin registered successfully
|
||||
*/
|
||||
bool plugin_register_builtin(THD *thd, struct st_mysql_plugin *plugin)
|
||||
bool plugin_register_builtin(THD *thd, struct st_maria_plugin *plugin)
|
||||
{
|
||||
struct st_plugin_int tmp, *ptr;
|
||||
bool result= true;
|
||||
|
|
@ -1481,7 +1644,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, int *argc, char **argv,
|
|||
char buffer[FN_REFLEN];
|
||||
LEX_STRING name= {buffer, 0}, dl= {NULL, 0}, *str= &name;
|
||||
struct st_plugin_dl *plugin_dl;
|
||||
struct st_mysql_plugin *plugin;
|
||||
struct st_maria_plugin *plugin;
|
||||
char *p= buffer;
|
||||
DBUG_ENTER("plugin_load_list");
|
||||
while (list)
|
||||
|
|
|
|||
|
|
@ -52,8 +52,9 @@ struct st_plugin_dl
|
|||
{
|
||||
LEX_STRING dl;
|
||||
void *handle;
|
||||
struct st_mysql_plugin *plugins;
|
||||
int version;
|
||||
struct st_maria_plugin *plugins;
|
||||
int mysqlversion;
|
||||
int mariaversion;
|
||||
bool allocated;
|
||||
uint ref_count; /* number of plugins loaded from the library */
|
||||
};
|
||||
|
|
@ -63,7 +64,7 @@ struct st_plugin_dl
|
|||
struct st_plugin_int
|
||||
{
|
||||
LEX_STRING name;
|
||||
struct st_mysql_plugin *plugin;
|
||||
struct st_maria_plugin *plugin;
|
||||
struct st_plugin_dl *plugin_dl;
|
||||
uint state;
|
||||
uint ref_count; /* number of threads using the plugin */
|
||||
|
|
|
|||
|
|
@ -94,11 +94,21 @@ static int make_version_string(char *buf, int buf_length, uint version)
|
|||
return my_snprintf(buf, buf_length, "%d.%d", version>>8,version&0xff);
|
||||
}
|
||||
|
||||
|
||||
static const LEX_STRING maturity_name[]={
|
||||
{ C_STRING_WITH_LEN("Unknown") },
|
||||
{ C_STRING_WITH_LEN("Experimental") },
|
||||
{ C_STRING_WITH_LEN("Alpha") },
|
||||
{ C_STRING_WITH_LEN("Beta") },
|
||||
{ C_STRING_WITH_LEN("Gamma") },
|
||||
{ C_STRING_WITH_LEN("Stable") }};
|
||||
|
||||
|
||||
static my_bool show_plugins(THD *thd, plugin_ref plugin,
|
||||
void *arg)
|
||||
{
|
||||
TABLE *table= (TABLE*) arg;
|
||||
struct st_mysql_plugin *plug= plugin_decl(plugin);
|
||||
struct st_maria_plugin *plug= plugin_decl(plugin);
|
||||
struct st_plugin_dl *plugin_dl= plugin_dlib(plugin);
|
||||
CHARSET_INFO *cs= system_charset_info;
|
||||
char version_buf[20];
|
||||
|
|
@ -143,7 +153,7 @@ static my_bool show_plugins(THD *thd, plugin_ref plugin,
|
|||
table->field[5]->set_notnull();
|
||||
table->field[6]->store(version_buf,
|
||||
make_version_string(version_buf, sizeof(version_buf),
|
||||
plugin_dl->version),
|
||||
plugin_dl->mariaversion),
|
||||
cs);
|
||||
table->field[6]->set_notnull();
|
||||
}
|
||||
|
|
@ -186,6 +196,26 @@ static my_bool show_plugins(THD *thd, plugin_ref plugin,
|
|||
}
|
||||
table->field[9]->set_notnull();
|
||||
|
||||
if ((uint) plug->maturity <= MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
table->field[10]->store(maturity_name[plug->maturity].str,
|
||||
maturity_name[plug->maturity].length,
|
||||
cs);
|
||||
else
|
||||
{
|
||||
DBUG_ASSERT(0);
|
||||
table->field[10]->store("Unknown", 7, cs);
|
||||
}
|
||||
table->field[10]->set_notnull();
|
||||
|
||||
if (plug->version_info)
|
||||
{
|
||||
table->field[11]->store(plug->version_info,
|
||||
strlen(plug->version_info), cs);
|
||||
table->field[11]->set_notnull();
|
||||
}
|
||||
else
|
||||
table->field[11]->set_null();
|
||||
|
||||
return schema_table_store_record(thd, table);
|
||||
}
|
||||
|
||||
|
|
@ -2527,8 +2557,8 @@ int send_user_stats(THD* thd, HASH *all_user_stats, TABLE *table)
|
|||
table->field[j++]->store(user_stats->user, user_stats->user_name_length,
|
||||
system_charset_info);
|
||||
table->field[j++]->store((longlong)user_stats->total_connections,TRUE);
|
||||
table->field[j++]->store((longlong)user_stats->concurrent_connections);
|
||||
table->field[j++]->store((longlong)user_stats->connected_time);
|
||||
table->field[j++]->store((longlong)user_stats->concurrent_connections, TRUE);
|
||||
table->field[j++]->store((longlong)user_stats->connected_time, TRUE);
|
||||
table->field[j++]->store((double)user_stats->busy_time);
|
||||
table->field[j++]->store((double)user_stats->cpu_time);
|
||||
table->field[j++]->store((longlong)user_stats->bytes_received, TRUE);
|
||||
|
|
@ -4426,7 +4456,7 @@ static my_bool iter_schema_engines(THD *thd, plugin_ref plugin,
|
|||
if (plugin_state(plugin) != PLUGIN_IS_READY)
|
||||
{
|
||||
|
||||
struct st_mysql_plugin *plug= plugin_decl(plugin);
|
||||
struct st_maria_plugin *plug= plugin_decl(plugin);
|
||||
if (!(wild && wild[0] &&
|
||||
wild_case_compare(scs, plug->name,wild)))
|
||||
{
|
||||
|
|
@ -7207,6 +7237,8 @@ ST_FIELD_INFO plugin_fields_info[]=
|
|||
{"PLUGIN_AUTHOR", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
|
||||
{"PLUGIN_DESCRIPTION", 65535, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
|
||||
{"PLUGIN_LICENSE", 80, MYSQL_TYPE_STRING, 0, 1, "License", SKIP_OPEN_TABLE},
|
||||
{"PLUGIN_MATURITY", 12, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
|
||||
{"PLUGIN_AUTH_VERSION", 80, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -5704,6 +5704,10 @@ compare_tables(TABLE *table,
|
|||
*/
|
||||
Alter_info tmp_alter_info(*alter_info, thd->mem_root);
|
||||
uint db_options= 0; /* not used */
|
||||
|
||||
/* Set default value for return value (to ensure it's always set) */
|
||||
*need_copy_table= ALTER_TABLE_DATA_CHANGED;
|
||||
|
||||
/* Create the prepared information. */
|
||||
if (mysql_prepare_create_table(thd, create_info,
|
||||
&tmp_alter_info,
|
||||
|
|
@ -5762,7 +5766,6 @@ compare_tables(TABLE *table,
|
|||
(table->s->frm_version < FRM_VER_TRUE_VARCHAR && varchar))
|
||||
{
|
||||
DBUG_PRINT("info", ("Basic checks -> ALTER_TABLE_DATA_CHANGED"));
|
||||
*need_copy_table= ALTER_TABLE_DATA_CHANGED;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
|
@ -5792,7 +5795,6 @@ compare_tables(TABLE *table,
|
|||
{
|
||||
DBUG_PRINT("info", ("NULL behaviour difference in field '%s' -> "
|
||||
"ALTER_TABLE_DATA_CHANGED", new_field->field_name));
|
||||
*need_copy_table= ALTER_TABLE_DATA_CHANGED;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
|
@ -5828,7 +5830,6 @@ compare_tables(TABLE *table,
|
|||
{
|
||||
DBUG_PRINT("info", ("!field_is_equal('%s') -> ALTER_TABLE_DATA_CHANGED",
|
||||
new_field->field_name));
|
||||
*need_copy_table= ALTER_TABLE_DATA_CHANGED;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
// Clear indexed marker
|
||||
|
|
@ -5963,7 +5964,6 @@ compare_tables(TABLE *table,
|
|||
{
|
||||
DBUG_PRINT("info", ("check_if_incompatible_data() -> "
|
||||
"ALTER_TABLE_DATA_CHANGED"));
|
||||
*need_copy_table= ALTER_TABLE_DATA_CHANGED;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1034,10 +1034,12 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
|
|||
bool parse_status;
|
||||
bool result, view_is_mergeable;
|
||||
TABLE_LIST *UNINIT_VAR(view_main_select_tables);
|
||||
|
||||
DBUG_ENTER("mysql_make_view");
|
||||
DBUG_PRINT("info", ("table: 0x%lx (%s)", (ulong) table, table->table_name));
|
||||
|
||||
LINT_INIT(parse_status);
|
||||
LINT_INIT(view_select);
|
||||
|
||||
if (table->view)
|
||||
{
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -2342,6 +2342,7 @@ sp_init_param:
|
|||
|
||||
lex->interval_list.empty();
|
||||
lex->uint_geom_type= 0;
|
||||
lex->vcol_info= 0;
|
||||
}
|
||||
;
|
||||
|
||||
|
|
@ -8190,7 +8191,7 @@ function_call_generic:
|
|||
|
||||
builder= find_qualified_function_builder(thd);
|
||||
DBUG_ASSERT(builder);
|
||||
item= builder->create(thd, $1, $3, true, $5);
|
||||
item= builder->create_with_db(thd, $1, $3, true, $5);
|
||||
|
||||
if (! ($$= item))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1655,4 +1655,21 @@ mysql_declare_plugin(archive)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(archive)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&archive_storage_engine,
|
||||
"ARCHIVE",
|
||||
"Brian Aker, MySQL AB",
|
||||
"Archive storage engine",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
archive_db_init, /* Plugin Init */
|
||||
archive_db_done, /* Plugin Deinit */
|
||||
0x0300 /* 3.0 */,
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
||||
|
|
|
|||
|
|
@ -369,3 +369,20 @@ mysql_declare_plugin(blackhole)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(blackhole)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&blackhole_storage_engine,
|
||||
"BLACKHOLE",
|
||||
"MySQL AB",
|
||||
"/dev/null storage engine (anything you write to it disappears)",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
blackhole_init, /* Plugin Init */
|
||||
blackhole_fini, /* Plugin Deinit */
|
||||
0x0100 /* 1.0 */,
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -1636,4 +1636,20 @@ mysql_declare_plugin(csv)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
|
||||
maria_declare_plugin(csv)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&csv_storage_engine,
|
||||
"CSV",
|
||||
"Brian Aker, MySQL AB",
|
||||
"CSV storage engine",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
tina_init_func, /* Plugin Init */
|
||||
tina_done_func, /* Plugin Deinit */
|
||||
0x0100 /* 1.0 */,
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -924,3 +924,20 @@ mysql_declare_plugin(example)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(example)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&example_storage_engine,
|
||||
"EXAMPLE",
|
||||
"Brian Aker, MySQL AB",
|
||||
"Example storage engine",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
example_init_func, /* Plugin Init */
|
||||
example_done_func, /* Plugin Deinit */
|
||||
0x0001 /* 0.1 */,
|
||||
func_status, /* status variables */
|
||||
example_system_variables, /* system variables */
|
||||
"0.1", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_EXPERIMENTAL /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -155,7 +155,8 @@ public:
|
|||
/** @brief
|
||||
This method will never be called if you do not implement indexes.
|
||||
*/
|
||||
virtual double read_time(ha_rows rows) { return (double) rows / 20.0+1; }
|
||||
virtual double read_time(uint index, uint ranges, ha_rows rows)
|
||||
{ return (double) rows / 20.0+1; }
|
||||
|
||||
/*
|
||||
Everything below are methods that we implement in ha_example.cc.
|
||||
|
|
|
|||
|
|
@ -3379,3 +3379,20 @@ mysql_declare_plugin(federated)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(federated)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&federated_storage_engine,
|
||||
"FEDERATED",
|
||||
"Patrick Galbraith and Brian Aker, MySQL AB",
|
||||
"Federated MySQL storage engine",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
federated_db_init, /* Plugin Init */
|
||||
federated_done, /* Plugin Deinit */
|
||||
0x0100 /* 1.0 */,
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_BETA /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -3505,9 +3505,26 @@ mysql_declare_plugin(federated)
|
|||
PLUGIN_LICENSE_GPL,
|
||||
federatedx_db_init, /* Plugin Init */
|
||||
federatedx_done, /* Plugin Deinit */
|
||||
0x0100 /* 1.0 */,
|
||||
0x0200 /* 2.0 */,
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(federated)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&federatedx_storage_engine,
|
||||
"FEDERATED",
|
||||
"Patrick Galbraith",
|
||||
"FederatedX pluggable storage engine",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
federatedx_db_init, /* Plugin Init */
|
||||
federatedx_done, /* Plugin Deinit */
|
||||
0x0200 /* 2.0 */,
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"2.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_BETA /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -767,3 +767,20 @@ mysql_declare_plugin(heap)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(heap)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&heap_storage_engine,
|
||||
"MEMORY",
|
||||
"MySQL AB",
|
||||
"Hash based, stored in memory, useful for temporary tables",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
heap_init,
|
||||
NULL,
|
||||
0x0100, /* 1.0 */
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -3357,3 +3357,20 @@ mysql_declare_plugin(ibmdb2i)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(ibmdb2i)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&ibmdb2i_storage_engine,
|
||||
"IBMDB2I",
|
||||
"The IBM development team in Rochester, Minnesota",
|
||||
"IBM DB2 for i Storage Engine",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
ibmdb2i_init_func, /* Plugin Init */
|
||||
ibmdb2i_done_func, /* Plugin Deinit */
|
||||
0x0100 /* 1.0 */,
|
||||
NULL, /* status variables */
|
||||
ibmdb2i_system_variables, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_UNKNOWN /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -8930,6 +8930,23 @@ mysql_declare_plugin(innobase)
|
|||
NULL /* reserved */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(innobase)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&innobase_storage_engine,
|
||||
innobase_hton_name,
|
||||
"Innobase OY",
|
||||
"Supports transactions, row-level locking, and foreign keys",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
innobase_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0100 /* 1.0 */,
|
||||
innodb_status_variables_export, /* status variables */
|
||||
innobase_system_variables, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE, /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
||||
/** @brief Initialize the default value of innodb_commit_concurrency.
|
||||
|
||||
|
|
|
|||
|
|
@ -455,6 +455,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_trx =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_trx_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_TRX"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB transactions"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, innodb_trx_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_locks */
|
||||
static ST_FIELD_INFO innodb_locks_fields_info[] =
|
||||
{
|
||||
|
|
@ -730,6 +783,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_locks =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_locks_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_LOCKS"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB conflicting locks"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, innodb_locks_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_lock_waits */
|
||||
static ST_FIELD_INFO innodb_lock_waits_fields_info[] =
|
||||
{
|
||||
|
|
@ -913,6 +1019,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_lock_waits =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_lock_waits_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_LOCK_WAITS"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, "Innobase Oy"),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB which lock is blocking which"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, innodb_lock_waits_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/*******************************************************************//**
|
||||
Common function to fill any of the dynamic tables:
|
||||
INFORMATION_SCHEMA.innodb_trx
|
||||
|
|
@ -1245,6 +1404,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmp =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmp_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_CMP"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "Statistics for the InnoDB compression"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_cmp_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmp_reset =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
|
|
@ -1295,6 +1507,60 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmp_reset =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_cmp_reset_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_CMP_RESET"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "Statistics for the InnoDB compression;"
|
||||
" reset cumulated counts"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_cmp_reset_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/* Fields of the dynamic table information_schema.innodb_cmpmem. */
|
||||
static ST_FIELD_INFO i_s_cmpmem_fields_info[] =
|
||||
{
|
||||
|
|
@ -1511,6 +1777,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmpmem =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_cmpmem_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_CMPMEM"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "Statistics for the InnoDB compressed buffer pool"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_cmpmem_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmpmem_reset =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
|
|
@ -1561,6 +1880,60 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmpmem_reset =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_cmpmem_reset_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_CMPMEM_RESET"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "Statistics for the InnoDB compressed buffer pool;"
|
||||
" reset cumulated counts"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_cmpmem_reset_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/*******************************************************************//**
|
||||
Unbind a dynamic INFORMATION_SCHEMA table.
|
||||
@return 0 on success */
|
||||
|
|
|
|||
|
|
@ -3471,9 +3471,26 @@ mysql_declare_plugin(maria)
|
|||
PLUGIN_LICENSE_GPL,
|
||||
ha_maria_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0100, /* 1.0 */
|
||||
0x0105, /* 1.5 */
|
||||
status_variables, /* status variables */
|
||||
system_variables, /* system variables */
|
||||
NULL
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(maria)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&maria_storage_engine,
|
||||
"MARIA",
|
||||
"MySQL AB",
|
||||
"Crash-safe tables with MyISAM heritage",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
ha_maria_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0105, /* 1.5 */
|
||||
status_variables, /* status variables */
|
||||
system_variables, /* system variables */
|
||||
"1.5", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -1275,7 +1275,10 @@ static my_bool translog_set_lsn_for_files(uint32 from_file, uint32 to_file,
|
|||
{
|
||||
LOGHANDLER_FILE_INFO info;
|
||||
File fd= open_logfile_by_number_no_cache(file);
|
||||
|
||||
LINT_INIT_STRUCT(info);
|
||||
LINT_INIT(info.max_lsn);
|
||||
|
||||
if ((fd < 0) ||
|
||||
((translog_read_file_header(&info, fd) ||
|
||||
(cmp_translog_addr(lsn, info.max_lsn) > 0 &&
|
||||
|
|
@ -3968,6 +3971,7 @@ my_bool translog_init_with_table(const char *directory,
|
|||
{
|
||||
LOGHANDLER_FILE_INFO info;
|
||||
LINT_INIT_STRUCT(info);
|
||||
|
||||
/*
|
||||
Accessing &log_descriptor.open_files without mutex is safe
|
||||
because it is initialization
|
||||
|
|
|
|||
|
|
@ -76,8 +76,8 @@ int _ma_search(register MARIA_HA *info, MARIA_KEY *key, uint32 nextflag,
|
|||
bmove512(info->keyread_buff, page_buff, info->s->block_size);
|
||||
|
||||
/* Save position for a possible read next / previous */
|
||||
info->int_keypos= info->keyread_buff + (ulonglong) info->int_keypos;
|
||||
info->int_maxpos= info->keyread_buff + (ulonglong) info->int_maxpos;
|
||||
info->int_keypos= info->keyread_buff + info->keypos_offset;
|
||||
info->int_maxpos= info->keyread_buff + info->maxpos_offset;
|
||||
info->int_keytree_version= key->keyinfo->version;
|
||||
info->last_search_keypage= info->last_keypage;
|
||||
info->page_changed= 0;
|
||||
|
|
@ -214,8 +214,8 @@ static int _ma_search_no_save(register MARIA_HA *info, MARIA_KEY *key,
|
|||
info->cur_row.trid= _ma_trid_from_key(&info->last_key);
|
||||
|
||||
/* Store offset to key */
|
||||
info->int_keypos= (uchar*) (keypos - page.buff);
|
||||
info->int_maxpos= (uchar*) (maxpos - page.buff);
|
||||
info->keypos_offset= (uint) (keypos - page.buff);
|
||||
info->maxpos_offset= (uint) (maxpos - page.buff);
|
||||
info->int_nod_flag= nod_flag;
|
||||
info->last_keypage= pos;
|
||||
*res_page_link= page_link;
|
||||
|
|
|
|||
|
|
@ -506,8 +506,10 @@ struct st_maria_handler
|
|||
uchar *first_mbr_key; /* Searhed spatial key */
|
||||
uchar *rec_buff; /* Temp buffer for recordpack */
|
||||
uchar *blob_buff; /* Temp buffer for blobs */
|
||||
uchar *int_keypos, /* Save position for next/previous */
|
||||
*int_maxpos; /* -""- */
|
||||
uchar *int_keypos; /* Save position for next/previous */
|
||||
uchar *int_maxpos; /* -""- */
|
||||
uint keypos_offset; /* Tmp storage for offset int_keypos */
|
||||
uint maxpos_offset; /* Tmp storage for offset int_maxpos */
|
||||
uchar *update_field_data; /* Used by update in rows-in-block */
|
||||
uint int_nod_flag; /* -""- */
|
||||
uint32 int_keytree_version; /* -""- */
|
||||
|
|
|
|||
|
|
@ -44,9 +44,10 @@ static void FT_STOPWORD_free(FT_STOPWORD *w, TREE_FREE action,
|
|||
static int ft_add_stopword(const char *w)
|
||||
{
|
||||
FT_STOPWORD sw;
|
||||
return !w ||
|
||||
(((sw.len= (uint) strlen(sw.pos=(const uchar *)w)) >= ft_min_word_len) &&
|
||||
(tree_insert(stopwords3, &sw, 0, stopwords3->custom_arg)==NULL));
|
||||
return (!w ||
|
||||
(((sw.len= (uint) strlen((char*) (sw.pos=(const uchar *)w))) >=
|
||||
ft_min_word_len) &&
|
||||
(tree_insert(stopwords3, &sw, 0, stopwords3->custom_arg)==NULL)));
|
||||
}
|
||||
|
||||
int ft_init_stopwords()
|
||||
|
|
|
|||
|
|
@ -2174,6 +2174,23 @@ mysql_declare_plugin(myisam)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(myisam)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&myisam_storage_engine,
|
||||
"MyISAM",
|
||||
"MySQL AB",
|
||||
"Default engine as of MySQL 3.23 with great performance",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
myisam_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0100, /* 1.0 */
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
||||
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
|
|
|
|||
|
|
@ -382,7 +382,7 @@ static MI_INFO *myisammrg_attach_children_callback(void *callback_param)
|
|||
my_errno= HA_ERR_WRONG_MRG_TABLE_DEF;
|
||||
}
|
||||
DBUG_PRINT("myrg", ("MyISAM handle: 0x%lx my_errno: %d",
|
||||
my_errno ? NULL : (long) myisam, my_errno));
|
||||
my_errno ? 0L : (long) myisam, my_errno));
|
||||
|
||||
err:
|
||||
DBUG_RETURN(my_errno ? NULL : myisam);
|
||||
|
|
@ -1289,3 +1289,20 @@ mysql_declare_plugin(myisammrg)
|
|||
NULL /* config options */
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(myisammrg)
|
||||
{
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&myisammrg_storage_engine,
|
||||
"MRG_MYISAM",
|
||||
"MySQL AB",
|
||||
"Collection of identical MyISAM tables",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
myisammrg_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0100, /* 1.0 */
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
|
|
|
|||
|
|
@ -239,6 +239,7 @@ MYRG_INFO *myrg_parent_open(const char *parent_name,
|
|||
rc= 1;
|
||||
errpos= 0;
|
||||
bzero((char*) &file_cache, sizeof(file_cache));
|
||||
LINT_INIT(m_info);
|
||||
|
||||
/* Open MERGE meta file. */
|
||||
if ((fd= my_open(fn_format(parent_name_buff, parent_name, "", MYRG_NAME_EXT,
|
||||
|
|
|
|||
|
|
@ -5919,6 +5919,40 @@ mysql_declare_plugin(pbxt)
|
|||
drizzle_declare_plugin_end;
|
||||
#else
|
||||
mysql_declare_plugin_end;
|
||||
#ifdef MARIADB_BASE_VERSION
|
||||
maria_declare_plugin(pbxt)
|
||||
{ /* PBXT */
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&pbxt_storage_engine,
|
||||
"PBXT",
|
||||
"Paul McCullagh, PrimeBase Technologies GmbH",
|
||||
"High performance, multi-versioning transactional engine",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
pbxt_init, /* Plugin Init */
|
||||
pbxt_end, /* Plugin Deinit */
|
||||
0x0001 /* 0.1 */,
|
||||
NULL, /* status variables */
|
||||
pbxt_system_variables, /* system variables */
|
||||
"1.0.09g RC3", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
|
||||
},
|
||||
{ /* PBXT_STATISTICS */
|
||||
MYSQL_INFORMATION_SCHEMA_PLUGIN,
|
||||
&pbxt_statitics,
|
||||
"PBXT_STATISTICS",
|
||||
"Paul McCullagh, PrimeBase Technologies GmbH",
|
||||
"PBXT internal system statitics",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
pbxt_init_statistics, /* plugin init */
|
||||
pbxt_exit_statistics, /* plugin deinit */
|
||||
0x0005,
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
"1.0.09g RC3", /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
|
||||
}
|
||||
maria_declare_plugin_end;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(XT_WIN) && defined(XT_COREDUMP)
|
||||
|
|
|
|||
|
|
@ -10818,6 +10818,39 @@ i_s_innodb_index_stats,
|
|||
i_s_innodb_admin_command,
|
||||
i_s_innodb_patches
|
||||
mysql_declare_plugin_end;
|
||||
maria_declare_plugin(innobase)
|
||||
{ /* InnoDB */
|
||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&innobase_storage_engine,
|
||||
innobase_hton_name,
|
||||
"Innobase Oy",
|
||||
"Supports transactions, row-level locking, and foreign keys",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
innobase_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
INNODB_VERSION_SHORT,
|
||||
innodb_status_variables_export,/* status variables */
|
||||
innobase_system_variables, /* system variables */
|
||||
INNODB_VERSION_STR, /* string version */
|
||||
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
|
||||
},
|
||||
i_s_innodb_rseg_maria,
|
||||
i_s_innodb_buffer_pool_pages_maria,
|
||||
i_s_innodb_buffer_pool_pages_index_maria,
|
||||
i_s_innodb_buffer_pool_pages_blob_maria,
|
||||
i_s_innodb_trx_maria,
|
||||
i_s_innodb_locks_maria,
|
||||
i_s_innodb_lock_waits_maria,
|
||||
i_s_innodb_cmp_maria,
|
||||
i_s_innodb_cmp_reset_maria,
|
||||
i_s_innodb_cmpmem_maria,
|
||||
i_s_innodb_cmpmem_reset_maria,
|
||||
i_s_innodb_table_stats_maria,
|
||||
i_s_innodb_index_stats_maria,
|
||||
i_s_innodb_admin_command_maria,
|
||||
i_s_innodb_patches_maria
|
||||
maria_declare_plugin_end;
|
||||
|
||||
|
||||
/** @brief Initialize the default value of innodb_commit_concurrency.
|
||||
|
||||
|
|
|
|||
|
|
@ -393,6 +393,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_patches =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_patches_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "XTRADB_ENHANCEMENTS"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, "Percona"),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "Enhancements applied to InnoDB plugin"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, innodb_patches_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
|
||||
static ST_FIELD_INFO i_s_innodb_buffer_pool_pages_fields_info[] =
|
||||
{
|
||||
|
|
@ -1040,6 +1093,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_buffer_pool_pages =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_buffer_pool_pages_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_BUFFER_POOL_PAGES"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB buffer pool pages"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_innodb_buffer_pool_pages_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, 0x0100 /* 1.0 */),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_mysql_plugin i_s_innodb_buffer_pool_pages_index =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
|
|
@ -1089,6 +1195,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_buffer_pool_pages_index =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_buffer_pool_pages_index_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_BUFFER_POOL_PAGES_INDEX"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB buffer pool index pages"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_innodb_buffer_pool_pages_index_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, 0x0100 /* 1.0 */),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_mysql_plugin i_s_innodb_buffer_pool_pages_blob =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
|
|
@ -1138,6 +1297,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_buffer_pool_pages_blob =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_buffer_pool_pages_blob_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_BUFFER_POOL_PAGES_BLOB"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB buffer pool blob pages"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_innodb_buffer_pool_pages_blob_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, 0x0100 /* 1.0 */),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
|
||||
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_trx */
|
||||
static ST_FIELD_INFO innodb_trx_fields_info[] =
|
||||
|
|
@ -1373,6 +1585,60 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_trx =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_trx_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_TRX"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB transactions"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, innodb_trx_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_locks */
|
||||
static ST_FIELD_INFO innodb_locks_fields_info[] =
|
||||
{
|
||||
|
|
@ -1648,6 +1914,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_locks =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_locks_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_LOCKS"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB conflicting locks"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, innodb_locks_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_lock_waits */
|
||||
static ST_FIELD_INFO innodb_lock_waits_fields_info[] =
|
||||
{
|
||||
|
|
@ -1831,6 +2150,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_lock_waits =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_lock_waits_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_LOCK_WAITS"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, "Innobase Oy"),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB which lock is blocking which"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, innodb_lock_waits_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/*******************************************************************//**
|
||||
Common function to fill any of the dynamic tables:
|
||||
INFORMATION_SCHEMA.innodb_trx
|
||||
|
|
@ -2163,6 +2535,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmp =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_cmp_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_CMP"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "Statistics for the InnoDB compression"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_cmp_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmp_reset =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
|
|
@ -2213,6 +2638,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmp_reset =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_cmp_reset_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_CMP_RESET"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "Statistics for the InnoDB compression;"
|
||||
" reset cumulated counts"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_cmp_reset_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
/* Fields of the dynamic table information_schema.innodb_cmpmem. */
|
||||
static ST_FIELD_INFO i_s_cmpmem_fields_info[] =
|
||||
{
|
||||
|
|
@ -2431,6 +2909,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmpmem =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_cmpmem_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_CMPMEM"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "Statistics for the InnoDB compressed buffer pool"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_cmpmem_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmpmem_reset =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
|
|
@ -2481,6 +3012,60 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_cmpmem_reset =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_cmpmem_reset_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_CMPMEM_RESET"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "Statistics for the InnoDB compressed buffer pool;"
|
||||
" reset cumulated counts"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_cmpmem_reset_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, INNODB_VERSION_SHORT),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/*******************************************************************//**
|
||||
Unbind a dynamic INFORMATION_SCHEMA table.
|
||||
@return 0 on success */
|
||||
|
|
@ -2660,6 +3245,59 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_rseg =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_rseg_maria =
|
||||
{
|
||||
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
|
||||
/* int */
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
||||
/* pointer to type-specific plugin descriptor */
|
||||
/* void* */
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
|
||||
/* plugin name */
|
||||
/* const char* */
|
||||
STRUCT_FLD(name, "INNODB_RSEG"),
|
||||
|
||||
/* plugin author (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
|
||||
/* general descriptive text (for SHOW PLUGINS) */
|
||||
/* const char* */
|
||||
STRUCT_FLD(descr, "InnoDB rollback segment information"),
|
||||
|
||||
/* the plugin license (PLUGIN_LICENSE_XXX) */
|
||||
/* int */
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
|
||||
/* the function to invoke when plugin is loaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(init, i_s_innodb_rseg_init),
|
||||
|
||||
/* the function to invoke when plugin is unloaded */
|
||||
/* int (*)(void*); */
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
|
||||
/* plugin version (for SHOW PLUGINS) */
|
||||
/* unsigned int */
|
||||
STRUCT_FLD(version, 0x0100 /* 1.0 */),
|
||||
|
||||
/* struct st_mysql_show_var* */
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
|
||||
/* struct st_mysql_sys_var** */
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
|
||||
/* string version */
|
||||
/* const char * */
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
|
||||
/* Maturity */
|
||||
/* int */
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
*/
|
||||
static ST_FIELD_INFO i_s_innodb_table_stats_info[] =
|
||||
|
|
@ -2940,6 +3578,23 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_table_stats =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_table_stats_maria =
|
||||
{
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
STRUCT_FLD(name, "INNODB_TABLE_STATS"),
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
STRUCT_FLD(descr, "InnoDB table statistics in memory"),
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
STRUCT_FLD(init, i_s_innodb_table_stats_init),
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
STRUCT_FLD(version, 0x0100 /* 1.0 */),
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_mysql_plugin i_s_innodb_index_stats =
|
||||
{
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
|
|
@ -2956,6 +3611,23 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_index_stats =
|
|||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_index_stats_maria =
|
||||
{
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
STRUCT_FLD(name, "INNODB_INDEX_STATS"),
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
STRUCT_FLD(descr, "InnoDB index statistics in memory"),
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
STRUCT_FLD(init, i_s_innodb_index_stats_init),
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
STRUCT_FLD(version, 0x0100 /* 1.0 */),
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
*/
|
||||
static ST_FIELD_INFO i_s_innodb_admin_command_info[] =
|
||||
|
|
@ -2988,7 +3660,6 @@ i_s_innodb_admin_command_fill(
|
|||
COND* cond)
|
||||
{
|
||||
TABLE* i_s_table = (TABLE *) tables->table;
|
||||
CHARSET_INFO *cs= system_charset_info;
|
||||
char** query_str;
|
||||
char* ptr;
|
||||
char quote = '\0';
|
||||
|
|
@ -3122,3 +3793,20 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_admin_command =
|
|||
STRUCT_FLD(system_vars, NULL),
|
||||
STRUCT_FLD(__reserved1, NULL)
|
||||
};
|
||||
|
||||
UNIV_INTERN struct st_maria_plugin i_s_innodb_admin_command_maria =
|
||||
{
|
||||
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
|
||||
STRUCT_FLD(info, &i_s_info),
|
||||
STRUCT_FLD(name, "XTRADB_ADMIN_COMMAND"),
|
||||
STRUCT_FLD(author, plugin_author),
|
||||
STRUCT_FLD(descr, "XtraDB specific command acceptor"),
|
||||
STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
|
||||
STRUCT_FLD(init, i_s_innodb_admin_command_init),
|
||||
STRUCT_FLD(deinit, i_s_common_deinit),
|
||||
STRUCT_FLD(version, 0x0100 /* 1.0 */),
|
||||
STRUCT_FLD(status_vars, NULL),
|
||||
STRUCT_FLD(system_vars, NULL),
|
||||
STRUCT_FLD(version_info, "1.0"),
|
||||
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_STABLE)
|
||||
};
|
||||
|
|
|
|||
|
|
@ -42,4 +42,20 @@ extern struct st_mysql_plugin i_s_innodb_table_stats;
|
|||
extern struct st_mysql_plugin i_s_innodb_index_stats;
|
||||
extern struct st_mysql_plugin i_s_innodb_admin_command;
|
||||
|
||||
extern struct st_maria_plugin i_s_innodb_buffer_pool_pages_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_buffer_pool_pages_index_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_buffer_pool_pages_blob_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_trx_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_locks_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_lock_waits_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_cmp_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_cmp_reset_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_cmpmem_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_cmpmem_reset_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_patches_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_rseg_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_table_stats_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_index_stats_maria;
|
||||
extern struct st_maria_plugin i_s_innodb_admin_command_maria;
|
||||
|
||||
#endif /* i_s_h */
|
||||
|
|
|
|||
|
|
@ -517,7 +517,7 @@ UNIV_INLINE
|
|||
rec_t*
|
||||
page_rec_get_next(
|
||||
/*==============*/
|
||||
rec_t* rec); /*!< in: pointer to record */
|
||||
const rec_t* rec); /*!< in: pointer to record */
|
||||
/************************************************************//**
|
||||
Gets the pointer to the next record on the page.
|
||||
@return pointer to next record */
|
||||
|
|
|
|||
|
|
@ -731,7 +731,7 @@ UNIV_INLINE
|
|||
rec_t*
|
||||
page_rec_get_next(
|
||||
/*==============*/
|
||||
rec_t* rec) /*!< in: pointer to record */
|
||||
const rec_t* rec) /*!< in: pointer to record */
|
||||
{
|
||||
return((rec_t*) page_rec_get_next_low(rec, page_rec_is_comp(rec)));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ Inserts a NODE2 after NODE1 in a list.
|
|||
/** Invalidate the pointers in a list node.
|
||||
@param NAME list name
|
||||
@param N pointer to the node that was removed */
|
||||
# define UT_LIST_REMOVE_CLEAR(NAME, N) while (0)
|
||||
# define UT_LIST_REMOVE_CLEAR(NAME, N) {} while (0)
|
||||
#endif
|
||||
|
||||
/*******************************************************************//**
|
||||
|
|
|
|||
|
|
@ -3280,7 +3280,6 @@ recv_recovery_from_checkpoint_finish(void)
|
|||
#endif /* UNIV_DEBUG */
|
||||
|
||||
if (recv_needed_recovery && srv_recovery_stats) {
|
||||
FILE* file = stderr;
|
||||
ulint i;
|
||||
|
||||
fprintf(stderr,
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue