Commit 7d979a4f authored by Tatjana Azundris Nuernberg's avatar Tatjana Azundris Nuernberg

auto-merge

parents 60ee66d3 e0812608
...@@ -54,6 +54,9 @@ ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs) ...@@ -54,6 +54,9 @@ ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
MYSQL_ADD_EXECUTABLE(mysqlshow mysqlshow.c) MYSQL_ADD_EXECUTABLE(mysqlshow mysqlshow.c)
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient) 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) MYSQL_ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc)
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient) TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient)
...@@ -69,7 +72,7 @@ IF(WIN32) ...@@ -69,7 +72,7 @@ IF(WIN32)
MYSQL_ADD_EXECUTABLE(echo echo.c) MYSQL_ADD_EXECUTABLE(echo echo.c)
ENDIF(WIN32) 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) PROPERTIES HAS_CXX TRUE)
ADD_DEFINITIONS(-DHAVE_DLOPEN) ADD_DEFINITIONS(-DHAVE_DLOPEN)
......
This diff is collapsed.
...@@ -603,6 +603,8 @@ typedef SOCKET_SIZE_TYPE size_socket; ...@@ -603,6 +603,8 @@ typedef SOCKET_SIZE_TYPE size_socket;
#define FN_LIBCHAR '\\' #define FN_LIBCHAR '\\'
#define FN_LIBCHAR2 '/' #define FN_LIBCHAR2 '/'
#define FN_DIRSEP "/\\" /* Valid directory separators */ #define FN_DIRSEP "/\\" /* Valid directory separators */
#define FN_EXEEXT ".exe"
#define FN_SOEXT ".dll"
#define FN_ROOTDIR "\\" #define FN_ROOTDIR "\\"
#define FN_DEVCHAR ':' #define FN_DEVCHAR ':'
#define FN_NETWORK_DRIVES /* Uses \\ to indicate network drives */ #define FN_NETWORK_DRIVES /* Uses \\ to indicate network drives */
...@@ -611,6 +613,8 @@ typedef SOCKET_SIZE_TYPE size_socket; ...@@ -611,6 +613,8 @@ typedef SOCKET_SIZE_TYPE size_socket;
#define FN_LIBCHAR '/' #define FN_LIBCHAR '/'
#define FN_LIBCHAR2 '/' #define FN_LIBCHAR2 '/'
#define FN_DIRSEP "/" /* Valid directory separators */ #define FN_DIRSEP "/" /* Valid directory separators */
#define FN_EXEEXT ""
#define FN_SOEXT ".so"
#define FN_ROOTDIR "/" #define FN_ROOTDIR "/"
#endif #endif
......
#
# 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
#
# 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 ...@@ -39,3 +39,4 @@ ha_archive storage/archive ARCHIVE_PLUGIN
ha_blackhole storage/blackhole BLACKHOLE_PLUGIN ha_blackhole storage/blackhole BLACKHOLE_PLUGIN
ha_federated storage/federated FEDERATED_PLUGIN ha_federated storage/federated FEDERATED_PLUGIN
mypluglib plugin/fulltext SIMPLE_PARSER mypluglib plugin/fulltext SIMPLE_PARSER
libdaemon_example plugin/daemon_example DAEMONEXAMPLE
...@@ -168,6 +168,7 @@ my $opt_suites; ...@@ -168,6 +168,7 @@ my $opt_suites;
our $opt_verbose= 0; # Verbose output, enable with --verbose our $opt_verbose= 0; # Verbose output, enable with --verbose
our $exe_mysql; our $exe_mysql;
our $exe_mysql_plugin;
our $exe_mysqladmin; our $exe_mysqladmin;
our $exe_mysqltest; our $exe_mysqltest;
our $exe_libtool; our $exe_libtool;
...@@ -1950,6 +1951,7 @@ sub executable_setup () { ...@@ -1950,6 +1951,7 @@ sub executable_setup () {
# Look for the client binaries # Look for the client binaries
$exe_mysqladmin= mtr_exe_exists("$path_client_bindir/mysqladmin"); $exe_mysqladmin= mtr_exe_exists("$path_client_bindir/mysqladmin");
$exe_mysql= mtr_exe_exists("$path_client_bindir/mysql"); $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"); $exe_mysql_embedded= mtr_exe_maybe_exists("$basedir/libmysqld/examples/mysql_embedded");
...@@ -2357,6 +2359,7 @@ sub environment_setup { ...@@ -2357,6 +2359,7 @@ sub environment_setup {
$ENV{'MYSQLADMIN'}= native_path($exe_mysqladmin); $ENV{'MYSQLADMIN'}= native_path($exe_mysqladmin);
$ENV{'MYSQL_CLIENT_TEST'}= mysql_client_test_arguments(); $ENV{'MYSQL_CLIENT_TEST'}= mysql_client_test_arguments();
$ENV{'EXE_MYSQL'}= $exe_mysql; $ENV{'EXE_MYSQL'}= $exe_mysql;
$ENV{'MYSQL_PLUGIN'}= $exe_mysql_plugin;
$ENV{'MYSQL_EMBEDDED'}= $exe_mysql_embedded; $ENV{'MYSQL_EMBEDDED'}= $exe_mysql_embedded;
# ---------------------------------------------------- # ----------------------------------------------------
......
#
# 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: ...@@ -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 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; left join t1 on variable_name=test_name where test_name is null;
There should be *no* variables listed below: There should be *no* variables listed below:
INNODB_ROLLBACK_SEGMENTS
INNODB_STATS_METHOD
INNODB_FILE_FORMAT_MAX
INNODB_LARGE_PREFIX INNODB_LARGE_PREFIX
INNODB_ROLLBACK_SEGMENTS
INNODB_STATS_METHOD
INNODB_FILE_FORMAT_MAX
INNODB_LARGE_PREFIX INNODB_LARGE_PREFIX
drop table t1; drop table t1;
drop table t2; drop table t2;
SET @start_global_value = @@global.innodb_file_format_max; SET @start_global_value = @@global.innodb_file_format_check;
SELECT @start_global_value; SELECT @start_global_value;
@start_global_value @start_global_value
Antelope 1
Valid values are 'Antelope' and 'Barracuda' Valid values are 'ON' and 'OFF'
select @@global.innodb_file_format_max in ('Antelope', 'Barracuda'); SELECT @@global.innodb_file_format_check in (0, 1);
@@global.innodb_file_format_max in ('Antelope', 'Barracuda') @@global.innodb_file_format_check in (0, 1)
1 1
select @@global.innodb_file_format_max; SELECT @@global.innodb_file_format_check;
@@global.innodb_file_format_max @@global.innodb_file_format_check
Antelope 1
select @@session.innodb_file_format_max; SELECT @@session.innodb_file_format_check;
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
show global variables like 'innodb_file_format_max'; SHOW global variables LIKE 'innodb_file_format_check';
Variable_name Value Variable_name Value
innodb_file_format_max Antelope innodb_file_format_check ON
show session variables like 'innodb_file_format_max'; SHOW session variables LIKE 'innodb_file_format_check';
Variable_name Value Variable_name Value
innodb_file_format_max Antelope innodb_file_format_check ON
select * from information_schema.global_variables where variable_name='innodb_file_format_max'; SELECT * FROM information_schema.global_variables
VARIABLE_NAME VARIABLE_VALUE WHERE variable_name='innodb_file_format_check';
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 VARIABLE_NAME VARIABLE_VALUE
INNODB_FILE_FORMAT_MAX Barracuda INNODB_FILE_FORMAT_CHECK ON
select * from information_schema.session_variables where variable_name='innodb_file_format_max'; SELECT * FROM information_schema.session_variables
WHERE variable_name='innodb_file_format_check';
VARIABLE_NAME VARIABLE_VALUE VARIABLE_NAME VARIABLE_VALUE
INNODB_FILE_FORMAT_MAX Barracuda INNODB_FILE_FORMAT_CHECK ON
set session innodb_file_format_max='Salmon'; SET @@global.innodb_file_format_check='Off';
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
set @@session.innodb_file_format_max='Salmon'; Expected error 'Read only variable'
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL SET @@global.innodb_file_format_check=1;
set global innodb_file_format_max=1.1; ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max' Expected error 'Read only variable'
set global innodb_file_format_max=1e1; SET @@global.innodb_file_format_check=0;
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max' ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
set global innodb_file_format_max='Salmon'; Expected error 'Read only variable'
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Salmon' SET @@global.innodb_file_format_check='On';
SET @@global.innodb_file_format_max = @start_global_value; ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
SELECT @@global.innodb_file_format_max; Expected error 'Read only variable'
@@global.innodb_file_format_max SET session innodb_large_prefix='OFF';
Antelope 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'
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
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
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
# 2010-01-25 - Added
# #
# 2011-08-02 - Added
#
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/have_innodb.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; SELECT @start_global_value;
# #
# exists as global only # exists as global only
# #
--echo Valid values are 'Antelope' and 'Barracuda' --echo Valid values are 'ON' and 'OFF'
select @@global.innodb_file_format_max in ('Antelope', 'Barracuda'); SELECT @@global.innodb_file_format_check in (0, 1);
select @@global.innodb_file_format_max; SELECT @@global.innodb_file_format_check;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
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 read only
#
--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 --error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@session.innodb_file_format_max; SET @@global.innodb_file_format_check=0;
show global variables like 'innodb_file_format_max'; --echo Expected error 'Read only variable'
show session variables like 'innodb_file_format_max';
select * from information_schema.global_variables where variable_name='innodb_file_format_max'; --error ER_INCORRECT_GLOBAL_LOCAL_VAR
select * from information_schema.session_variables where variable_name='innodb_file_format_max'; SET @@global.innodb_file_format_check='On';
--echo Expected error 'Read only variable'
#
# 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 --error ER_GLOBAL_VARIABLE
set session innodb_file_format_max='Salmon'; SET session innodb_large_prefix='OFF';
--error ER_GLOBAL_VARIABLE --error ER_GLOBAL_VARIABLE
set @@session.innodb_file_format_max='Salmon'; SET @@session.innodb_stats_on_metadata='ON';
# #
# incorrect types # Check if the value in GLOBAL Table matches value in variable
# #
--error ER_WRONG_TYPE_FOR_VAR
set global innodb_file_format_max=1.1; SELECT IF(@@GLOBAL.innodb_file_format_check, "ON", "OFF") = VARIABLE_VALUE
--error ER_WRONG_TYPE_FOR_VAR FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
set global innodb_file_format_max=1e1; WHERE VARIABLE_NAME='innodb_file_format_check';
--error ER_WRONG_VALUE_FOR_VAR --echo 1 Expected
set global innodb_file_format_max='Salmon';
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
# #
# Cleanup # 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
SET @@global.innodb_file_format_max = @start_global_value; --Error ER_BAD_FIELD_ERROR
SELECT @@global.innodb_file_format_max; SELECT innodb_file_format_check = @@SESSION.innodb_file_format_check;
--echo Expected error 'Readonly variable'
#
# 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;
#
# 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;
#
# 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;
--plugin-dir=$DAEMONEXAMPLE_DIR
This diff is collapsed.
...@@ -15,3 +15,5 @@ ...@@ -15,3 +15,5 @@
MYSQL_ADD_PLUGIN(daemon_example daemon_example.cc MYSQL_ADD_PLUGIN(daemon_example daemon_example.cc
MODULE_ONLY MODULE_OUTPUT_NAME "libdaemon_example") MODULE_ONLY MODULE_OUTPUT_NAME "libdaemon_example")
INSTALL(FILES daemon_example.ini DESTINATION ${INSTALL_PLUGINDIR})
#
# 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
...@@ -2541,6 +2541,8 @@ row_sel_field_store_in_mysql_format( ...@@ -2541,6 +2541,8 @@ row_sel_field_store_in_mysql_format(
ut_ad(len != UNIV_SQL_NULL); ut_ad(len != UNIV_SQL_NULL);
UNIV_MEM_ASSERT_RW(data, len); UNIV_MEM_ASSERT_RW(data, len);
UNIV_MEM_ASSERT_W(dest, templ->mysql_col_len);
UNIV_MEM_INVALID(dest, templ->mysql_col_len);
switch (templ->type) { switch (templ->type) {
const byte* field_end; const byte* field_end;
...@@ -2579,14 +2581,16 @@ row_sel_field_store_in_mysql_format( ...@@ -2579,14 +2581,16 @@ row_sel_field_store_in_mysql_format(
dest = row_mysql_store_true_var_len( dest = row_mysql_store_true_var_len(
dest, len, templ->mysql_length_bytes); dest, len, templ->mysql_length_bytes);
/* Copy the actual data. Leave the rest of the
buffer uninitialized. */
memcpy(dest, data, len);
break;
} }
/* Copy the actual data */ /* Copy the actual data */
ut_memcpy(dest, data, len); ut_memcpy(dest, data, len);
/* Pad with trailing spaces. We pad with spaces also the /* Pad with trailing spaces. */
unused end of a >= 5.0.3 true VARCHAR column, just in case
MySQL expects its contents to be deterministic. */
pad = dest + len; pad = dest + len;
...@@ -3112,6 +3116,39 @@ sel_restore_position_for_mysql( ...@@ -3112,6 +3116,39 @@ sel_restore_position_for_mysql(
return(TRUE); return(TRUE);
} }
/********************************************************************//**
Copies a cached field for MySQL from the fetch cache. */
static
void
row_sel_copy_cached_field_for_mysql(
/*================================*/
byte* buf, /*!< in/out: row buffer */
const byte* cache, /*!< in: cached row */
const mysql_row_templ_t*templ) /*!< in: column template */
{
ulint len;
buf += templ->mysql_col_offset;
cache += templ->mysql_col_offset;
UNIV_MEM_ASSERT_W(buf, templ->mysql_col_len);
if (templ->mysql_type == DATA_MYSQL_TRUE_VARCHAR
&& templ->type != DATA_INT) {
/* Check for != DATA_INT to make sure we do
not treat MySQL ENUM or SET as a true VARCHAR!
Find the actual length of the true VARCHAR field. */
row_mysql_read_true_varchar(
&len, cache, templ->mysql_length_bytes);
len += templ->mysql_length_bytes;
UNIV_MEM_INVALID(buf, templ->mysql_col_len);
} else {
len = templ->mysql_col_len;
}
ut_memcpy(buf, cache, len);
}
/********************************************************************//** /********************************************************************//**
Pops a cached row for MySQL from the fetch cache. */ Pops a cached row for MySQL from the fetch cache. */
UNIV_INLINE UNIV_INLINE
...@@ -3124,26 +3161,22 @@ row_sel_pop_cached_row_for_mysql( ...@@ -3124,26 +3161,22 @@ row_sel_pop_cached_row_for_mysql(
{ {
ulint i; ulint i;
const mysql_row_templ_t*templ; const mysql_row_templ_t*templ;
byte* cached_rec; const byte* cached_rec;
ut_ad(prebuilt->n_fetch_cached > 0); ut_ad(prebuilt->n_fetch_cached > 0);
ut_ad(prebuilt->mysql_prefix_len <= prebuilt->mysql_row_len); ut_ad(prebuilt->mysql_prefix_len <= prebuilt->mysql_row_len);
UNIV_MEM_ASSERT_W(buf, prebuilt->mysql_row_len);
cached_rec = prebuilt->fetch_cache[prebuilt->fetch_cache_first];
if (UNIV_UNLIKELY(prebuilt->keep_other_fields_on_keyread)) { if (UNIV_UNLIKELY(prebuilt->keep_other_fields_on_keyread)) {
/* Copy cache record field by field, don't touch fields that /* Copy cache record field by field, don't touch fields that
are not covered by current key */ are not covered by current key */
cached_rec = prebuilt->fetch_cache[
prebuilt->fetch_cache_first];
for (i = 0; i < prebuilt->n_template; i++) { for (i = 0; i < prebuilt->n_template; i++) {
templ = prebuilt->mysql_template + i; templ = prebuilt->mysql_template + i;
#if 0 /* Some of the cached_rec may legitimately be uninitialized. */ row_sel_copy_cached_field_for_mysql(
UNIV_MEM_ASSERT_RW(cached_rec buf, cached_rec, templ);
+ templ->mysql_col_offset,
templ->mysql_col_len);
#endif
ut_memcpy(buf + templ->mysql_col_offset,
cached_rec + templ->mysql_col_offset,
templ->mysql_col_len);
/* Copy NULL bit of the current field from cached_rec /* Copy NULL bit of the current field from cached_rec
to buf */ to buf */
if (templ->mysql_null_bit_mask) { if (templ->mysql_null_bit_mask) {
...@@ -3153,17 +3186,24 @@ row_sel_pop_cached_row_for_mysql( ...@@ -3153,17 +3186,24 @@ row_sel_pop_cached_row_for_mysql(
& (byte)templ->mysql_null_bit_mask; & (byte)templ->mysql_null_bit_mask;
} }
} }
} else if (prebuilt->mysql_prefix_len > 63) {
/* The record is long. Copy it field by field, in case
there are some long VARCHAR column of which only a
small length is being used. */
UNIV_MEM_INVALID(buf, prebuilt->mysql_prefix_len);
/* First copy the NULL bits. */
ut_memcpy(buf, cached_rec, prebuilt->null_bitmap_len);
/* Then copy the requested fields. */
for (i = 0; i < prebuilt->n_template; i++) {
row_sel_copy_cached_field_for_mysql(
buf, cached_rec, prebuilt->mysql_template + i);
} }
else { } else {
#if 0 /* Some of the cached_rec may legitimately be uninitialized. */ ut_memcpy(buf, cached_rec, prebuilt->mysql_prefix_len);
UNIV_MEM_ASSERT_RW(prebuilt->fetch_cache
[prebuilt->fetch_cache_first],
prebuilt->mysql_prefix_len);
#endif
ut_memcpy(buf,
prebuilt->fetch_cache[prebuilt->fetch_cache_first],
prebuilt->mysql_prefix_len);
} }
prebuilt->n_fetch_cached--; prebuilt->n_fetch_cached--;
prebuilt->fetch_cache_first++; prebuilt->fetch_cache_first++;
......
...@@ -1000,6 +1000,7 @@ echo "=====" >> $STATUS_HISTORY ...@@ -1000,6 +1000,7 @@ echo "=====" >> $STATUS_HISTORY
%attr(755, root, root) %{_bindir}/mysql_setpermission %attr(755, root, root) %{_bindir}/mysql_setpermission
%attr(755, root, root) %{_bindir}/mysql_tzinfo_to_sql %attr(755, root, root) %{_bindir}/mysql_tzinfo_to_sql
%attr(755, root, root) %{_bindir}/mysql_upgrade %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}/mysql_zap
%attr(755, root, root) %{_bindir}/mysqlbug %attr(755, root, root) %{_bindir}/mysqlbug
%attr(755, root, root) %{_bindir}/mysqld_multi %attr(755, root, root) %{_bindir}/mysqld_multi
...@@ -1017,6 +1018,7 @@ echo "=====" >> $STATUS_HISTORY ...@@ -1017,6 +1018,7 @@ echo "=====" >> $STATUS_HISTORY
%attr(755, root, root) %{_sbindir}/rcmysql %attr(755, root, root) %{_sbindir}/rcmysql
%attr(755, root, root) %{_libdir}/mysql/plugin/adt_null.so %attr(755, root, root) %{_libdir}/mysql/plugin/adt_null.so
%attr(755, root, root) %{_libdir}/mysql/plugin/libdaemon_example.so %attr(755, root, root) %{_libdir}/mysql/plugin/libdaemon_example.so
%attr(755, root, root) %{_libdir}/mysql/plugin/daemon_example.ini
%attr(755, root, root) %{_libdir}/mysql/plugin/mypluglib.so %attr(755, root, root) %{_libdir}/mysql/plugin/mypluglib.so
%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_master.so %attr(755, root, root) %{_libdir}/mysql/plugin/semisync_master.so
%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_slave.so %attr(755, root, root) %{_libdir}/mysql/plugin/semisync_slave.so
...@@ -1131,6 +1133,10 @@ echo "=====" >> $STATUS_HISTORY ...@@ -1131,6 +1133,10 @@ echo "=====" >> $STATUS_HISTORY
# merging BK trees) # merging BK trees)
############################################################################## ##############################################################################
%changelog %changelog
* 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> * Thu Jul 21 2011 Sunanda Menon <sunanda.menon@oracle.com>
- Fix bug#12561297: Added the MySQL embedded binary - Fix bug#12561297: Added the MySQL embedded binary
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment