Cherry-picking WL#5710 from mysql-5.5 to mysql-5.5.16-release.
Original revision id: # revno: 3489 [merge] # revision-id: tatjana.nuernberg@oracle.com-20110811120945-c6x9a5d2du8s9oj2 # parent: tatjana.nuernberg@oracle.com-20110811112736-so8r813hs8dmf7nr # parent: chuck.bell@oracle.com-20110810183949-2s9uxcuoux2p668e # committer: Tatjana Azundris Nuernberg <tatjana.nuernberg@oracle.com> # branch nick: 55-9 # timestamp: Thu 2011-08-11 13:09:45 +0100 # message: # auto-merge This merge revision also has a patch for Bug 12664445, which has been also taken to 5.5.16.
This commit is contained in:
parent
c8c3e9bd9b
commit
11c20be47e
@ -54,6 +54,9 @@ ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
||||
MYSQL_ADD_EXECUTABLE(mysqlshow mysqlshow.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysql_plugin mysql_plugin.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_plugin mysqlclient)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc)
|
||||
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient)
|
||||
|
||||
@ -69,7 +72,7 @@ IF(WIN32)
|
||||
MYSQL_ADD_EXECUTABLE(echo echo.c)
|
||||
ENDIF(WIN32)
|
||||
|
||||
SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap
|
||||
SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap mysql_plugin
|
||||
PROPERTIES HAS_CXX TRUE)
|
||||
|
||||
ADD_DEFINITIONS(-DHAVE_DLOPEN)
|
||||
|
1192
client/mysql_plugin.c
Normal file
1192
client/mysql_plugin.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -603,6 +603,8 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
||||
#define FN_LIBCHAR '\\'
|
||||
#define FN_LIBCHAR2 '/'
|
||||
#define FN_DIRSEP "/\\" /* Valid directory separators */
|
||||
#define FN_EXEEXT ".exe"
|
||||
#define FN_SOEXT ".dll"
|
||||
#define FN_ROOTDIR "\\"
|
||||
#define FN_DEVCHAR ':'
|
||||
#define FN_NETWORK_DRIVES /* Uses \\ to indicate network drives */
|
||||
@ -611,6 +613,8 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
||||
#define FN_LIBCHAR '/'
|
||||
#define FN_LIBCHAR2 '/'
|
||||
#define FN_DIRSEP "/" /* Valid directory separators */
|
||||
#define FN_EXEEXT ""
|
||||
#define FN_SOEXT ".so"
|
||||
#define FN_ROOTDIR "/"
|
||||
#endif
|
||||
|
||||
|
8
mysql-test/include/daemon_example_bad_format.ini
Normal file
8
mysql-test/include/daemon_example_bad_format.ini
Normal file
@ -0,0 +1,8 @@
|
||||
#
|
||||
# Plugin configuration file. Place the following on a separate line:
|
||||
#
|
||||
# library binary file name (without .so or .dll)
|
||||
# component_name
|
||||
# [component_name] - additional components in plugin
|
||||
#
|
||||
libdaemon_example
|
9
mysql-test/include/daemon_example_bad_soname.ini
Normal file
9
mysql-test/include/daemon_example_bad_soname.ini
Normal file
@ -0,0 +1,9 @@
|
||||
#
|
||||
# Plugin configuration file. Place the following on a separate line:
|
||||
#
|
||||
# library binary file name (without .so or .dll)
|
||||
# component_name
|
||||
# [component_name] - additional components in plugin
|
||||
#
|
||||
libdaemon_BADNAME
|
||||
daemon_BADNAME
|
@ -39,3 +39,4 @@ ha_archive storage/archive ARCHIVE_PLUGIN
|
||||
ha_blackhole storage/blackhole BLACKHOLE_PLUGIN
|
||||
ha_federated storage/federated FEDERATED_PLUGIN
|
||||
mypluglib plugin/fulltext SIMPLE_PARSER
|
||||
libdaemon_example plugin/daemon_example DAEMONEXAMPLE
|
||||
|
@ -168,6 +168,7 @@ my $opt_suites;
|
||||
|
||||
our $opt_verbose= 0; # Verbose output, enable with --verbose
|
||||
our $exe_mysql;
|
||||
our $exe_mysql_plugin;
|
||||
our $exe_mysqladmin;
|
||||
our $exe_mysqltest;
|
||||
our $exe_libtool;
|
||||
@ -1950,6 +1951,7 @@ sub executable_setup () {
|
||||
# Look for the client binaries
|
||||
$exe_mysqladmin= mtr_exe_exists("$path_client_bindir/mysqladmin");
|
||||
$exe_mysql= mtr_exe_exists("$path_client_bindir/mysql");
|
||||
$exe_mysql_plugin= mtr_exe_exists("$path_client_bindir/mysql_plugin");
|
||||
|
||||
$exe_mysql_embedded= mtr_exe_maybe_exists("$basedir/libmysqld/examples/mysql_embedded");
|
||||
|
||||
@ -2357,6 +2359,7 @@ sub environment_setup {
|
||||
$ENV{'MYSQLADMIN'}= native_path($exe_mysqladmin);
|
||||
$ENV{'MYSQL_CLIENT_TEST'}= mysql_client_test_arguments();
|
||||
$ENV{'EXE_MYSQL'}= $exe_mysql;
|
||||
$ENV{'MYSQL_PLUGIN'}= $exe_mysql_plugin;
|
||||
$ENV{'MYSQL_EMBEDDED'}= $exe_mysql_embedded;
|
||||
|
||||
# ----------------------------------------------------
|
||||
|
110
mysql-test/r/mysql_plugin.result
Normal file
110
mysql-test/r/mysql_plugin.result
Normal file
@ -0,0 +1,110 @@
|
||||
#
|
||||
# Ensure the plugin isn't loaded.
|
||||
#
|
||||
SELECT * FROM mysql.plugin WHERE name = 'daemon_example' ORDER BY name;
|
||||
name dl
|
||||
#
|
||||
# Enable the plugin...
|
||||
#
|
||||
#
|
||||
# Ensure the plugin is now loaded.
|
||||
#
|
||||
SELECT * FROM mysql.plugin WHERE name = 'daemon_example' ORDER BY name;
|
||||
name dl
|
||||
daemon_example libdaemon_example.so
|
||||
#
|
||||
# Disable the plugin...
|
||||
#
|
||||
#
|
||||
# Ensure the plugin isn't loaded.
|
||||
#
|
||||
SELECT * FROM mysql.plugin WHERE name = 'daemon_example' ORDER BY name;
|
||||
name dl
|
||||
#
|
||||
# Attempt to load non-existant plugin
|
||||
#
|
||||
ERROR: Cannot read plugin config file NOT_THERE_AT_ALL. File does not exist.
|
||||
#
|
||||
# Attempt to use non-existant plugin.ini file
|
||||
#
|
||||
ERROR: Cannot read plugin config file daemon_example. File does not exist.
|
||||
#
|
||||
# Attempt to omit the plugin
|
||||
#
|
||||
ERROR: No plugin specified.
|
||||
#
|
||||
# Attempt to omit DISABLE|ENABLE
|
||||
#
|
||||
ERROR: missing operation. Please specify either '<plugin> ENABLE' or '<plugin> DISABLE'.
|
||||
#
|
||||
# Attempt to use bad paths - datadir
|
||||
#
|
||||
ERROR: Cannot access datadir at '/data_not_there/'.
|
||||
#
|
||||
# Attempt to use bad paths - basedir
|
||||
#
|
||||
ERROR: Cannot access basedir at '/basedir_not_there/'.
|
||||
#
|
||||
# Attempt to use bad paths - plugin_dir
|
||||
#
|
||||
ERROR: Cannot read plugin config file daemon_example. File does not exist.
|
||||
#
|
||||
# Attempt to use bad paths - mysqld
|
||||
#
|
||||
ERROR: Cannot access mysqld path '/mysqld_not_there/'.
|
||||
#
|
||||
# Attempt to use bad paths - my_print_defaults
|
||||
#
|
||||
ERROR: Cannot access my-print-defaults path '/my_print_defaults_not_there/'.
|
||||
#
|
||||
# Missing library
|
||||
#
|
||||
ERROR: The plugin library is missing or in a different location.
|
||||
#
|
||||
# Bad format for config file
|
||||
#
|
||||
ERROR: Cannot read plugin config file daemon_example. Bad format in plugin configuration file.
|
||||
#
|
||||
# Missing base_dir option
|
||||
#
|
||||
ERROR: Missing --basedir option.
|
||||
#
|
||||
# Missing data_dir option
|
||||
#
|
||||
ERROR: Missing --datadir option.
|
||||
#
|
||||
# Missing plugin_dir option
|
||||
#
|
||||
ERROR: Missing --plugin_dir option.
|
||||
#
|
||||
# Show the help.
|
||||
#
|
||||
mysql_plugin Ver V.V.VV Distrib XX.XX.XX
|
||||
Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
Enable or disable plugins.
|
||||
|
||||
Usage: mysql_plugin [options] <plugin> ENABLE|DISABLE
|
||||
|
||||
Options:
|
||||
-?, --help Display this help and exit.
|
||||
-b, --basedir=name The basedir for the server.
|
||||
-d, --datadir=name The datadir for the server.
|
||||
-p, --plugin-dir=name
|
||||
The plugin dir for the server.
|
||||
-i, --plugin-ini=name
|
||||
Read plugin information from configuration file specified
|
||||
instead of from <plugin-dir>/<plugin_name>.ini.
|
||||
-n, --no-defaults Do not read values from configuration file.
|
||||
-P, --print-defaults
|
||||
Show default values from configuration file.
|
||||
-m, --mysqld=name Path to mysqld executable. Example: /sbin/temp1/mysql/bin
|
||||
-f, --my-print-defaults=name
|
||||
Path to my_print_defaults executable. Example:
|
||||
/source/temp11/extra
|
||||
-v, --verbose More verbose output; you can use this multiple times to
|
||||
get even more verbose output.
|
||||
-V, --version Output version information and exit.
|
||||
|
||||
|
||||
mysql_plugin Ver V.V.VV Distrib XX.XX.XX
|
@ -11,13 +11,7 @@ There should be *no* long test name listed below:
|
||||
select variable_name as `There should be *no* variables listed below:` from t2
|
||||
left join t1 on variable_name=test_name where test_name is null;
|
||||
There should be *no* variables listed below:
|
||||
INNODB_ROLLBACK_SEGMENTS
|
||||
INNODB_STATS_METHOD
|
||||
INNODB_FILE_FORMAT_MAX
|
||||
INNODB_LARGE_PREFIX
|
||||
INNODB_ROLLBACK_SEGMENTS
|
||||
INNODB_STATS_METHOD
|
||||
INNODB_FILE_FORMAT_MAX
|
||||
INNODB_LARGE_PREFIX
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
|
@ -1,59 +1,80 @@
|
||||
SET @start_global_value = @@global.innodb_file_format_max;
|
||||
SET @start_global_value = @@global.innodb_file_format_check;
|
||||
SELECT @start_global_value;
|
||||
@start_global_value
|
||||
Antelope
|
||||
Valid values are 'Antelope' and 'Barracuda'
|
||||
select @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
|
||||
@@global.innodb_file_format_max in ('Antelope', 'Barracuda')
|
||||
1
|
||||
select @@global.innodb_file_format_max;
|
||||
@@global.innodb_file_format_max
|
||||
Antelope
|
||||
select @@session.innodb_file_format_max;
|
||||
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable
|
||||
show global variables like 'innodb_file_format_max';
|
||||
Valid values are 'ON' and 'OFF'
|
||||
SELECT @@global.innodb_file_format_check in (0, 1);
|
||||
@@global.innodb_file_format_check in (0, 1)
|
||||
1
|
||||
SELECT @@global.innodb_file_format_check;
|
||||
@@global.innodb_file_format_check
|
||||
1
|
||||
SELECT @@session.innodb_file_format_check;
|
||||
ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
|
||||
SHOW global variables LIKE 'innodb_file_format_check';
|
||||
Variable_name Value
|
||||
innodb_file_format_max Antelope
|
||||
show session variables like 'innodb_file_format_max';
|
||||
innodb_file_format_check ON
|
||||
SHOW session variables LIKE 'innodb_file_format_check';
|
||||
Variable_name Value
|
||||
innodb_file_format_max Antelope
|
||||
select * from information_schema.global_variables where variable_name='innodb_file_format_max';
|
||||
innodb_file_format_check ON
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_file_format_check';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Antelope
|
||||
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||
INNODB_FILE_FORMAT_CHECK ON
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_file_format_check';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Antelope
|
||||
set global innodb_file_format_max='Antelope';
|
||||
select @@global.innodb_file_format_max;
|
||||
@@global.innodb_file_format_max
|
||||
Antelope
|
||||
select * from information_schema.global_variables where variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Antelope
|
||||
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Antelope
|
||||
set @@global.innodb_file_format_max='Barracuda';
|
||||
select @@global.innodb_file_format_max;
|
||||
@@global.innodb_file_format_max
|
||||
Barracuda
|
||||
select * from information_schema.global_variables where variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Barracuda
|
||||
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Barracuda
|
||||
set session innodb_file_format_max='Salmon';
|
||||
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
|
||||
set @@session.innodb_file_format_max='Salmon';
|
||||
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
|
||||
set global innodb_file_format_max=1.1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
|
||||
set global innodb_file_format_max=1e1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
|
||||
set global innodb_file_format_max='Salmon';
|
||||
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Salmon'
|
||||
SET @@global.innodb_file_format_max = @start_global_value;
|
||||
SELECT @@global.innodb_file_format_max;
|
||||
@@global.innodb_file_format_max
|
||||
Antelope
|
||||
INNODB_FILE_FORMAT_CHECK ON
|
||||
SET @@global.innodb_file_format_check='Off';
|
||||
ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
|
||||
Expected error 'Read only variable'
|
||||
SET @@global.innodb_file_format_check=1;
|
||||
ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
|
||||
Expected error 'Read only variable'
|
||||
SET @@global.innodb_file_format_check=0;
|
||||
ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
|
||||
Expected error 'Read only variable'
|
||||
SET @@global.innodb_file_format_check='On';
|
||||
ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
|
||||
Expected error 'Read only variable'
|
||||
SET session innodb_large_prefix='OFF';
|
||||
ERROR HY000: Variable 'innodb_large_prefix' is a GLOBAL variable and should be set with SET GLOBAL
|
||||
SET @@session.innodb_stats_on_metadata='ON';
|
||||
ERROR HY000: Variable 'innodb_stats_on_metadata' is a GLOBAL variable and should be set with SET GLOBAL
|
||||
SELECT IF(@@GLOBAL.innodb_file_format_check, "ON", "OFF") = VARIABLE_VALUE
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||
WHERE VARIABLE_NAME='innodb_file_format_check';
|
||||
IF(@@GLOBAL.innodb_file_format_check, "ON", "OFF") = VARIABLE_VALUE
|
||||
1
|
||||
1 Expected
|
||||
SELECT COUNT(@@GLOBAL.innodb_file_format_check);
|
||||
COUNT(@@GLOBAL.innodb_file_format_check)
|
||||
1
|
||||
1 Expected
|
||||
SELECT COUNT(VARIABLE_VALUE)
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||
WHERE VARIABLE_NAME='innodb_file_format_check';
|
||||
COUNT(VARIABLE_VALUE)
|
||||
1
|
||||
1 Expected
|
||||
SELECT @@innodb_file_format_check = @@GLOBAL.innodb_file_format_check;
|
||||
@@innodb_file_format_check = @@GLOBAL.innodb_file_format_check
|
||||
1
|
||||
1 Expected
|
||||
SELECT COUNT(@@innodb_file_format_check);
|
||||
COUNT(@@innodb_file_format_check)
|
||||
1
|
||||
1 Expected
|
||||
SELECT COUNT(@@local.innodb_file_format_check);
|
||||
ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
|
||||
Expected error 'Variable is a GLOBAL variable'
|
||||
SELECT COUNT(@@SESSION.innodb_file_format_check);
|
||||
ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
|
||||
Expected error 'Variable is a GLOBAL variable'
|
||||
SELECT COUNT(@@GLOBAL.innodb_file_format_check);
|
||||
COUNT(@@GLOBAL.innodb_file_format_check)
|
||||
1
|
||||
1 Expected
|
||||
SELECT innodb_file_format_check = @@SESSION.innodb_file_format_check;
|
||||
ERROR 42S22: Unknown column 'innodb_file_format_check' in 'field list'
|
||||
Expected error 'Readonly variable'
|
||||
|
@ -0,0 +1,65 @@
|
||||
SET @start_global_value = @@global.innodb_file_format_max;
|
||||
SELECT @start_global_value;
|
||||
@start_global_value
|
||||
Antelope
|
||||
Valid values are 'Antelope' and 'Barracuda'
|
||||
SELECT @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
|
||||
@@global.innodb_file_format_max in ('Antelope', 'Barracuda')
|
||||
1
|
||||
SELECT @@global.innodb_file_format_max;
|
||||
@@global.innodb_file_format_max
|
||||
Antelope
|
||||
SELECT @@session.innodb_file_format_max;
|
||||
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable
|
||||
SHOW global variables LIKE 'innodb_file_format_max';
|
||||
Variable_name Value
|
||||
innodb_file_format_max Antelope
|
||||
SHOW session variables LIKE 'innodb_file_format_max';
|
||||
Variable_name Value
|
||||
innodb_file_format_max Antelope
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Antelope
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Antelope
|
||||
SET global innodb_file_format_max='Antelope';
|
||||
SELECT @@global.innodb_file_format_max;
|
||||
@@global.innodb_file_format_max
|
||||
Antelope
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Antelope
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Antelope
|
||||
SET @@global.innodb_file_format_max='Barracuda';
|
||||
SELECT @@global.innodb_file_format_max;
|
||||
@@global.innodb_file_format_max
|
||||
Barracuda
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Barracuda
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_FILE_FORMAT_MAX Barracuda
|
||||
SET session innodb_file_format_max='Salmon';
|
||||
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
|
||||
SET @@session.innodb_file_format_max='Salmon';
|
||||
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
|
||||
SET global innodb_file_format_max=1.1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
|
||||
SET global innodb_file_format_max=1e1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
|
||||
SET global innodb_file_format_max='Salmon';
|
||||
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Salmon'
|
||||
SET @@global.innodb_file_format_max = @start_global_value;
|
||||
SELECT @@global.innodb_file_format_max;
|
||||
@@global.innodb_file_format_max
|
||||
Antelope
|
@ -0,0 +1,64 @@
|
||||
SET @start_global_value = @@global.innodb_rollback_segments;
|
||||
SELECT @start_global_value;
|
||||
@start_global_value
|
||||
128
|
||||
Valid values are zero or above
|
||||
SELECT @@global.innodb_rollback_segments >=0;
|
||||
@@global.innodb_rollback_segments >=0
|
||||
1
|
||||
SELECT @@global.innodb_rollback_segments <=128;
|
||||
@@global.innodb_rollback_segments <=128
|
||||
1
|
||||
SELECT @@global.innodb_rollback_segments;
|
||||
@@global.innodb_rollback_segments
|
||||
128
|
||||
SELECT @@session.innodb_rollback_segments;
|
||||
ERROR HY000: Variable 'innodb_rollback_segments' is a GLOBAL variable
|
||||
SHOW global variables LIKE 'innodb_rollback_segments';
|
||||
Variable_name Value
|
||||
innodb_rollback_segments 128
|
||||
SHOW session variables LIKE 'innodb_rollback_segments';
|
||||
Variable_name Value
|
||||
innodb_rollback_segments 128
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_ROLLBACK_SEGMENTS 128
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_ROLLBACK_SEGMENTS 128
|
||||
SET global innodb_rollback_segments=100;
|
||||
SELECT @@global.innodb_rollback_segments;
|
||||
@@global.innodb_rollback_segments
|
||||
100
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_ROLLBACK_SEGMENTS 100
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_ROLLBACK_SEGMENTS 100
|
||||
SET session innodb_rollback_segments=1;
|
||||
ERROR HY000: Variable 'innodb_rollback_segments' is a GLOBAL variable and should be set with SET GLOBAL
|
||||
SET global innodb_rollback_segments=1.1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_rollback_segments'
|
||||
SET global innodb_rollback_segments=1e1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_rollback_segments'
|
||||
SET global innodb_rollback_segments="foo";
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_rollback_segments'
|
||||
SET global innodb_rollback_segments=-7;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect innodb_rollback_segments value: '-7'
|
||||
SELECT @@global.innodb_rollback_segments;
|
||||
@@global.innodb_rollback_segments
|
||||
1
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_ROLLBACK_SEGMENTS 1
|
||||
SET @@global.innodb_rollback_segments = @start_global_value;
|
||||
SELECT @@global.innodb_rollback_segments;
|
||||
@@global.innodb_rollback_segments
|
||||
128
|
83
mysql-test/suite/sys_vars/r/innodb_stats_method_basic.result
Normal file
83
mysql-test/suite/sys_vars/r/innodb_stats_method_basic.result
Normal file
@ -0,0 +1,83 @@
|
||||
SET @start_global_value = @@global.innodb_stats_method;
|
||||
SELECT @start_global_value;
|
||||
@start_global_value
|
||||
nulls_equal
|
||||
Valid values are 'nulls_equal', 'nulls_unequal', 'nulls_ignored'
|
||||
SELECT @@global.innodb_stats_method in ('nulls_equal', 'nulls_unequal',
|
||||
'nulls_ignored');
|
||||
@@global.innodb_stats_method in ('nulls_equal', 'nulls_unequal',
|
||||
'nulls_ignored')
|
||||
1
|
||||
SELECT @@global.innodb_stats_method;
|
||||
@@global.innodb_stats_method
|
||||
nulls_equal
|
||||
SELECT @@session.innodb_stats_method;
|
||||
ERROR HY000: Variable 'innodb_stats_method' is a GLOBAL variable
|
||||
SHOW global variables LIKE 'innodb_stats_method';
|
||||
Variable_name Value
|
||||
innodb_stats_method nulls_equal
|
||||
SHOW session variables LIKE 'innodb_stats_method';
|
||||
Variable_name Value
|
||||
innodb_stats_method nulls_equal
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_STATS_METHOD nulls_equal
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_STATS_METHOD nulls_equal
|
||||
SET global innodb_stats_method='nulls_equal';
|
||||
SELECT @@global.innodb_stats_method;
|
||||
@@global.innodb_stats_method
|
||||
nulls_equal
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_STATS_METHOD nulls_equal
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_STATS_METHOD nulls_equal
|
||||
SET @@global.innodb_stats_method='nulls_unequal';
|
||||
SELECT @@global.innodb_stats_method;
|
||||
@@global.innodb_stats_method
|
||||
nulls_unequal
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_STATS_METHOD nulls_unequal
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_STATS_METHOD nulls_unequal
|
||||
SET global innodb_stats_method=2;
|
||||
SELECT @@global.innodb_stats_method;
|
||||
@@global.innodb_stats_method
|
||||
nulls_ignored
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_STATS_METHOD nulls_ignored
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_STATS_METHOD nulls_ignored
|
||||
SET session innodb_stats_method='nulls_equal';
|
||||
ERROR HY000: Variable 'innodb_stats_method' is a GLOBAL variable and should be set with SET GLOBAL
|
||||
SET @@session.innodb_stats_method='nulls_ignored';
|
||||
ERROR HY000: Variable 'innodb_stats_method' is a GLOBAL variable and should be set with SET GLOBAL
|
||||
SET global innodb_stats_method=1.1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_stats_method'
|
||||
SET global innodb_stats_method=4;
|
||||
ERROR 42000: Variable 'innodb_stats_method' can't be set to the value of '4'
|
||||
SET global innodb_stats_method=-2;
|
||||
ERROR 42000: Variable 'innodb_stats_method' can't be set to the value of '-2'
|
||||
SET global innodb_stats_method=1e1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_stats_method'
|
||||
SET global innodb_stats_method='some';
|
||||
ERROR 42000: Variable 'innodb_stats_method' can't be set to the value of 'some'
|
||||
SET @@global.innodb_stats_method = @start_global_value;
|
||||
SELECT @@global.innodb_stats_method;
|
||||
@@global.innodb_stats_method
|
||||
nulls_equal
|
@ -1,55 +1,95 @@
|
||||
|
||||
|
||||
# 2010-01-25 - Added
|
||||
#
|
||||
# 2011-08-02 - Added
|
||||
#
|
||||
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
SET @start_global_value = @@global.innodb_file_format_max;
|
||||
SET @start_global_value = @@global.innodb_file_format_check;
|
||||
SELECT @start_global_value;
|
||||
|
||||
#
|
||||
# exists as global only
|
||||
#
|
||||
--echo Valid values are 'Antelope' and 'Barracuda'
|
||||
select @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
|
||||
select @@global.innodb_file_format_max;
|
||||
--echo Valid values are 'ON' and 'OFF'
|
||||
SELECT @@global.innodb_file_format_check in (0, 1);
|
||||
SELECT @@global.innodb_file_format_check;
|
||||
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
select @@session.innodb_file_format_max;
|
||||
show global variables like 'innodb_file_format_max';
|
||||
show session variables like 'innodb_file_format_max';
|
||||
select * from information_schema.global_variables where variable_name='innodb_file_format_max';
|
||||
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||
SELECT @@session.innodb_file_format_check;
|
||||
SHOW global variables LIKE 'innodb_file_format_check';
|
||||
SHOW session variables LIKE 'innodb_file_format_check';
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_file_format_check';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_file_format_check';
|
||||
|
||||
#
|
||||
# show that it's writable
|
||||
# show that it's read only
|
||||
#
|
||||
set global innodb_file_format_max='Antelope';
|
||||
select @@global.innodb_file_format_max;
|
||||
select * from information_schema.global_variables where variable_name='innodb_file_format_max';
|
||||
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||
set @@global.innodb_file_format_max='Barracuda';
|
||||
select @@global.innodb_file_format_max;
|
||||
select * from information_schema.global_variables where variable_name='innodb_file_format_max';
|
||||
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SET @@global.innodb_file_format_check='Off';
|
||||
--echo Expected error 'Read only variable'
|
||||
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SET @@global.innodb_file_format_check=1;
|
||||
--echo Expected error 'Read only variable'
|
||||
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SET @@global.innodb_file_format_check=0;
|
||||
--echo Expected error 'Read only variable'
|
||||
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SET @@global.innodb_file_format_check='On';
|
||||
--echo Expected error 'Read only variable'
|
||||
|
||||
--error ER_GLOBAL_VARIABLE
|
||||
set session innodb_file_format_max='Salmon';
|
||||
SET session innodb_large_prefix='OFF';
|
||||
--error ER_GLOBAL_VARIABLE
|
||||
set @@session.innodb_file_format_max='Salmon';
|
||||
SET @@session.innodb_stats_on_metadata='ON';
|
||||
|
||||
#
|
||||
# incorrect types
|
||||
#
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
set global innodb_file_format_max=1.1;
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
set global innodb_file_format_max=1e1;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set global innodb_file_format_max='Salmon';
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
# Check if the value in GLOBAL Table matches value in variable
|
||||
#
|
||||
|
||||
SET @@global.innodb_file_format_max = @start_global_value;
|
||||
SELECT @@global.innodb_file_format_max;
|
||||
SELECT IF(@@GLOBAL.innodb_file_format_check, "ON", "OFF") = VARIABLE_VALUE
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||
WHERE VARIABLE_NAME='innodb_file_format_check';
|
||||
--echo 1 Expected
|
||||
|
||||
SELECT COUNT(@@GLOBAL.innodb_file_format_check);
|
||||
--echo 1 Expected
|
||||
|
||||
SELECT COUNT(VARIABLE_VALUE)
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||
WHERE VARIABLE_NAME='innodb_file_format_check';
|
||||
--echo 1 Expected
|
||||
|
||||
#
|
||||
# Check if accessing variable with and without GLOBAL point to same variable
|
||||
#
|
||||
SELECT @@innodb_file_format_check = @@GLOBAL.innodb_file_format_check;
|
||||
--echo 1 Expected
|
||||
|
||||
#
|
||||
# Check if innodb_doublewrite can be accessed with and without @@ sign
|
||||
#
|
||||
|
||||
SELECT COUNT(@@innodb_file_format_check);
|
||||
--echo 1 Expected
|
||||
|
||||
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SELECT COUNT(@@local.innodb_file_format_check);
|
||||
--echo Expected error 'Variable is a GLOBAL variable'
|
||||
|
||||
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SELECT COUNT(@@SESSION.innodb_file_format_check);
|
||||
--echo Expected error 'Variable is a GLOBAL variable'
|
||||
|
||||
SELECT COUNT(@@GLOBAL.innodb_file_format_check);
|
||||
--echo 1 Expected
|
||||
|
||||
--Error ER_BAD_FIELD_ERROR
|
||||
SELECT innodb_file_format_check = @@SESSION.innodb_file_format_check;
|
||||
--echo Expected error 'Readonly variable'
|
||||
|
@ -0,0 +1,60 @@
|
||||
#
|
||||
# 2011-08-02 - Added
|
||||
#
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
SET @start_global_value = @@global.innodb_file_format_max;
|
||||
SELECT @start_global_value;
|
||||
|
||||
#
|
||||
# exists as global only
|
||||
#
|
||||
--echo Valid values are 'Antelope' and 'Barracuda'
|
||||
SELECT @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
|
||||
SELECT @@global.innodb_file_format_max;
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SELECT @@session.innodb_file_format_max;
|
||||
SHOW global variables LIKE 'innodb_file_format_max';
|
||||
SHOW session variables LIKE 'innodb_file_format_max';
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
|
||||
#
|
||||
# show that it's writable
|
||||
#
|
||||
SET global innodb_file_format_max='Antelope';
|
||||
SELECT @@global.innodb_file_format_max;
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
SET @@global.innodb_file_format_max='Barracuda';
|
||||
SELECT @@global.innodb_file_format_max;
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_file_format_max';
|
||||
--error ER_GLOBAL_VARIABLE
|
||||
SET session innodb_file_format_max='Salmon';
|
||||
--error ER_GLOBAL_VARIABLE
|
||||
SET @@session.innodb_file_format_max='Salmon';
|
||||
|
||||
#
|
||||
# incorrect types
|
||||
#
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
SET global innodb_file_format_max=1.1;
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
SET global innodb_file_format_max=1e1;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET global innodb_file_format_max='Salmon';
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
#
|
||||
|
||||
SET @@global.innodb_file_format_max = @start_global_value;
|
||||
SELECT @@global.innodb_file_format_max;
|
@ -0,0 +1,58 @@
|
||||
#
|
||||
# 2011-08-01 Added
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
|
||||
SET @start_global_value = @@global.innodb_rollback_segments;
|
||||
SELECT @start_global_value;
|
||||
|
||||
#
|
||||
# exists as global only
|
||||
#
|
||||
--echo Valid values are zero or above
|
||||
SELECT @@global.innodb_rollback_segments >=0;
|
||||
SELECT @@global.innodb_rollback_segments <=128;
|
||||
SELECT @@global.innodb_rollback_segments;
|
||||
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SELECT @@session.innodb_rollback_segments;
|
||||
SHOW global variables LIKE 'innodb_rollback_segments';
|
||||
SHOW session variables LIKE 'innodb_rollback_segments';
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
|
||||
#
|
||||
# show that it's writable
|
||||
#
|
||||
SET global innodb_rollback_segments=100;
|
||||
SELECT @@global.innodb_rollback_segments;
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
--error ER_GLOBAL_VARIABLE
|
||||
SET session innodb_rollback_segments=1;
|
||||
|
||||
#
|
||||
# incorrect types
|
||||
#
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
SET global innodb_rollback_segments=1.1;
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
SET global innodb_rollback_segments=1e1;
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
SET global innodb_rollback_segments="foo";
|
||||
SET global innodb_rollback_segments=-7;
|
||||
SELECT @@global.innodb_rollback_segments;
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_rollback_segments';
|
||||
|
||||
#
|
||||
# cleanup
|
||||
#
|
||||
|
||||
SET @@global.innodb_rollback_segments = @start_global_value;
|
||||
SELECT @@global.innodb_rollback_segments;
|
72
mysql-test/suite/sys_vars/t/innodb_stats_method_basic.test
Normal file
72
mysql-test/suite/sys_vars/t/innodb_stats_method_basic.test
Normal file
@ -0,0 +1,72 @@
|
||||
#
|
||||
# 2011-08-05 - Added
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
|
||||
SET @start_global_value = @@global.innodb_stats_method;
|
||||
SELECT @start_global_value;
|
||||
|
||||
#
|
||||
# exists as global only
|
||||
#
|
||||
--echo Valid values are 'nulls_equal', 'nulls_unequal', 'nulls_ignored'
|
||||
SELECT @@global.innodb_stats_method in ('nulls_equal', 'nulls_unequal',
|
||||
'nulls_ignored');
|
||||
SELECT @@global.innodb_stats_method;
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SELECT @@session.innodb_stats_method;
|
||||
SHOW global variables LIKE 'innodb_stats_method';
|
||||
SHOW session variables LIKE 'innodb_stats_method';
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
|
||||
#
|
||||
# show that it's writable
|
||||
#
|
||||
SET global innodb_stats_method='nulls_equal';
|
||||
SELECT @@global.innodb_stats_method;
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
SET @@global.innodb_stats_method='nulls_unequal';
|
||||
SELECT @@global.innodb_stats_method;
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
SET global innodb_stats_method=2;
|
||||
SELECT @@global.innodb_stats_method;
|
||||
SELECT * FROM information_schema.global_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name='innodb_stats_method';
|
||||
|
||||
--error ER_GLOBAL_VARIABLE
|
||||
SET session innodb_stats_method='nulls_equal';
|
||||
--error ER_GLOBAL_VARIABLE
|
||||
SET @@session.innodb_stats_method='nulls_ignored';
|
||||
|
||||
#
|
||||
# incorrect types
|
||||
#
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
SET global innodb_stats_method=1.1;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET global innodb_stats_method=4;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET global innodb_stats_method=-2;
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
SET global innodb_stats_method=1e1;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET global innodb_stats_method='some';
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
#
|
||||
|
||||
SET @@global.innodb_stats_method = @start_global_value;
|
||||
SELECT @@global.innodb_stats_method;
|
1
mysql-test/t/mysql_plugin-master.opt
Normal file
1
mysql-test/t/mysql_plugin-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--plugin-dir=$DAEMONEXAMPLE_DIR
|
318
mysql-test/t/mysql_plugin.test
Normal file
318
mysql-test/t/mysql_plugin.test
Normal file
@ -0,0 +1,318 @@
|
||||
#
|
||||
# Test mysql_plugin tool
|
||||
#
|
||||
# This test contains test cases for testing the mysql_plugin client with
|
||||
# the daemon_example plugin. Test cases include tests for:
|
||||
#
|
||||
# - successful enable/disable
|
||||
# - incorrect paths
|
||||
# - missing paths/options
|
||||
#
|
||||
# Implementation Notes
|
||||
#
|
||||
# The mysql_plugin tool now accepts --mysqld the path to mysqld server. The
|
||||
# mysqld path is extracted from MYSQLD_BOOTSTRAP_CMD line. We also extract
|
||||
# the path of MYSQLD_BASEDIR (where mysql exists) and use it for the errmsg
|
||||
# file. The directories differ between Windows and Unix but the Perl script
|
||||
# included below will pick as per platform.
|
||||
#
|
||||
# The test is also designed to issue the --skip directive if the location of
|
||||
# the mysqld, my_print_defaults, or daemon_example.ini files cannot be found.
|
||||
#
|
||||
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# Add the datadir, basedir, plugin_dir to the bootstrap command
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
let $MYSQL_BASEDIR= `select @@basedir`;
|
||||
let $MYSQL_ERRMSG_BASEDIR=`select @@lc_messages_dir`;
|
||||
let $PLUGIN_DIR=`select @@plugin_dir`;
|
||||
|
||||
--disable_abort_on_error
|
||||
|
||||
# Perl script to extract the location of the basedir from environment
|
||||
# variables. This is needed to ensure the test will run on the PB machines
|
||||
# designed to test release as well as debug builds. It also checks for the
|
||||
# location of the my_print_defaults and daemon_example.ini files.
|
||||
|
||||
perl;
|
||||
use File::Basename;
|
||||
my ($mysqld)= split " ", $ENV{MYSQLD_BOOTSTRAP_CMD};
|
||||
my $mysqld_basedir=dirname($mysqld);
|
||||
my $my_print_defaults= $ENV{MYSQL_MY_PRINT_DEFAULTS};
|
||||
my $my_print_defaults_basedir=dirname($my_print_defaults);
|
||||
my $daemonexample_ini= "$ENV{DAEMONEXAMPLE_DIR}/daemon_example.ini";
|
||||
my $plugindir_ini= "$ENV{PLUGIN_DIR}/daemon_example.ini";
|
||||
my $notfound= "";
|
||||
open(FILE, ">", "$ENV{MYSQL_TMP_DIR}/mysqld.inc") or die;
|
||||
print FILE "let \$MYSQLD= $mysqld;\n";
|
||||
print FILE "let \$MYSQLD_BASEDIR= $mysqld_basedir;\n";
|
||||
print FILE "let \$MYSQL_MY_PRINT_DEFAULTS_BASEDIR= $my_print_defaults_basedir;\n";
|
||||
if ((!-e $daemonexample_ini) || (!-r $daemonexample_ini))
|
||||
{
|
||||
print FILE "let \$DAEMONEXAMPLE_DIR= $not_found;\n";
|
||||
}
|
||||
if ((!-e $plugindir_ini) || (!-r $plugindir_ini))
|
||||
{
|
||||
print FILE "let \$PLUGIN_DIR= $not_found;\n";
|
||||
}
|
||||
close FILE;
|
||||
EOF
|
||||
|
||||
|
||||
source $MYSQL_TMP_DIR/mysqld.inc;
|
||||
remove_file $MYSQL_TMP_DIR/mysqld.inc;
|
||||
|
||||
# The mysql_plugin tool expects a directory structure like in the installed
|
||||
# mysql version, so errmsg.sys will be copied to "basedir/share", we create
|
||||
# and remove this structure.
|
||||
|
||||
--mkdir $MYSQLD_BASEDIR/share
|
||||
--mkdir $MYSQLD_BASEDIR/share/mysql
|
||||
--copy_file $MYSQL_ERRMSG_BASEDIR/english/errmsg.sys $MYSQLD_BASEDIR/share/errmsg.sys
|
||||
--copy_file $MYSQL_ERRMSG_BASEDIR/english/errmsg.sys $MYSQLD_BASEDIR/share/mysql/errmsg.sys
|
||||
|
||||
# The mysql_plugin tool now accepts --my-print-defaults which points to the
|
||||
# executable my_print_defaults.exe we can get this path from the variable
|
||||
# $MYSQL_MY_PRINT_DEFAULTS.
|
||||
|
||||
# Check for my_print_defaults location. Skip if not found.
|
||||
if ($MYSQL_MY_PRINT_DEFAULTS_BASEDIR == '')
|
||||
{
|
||||
--skip Test requires known location of my_print_defaults executable.
|
||||
}
|
||||
|
||||
# Check for mysqld location. Skip if not found.
|
||||
if ($MYSQLD == '')
|
||||
{
|
||||
--skip Test requires known location of mysqld executable.
|
||||
}
|
||||
|
||||
# Check for daemon_example.ini location. Skip if not found in either
|
||||
# the plugin_dir path or the daemon_example_dir path.
|
||||
if ($PLUGIN_DIR == '')
|
||||
{
|
||||
if ($DAEMONEXAMPLE_DIR == '')
|
||||
{
|
||||
--skip Test requires known location of daemon_example.ini file.
|
||||
}
|
||||
let $PLUGIN_DIR = $DAEMONEXAMPLE_DIR;
|
||||
}
|
||||
|
||||
# Build client command for reuse.
|
||||
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN --datadir=$MYSQLD_DATADIR --basedir=$MYSQLD_BASEDIR --plugin-dir=$PLUGIN_DIR --mysqld=$MYSQLD_BASEDIR --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
|
||||
--echo #
|
||||
--echo # Ensure the plugin isn't loaded.
|
||||
--echo #
|
||||
SELECT * FROM mysql.plugin WHERE name = 'daemon_example' ORDER BY name;
|
||||
|
||||
--echo #
|
||||
--echo # Enable the plugin...
|
||||
--echo #
|
||||
let $expect_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
|
||||
# MTR will remove this file later, but this might be too late.
|
||||
--error 0,1
|
||||
--remove_file $expect_file
|
||||
--write_file $expect_file
|
||||
wait
|
||||
EOF
|
||||
--shutdown_server 10
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
#
|
||||
# Enable the plugin
|
||||
#
|
||||
--exec $MYSQL_PLUGIN_CMD ENABLE daemon_example
|
||||
|
||||
#
|
||||
# Ensure enabling an enabled plugin doesn't fail
|
||||
--exec $MYSQL_PLUGIN_CMD ENABLE daemon_example
|
||||
|
||||
#
|
||||
# Restart the server
|
||||
#
|
||||
--append_file $expect_file
|
||||
restart
|
||||
EOF
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
--echo #
|
||||
--echo # Ensure the plugin is now loaded.
|
||||
--echo #
|
||||
--replace_regex /\.dll/.so/
|
||||
SELECT * FROM mysql.plugin WHERE name = 'daemon_example' ORDER BY name;
|
||||
|
||||
--echo #
|
||||
--echo # Disable the plugin...
|
||||
--echo #
|
||||
# MTR will remove this file later, but this might be too late.
|
||||
--error 0,1
|
||||
--remove_file $expect_file
|
||||
--write_file $expect_file
|
||||
wait
|
||||
EOF
|
||||
--shutdown_server 10
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
#
|
||||
# Disable the plugin
|
||||
#
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example
|
||||
|
||||
#
|
||||
# Restart the server
|
||||
#
|
||||
--append_file $expect_file
|
||||
restart
|
||||
EOF
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
--echo #
|
||||
--echo # Ensure the plugin isn't loaded.
|
||||
--echo #
|
||||
SELECT * FROM mysql.plugin WHERE name = 'daemon_example' ORDER BY name;
|
||||
|
||||
#
|
||||
# Stop the server for error conditions
|
||||
#
|
||||
let $expect_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
|
||||
# MTR will remove this file later, but this might be too late.
|
||||
--error 0,1
|
||||
--remove_file $expect_file
|
||||
--write_file $expect_file
|
||||
wait
|
||||
EOF
|
||||
--shutdown_server 10
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--echo #
|
||||
--echo # Attempt to load non-existant plugin
|
||||
--echo #
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE NOT_THERE_AT_ALL 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Attempt to use non-existant plugin.ini file
|
||||
--echo #
|
||||
--error 1,2,7,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example --plugin-ini=/NOT/THERE/pi.ini 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Attempt to omit the plugin
|
||||
--echo #
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Attempt to omit DISABLE|ENABLE
|
||||
--echo #
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Attempt to use bad paths - datadir
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --datadir=/data_not_there/ --basedir=$MYSQL_BASEDIR --plugin-dir=$PLUGIN_DIR --mysqld=$MYSQLD_BASEDIR --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Attempt to use bad paths - basedir
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=/basedir_not_there/ --plugin-dir=$PLUGIN_DIR --mysqld=$MYSQLD_BASEDIR --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Attempt to use bad paths - plugin_dir
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=$MYSQL_BASEDIR --plugin-dir=/plugin_not_there/ --mysqld=$MYSQLD_BASEDIR --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Attempt to use bad paths - mysqld
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=$MYSQL_BASEDIR --plugin-dir=$PLUGIN_DIR --mysqld=/mysqld_not_there/ --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Attempt to use bad paths - my_print_defaults
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=$MYSQL_BASEDIR --plugin-dir=$PLUGIN_DIR --mysqld=$MYSQLD_BASEDIR --my-print-defaults=/my_print_defaults_not_there/;
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Missing library
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=$MYSQL_BASEDIR --plugin-dir=$PLUGIN_DIR --plugin-ini=$MYSQL_TEST_DIR/include/daemon_example_bad_soname.ini --mysqld=$MYSQLD_BASEDIR --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Bad format for config file
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=$MYSQL_BASEDIR --plugin-dir=$PLUGIN_DIR --plugin-ini=$MYSQL_TEST_DIR/include/daemon_example_bad_format.ini --mysqld=$MYSQLD_BASEDIR --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
--error 1,2,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Missing base_dir option
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --plugin-dir=$PLUGIN_DIR --mysqld=$MYSQLD_BASEDIR --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
--error 1,2,139,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Missing data_dir option
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --basedir=$MYSQL_BASEDIR --plugin-dir=$PLUGIN_DIR --mysqld=$MYSQLD_BASEDIR --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
--error 1,2,139,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Missing plugin_dir option
|
||||
--echo #
|
||||
let $MYSQL_PLUGIN_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQL_DATADIR --basedir=$MYSQL_BASEDIR --mysqld=$MYSQLD_BASEDIR --my-print-defaults=$MYSQL_MY_PRINT_DEFAULTS_BASEDIR;
|
||||
--error 1,2,139,256
|
||||
--exec $MYSQL_PLUGIN_CMD DISABLE daemon_example 2>&1
|
||||
|
||||
--echo #
|
||||
--echo # Show the help.
|
||||
--echo #
|
||||
replace_result $MYSQL_PLUGIN mysql_plugin;
|
||||
--replace_regex /Ver [0-9.]+ Distrib [0-9.]+/Ver V.V.VV Distrib XX.XX.XX/
|
||||
--exec $MYSQL_PLUGIN --help
|
||||
|
||||
replace_result $MYSQL_PLUGIN mysql_plugin;
|
||||
--replace_regex /Ver [0-9.]+ Distrib [0-9.]+/Ver V.V.VV Distrib XX.XX.XX/
|
||||
--exec $MYSQL_PLUGIN --version
|
||||
|
||||
#
|
||||
# Restart the server
|
||||
#
|
||||
--append_file $expect_file
|
||||
restart
|
||||
EOF
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
# MTR will remove this file later, but this might be too late.
|
||||
--error 0,1
|
||||
--remove_file $expect_file
|
||||
|
||||
# Cleanup the share folder in the binary path.
|
||||
--remove_file $MYSQLD_BASEDIR/share/errmsg.sys
|
||||
--rmdir $MYSQLD_BASEDIR/share/mysql
|
||||
--rmdir $MYSQLD_BASEDIR/share
|
||||
|
||||
--enable_abort_on_error
|
@ -15,3 +15,5 @@
|
||||
|
||||
MYSQL_ADD_PLUGIN(daemon_example daemon_example.cc
|
||||
MODULE_ONLY MODULE_OUTPUT_NAME "libdaemon_example")
|
||||
|
||||
INSTALL(FILES daemon_example.ini DESTINATION ${INSTALL_PLUGINDIR})
|
||||
|
9
plugin/daemon_example/daemon_example.ini
Normal file
9
plugin/daemon_example/daemon_example.ini
Normal file
@ -0,0 +1,9 @@
|
||||
#
|
||||
# Plugin configuration file. Place the following on a separate line:
|
||||
#
|
||||
# library binary file name (without .so or .dll)
|
||||
# component_name
|
||||
# [component_name] - additional components in plugin
|
||||
#
|
||||
libdaemon_example
|
||||
daemon_example
|
@ -1000,6 +1000,7 @@ echo "=====" >> $STATUS_HISTORY
|
||||
%attr(755, root, root) %{_bindir}/mysql_setpermission
|
||||
%attr(755, root, root) %{_bindir}/mysql_tzinfo_to_sql
|
||||
%attr(755, root, root) %{_bindir}/mysql_upgrade
|
||||
%attr(755, root, root) %{_bindir}/mysql_plugin
|
||||
%attr(755, root, root) %{_bindir}/mysql_zap
|
||||
%attr(755, root, root) %{_bindir}/mysqlbug
|
||||
%attr(755, root, root) %{_bindir}/mysqld_multi
|
||||
@ -1015,6 +1016,7 @@ echo "=====" >> $STATUS_HISTORY
|
||||
%attr(755, root, root) %{_sbindir}/mysqld
|
||||
%attr(755, root, root) %{_sbindir}/mysqld-debug
|
||||
%attr(755, root, root) %{_sbindir}/rcmysql
|
||||
%attr(755, root, root) %{_libdir}/mysql/plugin/daemon_example.ini
|
||||
|
||||
%if %{WITH_TCMALLOC}
|
||||
%attr(755, root, root) %{_libdir}/mysql/%{malloc_lib_target}
|
||||
@ -1113,6 +1115,10 @@ echo "=====" >> $STATUS_HISTORY
|
||||
|
||||
- Source plugin library files list from cmake-generated file.
|
||||
|
||||
* Mon Jul 25 2011 Chuck Bell <chuck.bell@oracle.com>
|
||||
|
||||
- Added the mysql_plugin client - enables or disables plugins.
|
||||
|
||||
* Thu Jul 21 2011 Sunanda Menon <sunanda.menon@oracle.com>
|
||||
|
||||
- Fix bug#12561297: Added the MySQL embedded binary
|
||||
|
Loading…
x
Reference in New Issue
Block a user