Merge branch '10.1' into 10.2
This commit is contained in:
commit
22c322c649
@ -465,6 +465,12 @@ ENDIF()
|
|||||||
|
|
||||||
INCLUDE(CPack)
|
INCLUDE(CPack)
|
||||||
|
|
||||||
|
IF(WIN32 AND SIGNCODE)
|
||||||
|
# Configure post-install script for authenticode signing
|
||||||
|
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/cmake/sign.cmake.in sign.cmake @ONLY)
|
||||||
|
INSTALL(SCRIPT ${PROJECT_BINARY_DIR}/sign.cmake)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
IF(NON_DISTRIBUTABLE_WARNING)
|
IF(NON_DISTRIBUTABLE_WARNING)
|
||||||
MESSAGE(WARNING "
|
MESSAGE(WARNING "
|
||||||
You have linked MariaDB with GPLv3 libraries! You may not distribute the resulting binary. If you do, you will put yourself into a legal problem with Free Software Foundation.")
|
You have linked MariaDB with GPLv3 libraries! You may not distribute the resulting binary. If you do, you will put yourself into a legal problem with Free Software Foundation.")
|
||||||
|
0
cmake/CMakeLis.txt
Normal file
0
cmake/CMakeLis.txt
Normal file
@ -47,6 +47,21 @@ MACRO (RUN_BISON input_yy output_cc output_h)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
IF(BISON_USABLE)
|
IF(BISON_USABLE)
|
||||||
|
# Workaround for VS regenerating output even
|
||||||
|
# when outputs are up-to-date. At least, fix output timestamp
|
||||||
|
# after build so that files that depend on generated header are
|
||||||
|
# not rebuilt.
|
||||||
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||||
|
FIND_PROGRAM(TOUCH_EXECUTABLE touch DOC "Path to touch executable"
|
||||||
|
PATHS "C:/Program Files/Git/usr/bin"
|
||||||
|
"C:/Program Files (x86)/Git/usr/bin")
|
||||||
|
IF(TOUCH_EXECUTABLE)
|
||||||
|
SET(VS_FIX_OUTPUT_TIMESTAMPS
|
||||||
|
COMMAND ${TOUCH_EXECUTABLE} -r ${input_yy} ${output_cc}
|
||||||
|
COMMAND ${TOUCH_EXECUTABLE} -r ${input_yy} ${output_h})
|
||||||
|
ENDIF()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
ADD_CUSTOM_COMMAND(
|
ADD_CUSTOM_COMMAND(
|
||||||
OUTPUT ${output_cc}
|
OUTPUT ${output_cc}
|
||||||
${output_h}
|
${output_h}
|
||||||
@ -54,6 +69,7 @@ MACRO (RUN_BISON input_yy output_cc output_h)
|
|||||||
--output=${output_cc}
|
--output=${output_cc}
|
||||||
--defines=${output_h}
|
--defines=${output_h}
|
||||||
${input_yy}
|
${input_yy}
|
||||||
|
${VS_FIX_OUTPUT_TIMESTAMPS}
|
||||||
DEPENDS ${input_yy}
|
DEPENDS ${input_yy}
|
||||||
)
|
)
|
||||||
ELSE()
|
ELSE()
|
||||||
|
@ -32,16 +32,7 @@ FUNCTION (INSTALL_DEBUG_SYMBOLS)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
SET(targets ${ARG_UNPARSED_ARGUMENTS})
|
SET(targets ${ARG_UNPARSED_ARGUMENTS})
|
||||||
FOREACH(target ${targets})
|
FOREACH(target ${targets})
|
||||||
GET_TARGET_PROPERTY(type ${target} TYPE)
|
GET_TARGET_PROPERTY(target_type ${target} TYPE)
|
||||||
GET_TARGET_PROPERTY(location ${target} LOCATION)
|
|
||||||
STRING(REPLACE ".exe" ".pdb" pdb_location ${location})
|
|
||||||
STRING(REPLACE ".dll" ".pdb" pdb_location ${pdb_location})
|
|
||||||
STRING(REPLACE ".lib" ".pdb" pdb_location ${pdb_location})
|
|
||||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
|
|
||||||
STRING(REPLACE
|
|
||||||
"${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}"
|
|
||||||
pdb_location ${pdb_location})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
set(comp "")
|
set(comp "")
|
||||||
|
|
||||||
@ -61,11 +52,9 @@ FUNCTION (INSTALL_DEBUG_SYMBOLS)
|
|||||||
IF(NOT comp)
|
IF(NOT comp)
|
||||||
SET(comp Debuginfo_archive_only) # not in MSI
|
SET(comp Debuginfo_archive_only) # not in MSI
|
||||||
ENDIF()
|
ENDIF()
|
||||||
IF(type MATCHES "STATIC")
|
IF(NOT target_type MATCHES "STATIC")
|
||||||
# PDB for static libraries might be unsupported http://public.kitware.com/Bug/view.php?id=14600
|
INSTALL(FILES $<TARGET_PDB_FILE:${target}> DESTINATION ${ARG_INSTALL_LOCATION} COMPONENT ${comp})
|
||||||
SET(opt OPTIONAL)
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
INSTALL(FILES ${pdb_location} DESTINATION ${ARG_INSTALL_LOCATION} COMPONENT ${comp} ${opt})
|
|
||||||
ENDFOREACH()
|
ENDFOREACH()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDFUNCTION()
|
ENDFUNCTION()
|
||||||
@ -212,37 +201,22 @@ IF(WIN32)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
MACRO(SIGN_TARGET)
|
|
||||||
CMAKE_PARSE_ARGUMENTS(ARG "" "COMPONENT" "" ${ARGN})
|
FUNCTION(SIGN_TARGET target)
|
||||||
SET(target ${ARG_UNPARSED_ARGUMENTS})
|
IF(NOT SIGNCODE)
|
||||||
IF(ARG_COMPONENT)
|
RETURN()
|
||||||
SET(comp COMPONENT ${ARG_COMPONENT})
|
|
||||||
ELSE()
|
|
||||||
SET(comp)
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
GET_TARGET_PROPERTY(target_type ${target} TYPE)
|
GET_TARGET_PROPERTY(target_type ${target} TYPE)
|
||||||
IF(target_type AND NOT target_type MATCHES "STATIC")
|
IF((NOT target_type) OR (target_type MATCHES "STATIC"))
|
||||||
GET_TARGET_PROPERTY(target_location ${target} LOCATION)
|
RETURN()
|
||||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
|
|
||||||
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}"
|
|
||||||
target_location ${target_location})
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
INSTALL(CODE
|
# Mark executable for signing by creating empty *.signme file
|
||||||
"EXECUTE_PROCESS(COMMAND
|
# The actual signing happens in preinstall step
|
||||||
\"${SIGNTOOL_EXECUTABLE}\" verify /pa /q \"${target_location}\"
|
# (which traverses
|
||||||
RESULT_VARIABLE ERR)
|
ADD_CUSTOM_COMMAND(TARGET ${target} POST_BUILD
|
||||||
IF(NOT \${ERR} EQUAL 0)
|
COMMAND ${CMAKE_COMMAND} -E touch "$<TARGET_FILE:${target}>.signme"
|
||||||
EXECUTE_PROCESS(COMMAND
|
)
|
||||||
\"${SIGNTOOL_EXECUTABLE}\" sign ${SIGNTOOL_PARAMETERS} \"${target_location}\"
|
ENDFUNCTION()
|
||||||
RESULT_VARIABLE ERR)
|
|
||||||
ENDIF()
|
|
||||||
IF(NOT \${ERR} EQUAL 0)
|
|
||||||
MESSAGE(FATAL_ERROR \"Error signing '${target_location}'\")
|
|
||||||
ENDIF()
|
|
||||||
" ${comp})
|
|
||||||
ENDIF()
|
|
||||||
ENDMACRO()
|
|
||||||
|
|
||||||
|
|
||||||
# Installs targets, also installs pdbs on Windows.
|
# Installs targets, also installs pdbs on Windows.
|
||||||
#
|
#
|
||||||
|
@ -219,7 +219,8 @@ MACRO(MYSQL_ADD_PLUGIN)
|
|||||||
# Install dynamic library
|
# Install dynamic library
|
||||||
IF(ARG_COMPONENT)
|
IF(ARG_COMPONENT)
|
||||||
IF(CPACK_COMPONENTS_ALL AND
|
IF(CPACK_COMPONENTS_ALL AND
|
||||||
NOT CPACK_COMPONENTS_ALL MATCHES ${ARG_COMPONENT})
|
NOT CPACK_COMPONENTS_ALL MATCHES ${ARG_COMPONENT}
|
||||||
|
AND INSTALL_SYSCONF2DIR)
|
||||||
IF (ARG_STORAGE_ENGINE)
|
IF (ARG_STORAGE_ENGINE)
|
||||||
SET(ver " = %{version}-%{release}")
|
SET(ver " = %{version}-%{release}")
|
||||||
ELSE()
|
ELSE()
|
||||||
|
18
cmake/sign.cmake.in
Normal file
18
cmake/sign.cmake.in
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
FILE(GLOB_RECURSE files "@CMAKE_BINARY_DIR@/*.signme")
|
||||||
|
MESSAGE(STATUS "signing files")
|
||||||
|
FOREACH(f ${files})
|
||||||
|
STRING(REPLACE ".signme" "" exe_location "${f}")
|
||||||
|
|
||||||
|
string (REPLACE ";" " " params "@SIGNTOOL_PARAMETERS@")
|
||||||
|
#MESSAGE("@SIGNTOOL_EXECUTABLE@" sign ${params} "${exe_location}")
|
||||||
|
|
||||||
|
EXECUTE_PROCESS(COMMAND
|
||||||
|
"@SIGNTOOL_EXECUTABLE@" sign @SIGNTOOL_PARAMETERS@ "${exe_location}"
|
||||||
|
RESULT_VARIABLE ERR)
|
||||||
|
IF(NOT ${ERR} EQUAL 0)
|
||||||
|
MESSAGE( "Error ${ERR} signing ${exe_location}")
|
||||||
|
ELSE()
|
||||||
|
FILE(REMOVE ${f})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
ENDFOREACH()
|
3
debian/libmariadbclient18.links
vendored
Normal file
3
debian/libmariadbclient18.links
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
usr/lib/libmysqlclient.so.18.0.0 usr/lib/libmariadbclient.so.18.0.0
|
||||||
|
usr/lib/libmysqlclient.so.18 usr/lib/libmariadbclient.so.18
|
||||||
|
usr/lib/libmysqlclient.so usr/lib/libmariadbclient.so
|
@ -30,8 +30,3 @@ SET(YASSL_SOURCES src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp sr
|
|||||||
ADD_CONVENIENCE_LIBRARY(yassl ${YASSL_SOURCES})
|
ADD_CONVENIENCE_LIBRARY(yassl ${YASSL_SOURCES})
|
||||||
RESTRICT_SYMBOL_EXPORTS(yassl)
|
RESTRICT_SYMBOL_EXPORTS(yassl)
|
||||||
|
|
||||||
IF(MSVC)
|
|
||||||
INSTALL_DEBUG_TARGET(yassl DESTINATION ${INSTALL_LIBDIR}/debug)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,7 +32,3 @@ SET(TAOCRYPT_SOURCES src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp
|
|||||||
ADD_CONVENIENCE_LIBRARY(taocrypt ${TAOCRYPT_SOURCES})
|
ADD_CONVENIENCE_LIBRARY(taocrypt ${TAOCRYPT_SOURCES})
|
||||||
RESTRICT_SYMBOL_EXPORTS(taocrypt)
|
RESTRICT_SYMBOL_EXPORTS(taocrypt)
|
||||||
|
|
||||||
IF(MSVC)
|
|
||||||
INSTALL_DEBUG_TARGET(taocrypt DESTINATION ${INSTALL_LIBDIR}/debug)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
|
@ -160,15 +160,6 @@ MERGE_LIBRARIES(mysqlserver STATIC ${EMBEDDED_LIBS}
|
|||||||
|
|
||||||
INSTALL(FILES embedded_priv.h DESTINATION ${INSTALL_INCLUDEDIR}/server/private COMPONENT ${COMPONENT_MYSQLSERVER})
|
INSTALL(FILES embedded_priv.h DESTINATION ${INSTALL_INCLUDEDIR}/server/private COMPONENT ${COMPONENT_MYSQLSERVER})
|
||||||
|
|
||||||
# Visual Studio users need debug static library
|
|
||||||
IF(MSVC)
|
|
||||||
INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR}/debug)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(UNIX)
|
|
||||||
INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR} RENAME
|
|
||||||
${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(CLIENT_API_FUNCTIONS_5_1
|
SET(CLIENT_API_FUNCTIONS_5_1
|
||||||
get_tty_password
|
get_tty_password
|
||||||
|
@ -738,8 +738,7 @@ sub run_test_server ($$$) {
|
|||||||
|
|
||||||
# Repeat test $opt_repeat number of times
|
# Repeat test $opt_repeat number of times
|
||||||
my $repeat= $result->{repeat} || 1;
|
my $repeat= $result->{repeat} || 1;
|
||||||
# Don't repeat if test was skipped
|
if ($repeat < $opt_repeat)
|
||||||
if ($repeat < $opt_repeat && $result->{'result'} ne 'MTR_RES_SKIPPED')
|
|
||||||
{
|
{
|
||||||
$result->{retries}= 0;
|
$result->{retries}= 0;
|
||||||
$result->{rep_failures}++ if $result->{failures};
|
$result->{rep_failures}++ if $result->{failures};
|
||||||
@ -5789,7 +5788,7 @@ sub debugger_arguments {
|
|||||||
$$exe= $debugger;
|
$$exe= $debugger;
|
||||||
|
|
||||||
}
|
}
|
||||||
elsif ( $debugger =~ /windbg/ )
|
elsif ( $debugger =~ /windbg|vsjitdebugger/ )
|
||||||
{
|
{
|
||||||
# windbg exe arg1 .. argn
|
# windbg exe arg1 .. argn
|
||||||
|
|
||||||
|
@ -106,3 +106,28 @@ count(distinct user_id)
|
|||||||
17
|
17
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set @@tmp_table_size = default;
|
set @@tmp_table_size = default;
|
||||||
|
create table t1 (
|
||||||
|
a VARCHAR(1020),
|
||||||
|
b int
|
||||||
|
);
|
||||||
|
insert into t1 values
|
||||||
|
( 0 , 1 ),
|
||||||
|
( 1 , 2 ),
|
||||||
|
( 2 , 3 ),
|
||||||
|
( 3 , 4 ),
|
||||||
|
( 4 , 5 ),
|
||||||
|
( 5 , 6 ),
|
||||||
|
( 6 , 7 ),
|
||||||
|
( 7 , 8 ),
|
||||||
|
( 8 , 9 ),
|
||||||
|
( 9 , 10 ),
|
||||||
|
( 0 , 11 ),
|
||||||
|
( 1 , 12 ),
|
||||||
|
( 2 , 13 ),
|
||||||
|
( 3 , 14 );
|
||||||
|
set @@tmp_table_size=1024;
|
||||||
|
select count(distinct a) from t1;
|
||||||
|
count(distinct a)
|
||||||
|
10
|
||||||
|
drop table t1;
|
||||||
|
set @@tmp_table_size = default;
|
||||||
|
@ -1440,6 +1440,23 @@ release_lock('test')
|
|||||||
|
|
||||||
# -- Done.
|
# -- Done.
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13685 Can not replay binary log due to Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation 'concat'
|
||||||
|
#
|
||||||
|
SET NAMES utf8;
|
||||||
|
SELECT COERCIBILITY(NAME_CONST('name','test'));
|
||||||
|
COERCIBILITY(NAME_CONST('name','test'))
|
||||||
|
2
|
||||||
|
SELECT COERCIBILITY(NAME_CONST('name',TIME'00:00:00'));
|
||||||
|
COERCIBILITY(NAME_CONST('name',TIME'00:00:00'))
|
||||||
|
5
|
||||||
|
SELECT COERCIBILITY(NAME_CONST('name',15));
|
||||||
|
COERCIBILITY(NAME_CONST('name',15))
|
||||||
|
5
|
||||||
|
SELECT CONCAT(NAME_CONST('name',15),'오');
|
||||||
|
CONCAT(NAME_CONST('name',15),'오')
|
||||||
|
15오
|
||||||
|
SET NAMES latin1;
|
||||||
#
|
#
|
||||||
# Start of 10.2 tests
|
# Start of 10.2 tests
|
||||||
#
|
#
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
set @log_output.saved = @@global.log_output;
|
||||||
set @@global.log_output = 'TABLE';
|
set @@global.log_output = 'TABLE';
|
||||||
connect con1,localhost,root,,;
|
connect con1,localhost,root,,;
|
||||||
connect con2,localhost,root,,;
|
connect con2,localhost,root,,;
|
||||||
@ -11,21 +12,21 @@ set session long_query_time=1;
|
|||||||
select get_lock('bug27638', 2);
|
select get_lock('bug27638', 2);
|
||||||
get_lock('bug27638', 2)
|
get_lock('bug27638', 2)
|
||||||
0
|
0
|
||||||
select if (query_time >= '00:00:01', 'OK', 'WRONG') as qt, sql_text from mysql.slow_log
|
select if (query_time >= '00:00:01', 'OK', concat('WRONG: ',query_time)) as qt, sql_text from mysql.slow_log
|
||||||
where sql_text = 'select get_lock(\'bug27638\', 2)';
|
where sql_text = 'select get_lock(\'bug27638\', 2)';
|
||||||
qt sql_text
|
qt sql_text
|
||||||
OK select get_lock('bug27638', 2)
|
OK select get_lock('bug27638', 2)
|
||||||
select get_lock('bug27638', 60);
|
select get_lock('bug27638', 60);
|
||||||
get_lock('bug27638', 60)
|
get_lock('bug27638', 60)
|
||||||
0
|
0
|
||||||
select if (query_time >= '00:00:59', 'OK', 'WRONG') as qt, sql_text from mysql.slow_log
|
select if (query_time >= '00:00:59', 'OK', concat('WRONG: ',query_time)) as qt, sql_text from mysql.slow_log
|
||||||
where sql_text = 'select get_lock(\'bug27638\', 60)';
|
where sql_text = 'select get_lock(\'bug27638\', 60)';
|
||||||
qt sql_text
|
qt sql_text
|
||||||
OK select get_lock('bug27638', 60)
|
OK select get_lock('bug27638', 60)
|
||||||
select get_lock('bug27638', 101);
|
select get_lock('bug27638', 101);
|
||||||
get_lock('bug27638', 101)
|
get_lock('bug27638', 101)
|
||||||
0
|
0
|
||||||
select if (query_time >= '00:01:40', 'OK', 'WRONG') as qt, sql_text from mysql.slow_log
|
select if (query_time >= '00:01:40', 'OK', concat('WRONG: ',query_time)) as qt, sql_text from mysql.slow_log
|
||||||
where sql_text = 'select get_lock(\'bug27638\', 101)';
|
where sql_text = 'select get_lock(\'bug27638\', 101)';
|
||||||
qt sql_text
|
qt sql_text
|
||||||
OK select get_lock('bug27638', 101)
|
OK select get_lock('bug27638', 101)
|
||||||
@ -36,4 +37,4 @@ release_lock('bug27638')
|
|||||||
connection default;
|
connection default;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
disconnect con2;
|
disconnect con2;
|
||||||
set @@global.log_output=default;
|
set @@global.log_output = @log_output.saved;
|
||||||
|
@ -33,11 +33,15 @@ t2 CREATE TABLE `t2` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/tmp/'
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/tmp/'
|
||||||
INSERT INTO t1 VALUES (0), (1), (2);
|
INSERT INTO t1 VALUES (0), (1), (2);
|
||||||
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
|
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
|
||||||
ERROR HY000: Tables have different definitions
|
|
||||||
ALTER TABLE t1 EXCHANGE PARTITION p2 WITH TABLE t2;
|
ALTER TABLE t1 EXCHANGE PARTITION p2 WITH TABLE t2;
|
||||||
ERROR HY000: Tables have different definitions
|
ERROR HY000: Tables have different definitions
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
SELECT * FROM t2;
|
SELECT * FROM t2;
|
||||||
a
|
a
|
||||||
|
0
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
# Creating two non colliding tables mysqltest2.t1 and test.t1
|
# Creating two non colliding tables mysqltest2.t1 and test.t1
|
||||||
# test.t1 have partitions in mysqltest2-directory!
|
# test.t1 have partitions in mysqltest2-directory!
|
||||||
|
@ -237,3 +237,15 @@ DROP DATABASE x;
|
|||||||
CREATE TABLE test.t1(id INT(11)) ENGINE MYISAM
|
CREATE TABLE test.t1(id INT(11)) ENGINE MYISAM
|
||||||
DATA DIRECTORY "MYSQLTEST_VARDIR/tmp";
|
DATA DIRECTORY "MYSQLTEST_VARDIR/tmp";
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
|
use test;
|
||||||
|
create table t1(c1 int, c2 int, c3 varchar(100)) engine=MyISAM data directory='MYSQL_TMP_DIR' index directory = 'MYSQL_TMP_DIR';
|
||||||
|
insert t1 values (1,2,3), (2,3,4), (3,4,5), (4,5,6), (5,6,7), (6,7,8), (7,8,9);
|
||||||
|
alter online table t1 delay_key_write=1;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`c2` int(11) DEFAULT NULL,
|
||||||
|
`c3` varchar(100) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DELAY_KEY_WRITE=1 DATA DIRECTORY='MYSQL_TMP_DIR/' INDEX DIRECTORY='MYSQL_TMP_DIR/'
|
||||||
|
drop table t1;
|
||||||
|
@ -64,6 +64,9 @@ truncate(FILE, $page_size * 4);
|
|||||||
close FILE;
|
close FILE;
|
||||||
open(FILE, "+<", "$ENV{'MYSQLD_DATADIR'}test/ibd4f.ibd") or die;
|
open(FILE, "+<", "$ENV{'MYSQLD_DATADIR'}test/ibd4f.ibd") or die;
|
||||||
truncate(FILE, $page_size * 4 + 1234);
|
truncate(FILE, $page_size * 4 + 1234);
|
||||||
|
# Work around MDEV-12699 and ensure that the truncated page is all-zero.
|
||||||
|
sysseek(FILE, $page_size * 4, 0);
|
||||||
|
syswrite(FILE, chr(0) x 1234);
|
||||||
close FILE;
|
close FILE;
|
||||||
open(FILE, "+<", "$ENV{'MYSQLD_DATADIR'}test/ibd5.ibd") or die;
|
open(FILE, "+<", "$ENV{'MYSQLD_DATADIR'}test/ibd5.ibd") or die;
|
||||||
truncate(FILE, $page_size * 5);
|
truncate(FILE, $page_size * 5);
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
--disable_warnings
|
|
||||||
DROP TABLE IF EXISTS t_10;
|
DROP TABLE IF EXISTS t_10;
|
||||||
DROP TABLE IF EXISTS t_100;
|
DROP TABLE IF EXISTS t_100;
|
||||||
DROP TABLE IF EXISTS t_1000;
|
DROP TABLE IF EXISTS t_1000;
|
||||||
@ -11,5 +10,3 @@ DROP TABLE IF EXISTS tsp_03;
|
|||||||
DROP TABLE IF EXISTS tsp_04;
|
DROP TABLE IF EXISTS tsp_04;
|
||||||
DROP TABLE IF EXISTS t_empty;
|
DROP TABLE IF EXISTS t_empty;
|
||||||
DROP TABLE IF EXISTS t_null;
|
DROP TABLE IF EXISTS t_null;
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
|
@ -1,51 +1,27 @@
|
|||||||
--disable_warnings
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
DROP TABLE IF EXISTS t_10;
|
eval CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) $data_directory $index_directory ENGINE = $engine_table;
|
||||||
DROP TABLE IF EXISTS t_100;
|
|
||||||
DROP TABLE IF EXISTS t_1000;
|
|
||||||
DROP TABLE IF EXISTS tp;
|
|
||||||
DROP TABLE IF EXISTS tsp;
|
|
||||||
DROP TABLE IF EXISTS t_empty;
|
|
||||||
DROP TABLE IF EXISTS t_null;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
eval CREATE TABLE t_10 (a INT,
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
b VARCHAR(55),
|
eval CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) $data_directory $index_directory ENGINE = $engine_table;
|
||||||
PRIMARY KEY (a)) $data_directory $index_directory
|
|
||||||
ENGINE = $engine_table;
|
|
||||||
|
|
||||||
eval CREATE TABLE t_100 (a INT,
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
b VARCHAR(55),
|
eval CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) $data_directory $index_directory ENGINE = $engine_table;
|
||||||
PRIMARY KEY (a)) $data_directory $index_directory
|
|
||||||
ENGINE = $engine_table;
|
|
||||||
|
|
||||||
eval CREATE TABLE t_1000 (a INT,
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
b VARCHAR(55),
|
eval CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) $data_directory $index_directory ENGINE = $engine_table;
|
||||||
PRIMARY KEY (a)) $data_directory $index_directory
|
|
||||||
ENGINE = $engine_table;
|
|
||||||
|
|
||||||
eval CREATE TABLE t_empty (a INT,
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
b VARCHAR(55),
|
eval CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) $data_directory $index_directory ENGINE = $engine_table;
|
||||||
PRIMARY KEY (a)) $data_directory $index_directory
|
|
||||||
ENGINE = $engine_table;
|
|
||||||
|
|
||||||
eval CREATE TABLE t_null (a INT,
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
b VARCHAR(55),
|
eval CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) $data_directory $index_directory ENGINE = $engine_part
|
||||||
PRIMARY KEY (a)) $data_directory $index_directory
|
|
||||||
ENGINE = $engine_table;
|
|
||||||
|
|
||||||
eval CREATE TABLE tp (a INT,
|
|
||||||
b VARCHAR(55),
|
|
||||||
PRIMARY KEY (a)) $data_directory $index_directory
|
|
||||||
ENGINE = $engine_part
|
|
||||||
PARTITION BY RANGE (a)
|
PARTITION BY RANGE (a)
|
||||||
(PARTITION p0 VALUES LESS THAN (10) $p_data_directory $p_index_directory,
|
(PARTITION p0 VALUES LESS THAN (10) $p_data_directory $p_index_directory,
|
||||||
PARTITION p1 VALUES LESS THAN (100) $p_data_directory $p_index_directory,
|
PARTITION p1 VALUES LESS THAN (100) $p_data_directory $p_index_directory,
|
||||||
PARTITION p2 VALUES LESS THAN (1000) $p_data_directory $p_index_directory);
|
PARTITION p2 VALUES LESS THAN (1000) $p_data_directory $p_index_directory);
|
||||||
|
|
||||||
eval CREATE TABLE tsp (a INT,
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
b VARCHAR(55),
|
eval CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) $data_directory $index_directory ENGINE = $engine_subpart
|
||||||
PRIMARY KEY (a)) $data_directory $index_directory
|
|
||||||
ENGINE = $engine_subpart
|
|
||||||
PARTITION BY RANGE (a)
|
PARTITION BY RANGE (a)
|
||||||
SUBPARTITION BY HASH(a)
|
SUBPARTITION BY HASH(a)
|
||||||
(PARTITION p0 VALUES LESS THAN (10) $p_data_directory $p_index_directory
|
(PARTITION p0 VALUES LESS THAN (10) $p_data_directory $p_index_directory
|
||||||
@ -53,8 +29,7 @@ SUBPARTITION BY HASH(a)
|
|||||||
SUBPARTITION sp01,
|
SUBPARTITION sp01,
|
||||||
SUBPARTITION sp02,
|
SUBPARTITION sp02,
|
||||||
SUBPARTITION sp03,
|
SUBPARTITION sp03,
|
||||||
SUBPARTITION sp04),
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
PARTITION p1 VALUES LESS THAN (100)
|
|
||||||
(SUBPARTITION sp10 $p_data_directory $p_index_directory,
|
(SUBPARTITION sp10 $p_data_directory $p_index_directory,
|
||||||
SUBPARTITION sp11 $p_data_directory $p_index_directory,
|
SUBPARTITION sp11 $p_data_directory $p_index_directory,
|
||||||
SUBPARTITION sp12 $p_data_directory $p_index_directory,
|
SUBPARTITION sp12 $p_data_directory $p_index_directory,
|
||||||
@ -99,41 +74,13 @@ INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four")
|
|||||||
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
|
||||||
eval CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a))
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
ENGINE = $engine_table $data_directory $index_directory
|
eval CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = $engine_table $data_directory $index_directory AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
eval CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a))
|
eval CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = $engine_table $data_directory $index_directory AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
ENGINE = $engine_table $data_directory $index_directory
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
eval CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = $engine_table $data_directory $index_directory AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
eval CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a))
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
ENGINE = $engine_table $data_directory $index_directory
|
eval CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = $engine_table $data_directory $index_directory AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR;
|
||||||
eval CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a))
|
eval CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = $engine_table $data_directory $index_directory AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
ENGINE = $engine_table $data_directory $index_directory
|
|
||||||
AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
|
||||||
eval CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a))
|
|
||||||
ENGINE = $engine_table $data_directory $index_directory
|
|
||||||
AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
|
||||||
|
|
||||||
SHOW CREATE TABLE t_10;
|
|
||||||
SHOW CREATE TABLE t_100;
|
|
||||||
SHOW CREATE TABLE t_1000;
|
|
||||||
SHOW CREATE TABLE tp;
|
|
||||||
SHOW CREATE TABLE tsp;
|
|
||||||
|
|
||||||
--sorted_result
|
|
||||||
SELECT * FROM t_10;
|
|
||||||
--sorted_result
|
|
||||||
SELECT * FROM t_100;
|
|
||||||
--sorted_result
|
|
||||||
SELECT * FROM t_1000;
|
|
||||||
--sorted_result
|
|
||||||
SELECT * FROM tp;
|
|
||||||
--sorted_result
|
|
||||||
SELECT * FROM tp WHERE a< 10;
|
|
||||||
--sorted_result
|
|
||||||
SELECT * FROM tp WHERE a BETWEEN 11 AND 100;
|
|
||||||
--sorted_result
|
|
||||||
SELECT * FROM tp WHERE a BETWEEN 101 AND 200;
|
|
||||||
--sorted_result
|
|
||||||
SELECT * FROM tsp;
|
|
||||||
|
@ -1,3 +1,58 @@
|
|||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) ,
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) ,
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) );
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10)
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 ,
|
||||||
|
SUBPARTITION sp11 ,
|
||||||
|
SUBPARTITION sp12 ,
|
||||||
|
SUBPARTITION sp13 ,
|
||||||
|
SUBPARTITION sp14 ),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000)
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MariaDB
|
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MariaDB
|
||||||
DROP TABLE IF EXISTS t_10;
|
DROP TABLE IF EXISTS t_10;
|
||||||
|
@ -1,4 +1,128 @@
|
|||||||
use test;
|
# === Data/Index directories are identical
|
||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp13 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp14 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
|
DROP TABLE IF EXISTS t_10;
|
||||||
|
DROP TABLE IF EXISTS t_100;
|
||||||
|
DROP TABLE IF EXISTS t_1000;
|
||||||
|
DROP TABLE IF EXISTS tp;
|
||||||
|
DROP TABLE IF EXISTS tsp;
|
||||||
|
DROP TABLE IF EXISTS tsp_00;
|
||||||
|
DROP TABLE IF EXISTS tsp_01;
|
||||||
|
DROP TABLE IF EXISTS tsp_02;
|
||||||
|
DROP TABLE IF EXISTS tsp_03;
|
||||||
|
DROP TABLE IF EXISTS tsp_04;
|
||||||
|
DROP TABLE IF EXISTS t_empty;
|
||||||
|
DROP TABLE IF EXISTS t_null;
|
||||||
|
# === partition has directories, the table does not
|
||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp13 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp14 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
ERROR HY000: Tables have different definitions
|
ERROR HY000: Tables have different definitions
|
||||||
DROP TABLE IF EXISTS t_10;
|
DROP TABLE IF EXISTS t_10;
|
||||||
@ -13,7 +137,62 @@ DROP TABLE IF EXISTS tsp_03;
|
|||||||
DROP TABLE IF EXISTS tsp_04;
|
DROP TABLE IF EXISTS tsp_04;
|
||||||
DROP TABLE IF EXISTS t_empty;
|
DROP TABLE IF EXISTS t_empty;
|
||||||
DROP TABLE IF EXISTS t_null;
|
DROP TABLE IF EXISTS t_null;
|
||||||
use test;
|
# === the table has directories, partition does not
|
||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) ,
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) ,
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) );
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10)
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 ,
|
||||||
|
SUBPARTITION sp11 ,
|
||||||
|
SUBPARTITION sp12 ,
|
||||||
|
SUBPARTITION sp13 ,
|
||||||
|
SUBPARTITION sp14 ),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000)
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
ERROR HY000: Tables have different definitions
|
ERROR HY000: Tables have different definitions
|
||||||
DROP TABLE IF EXISTS t_10;
|
DROP TABLE IF EXISTS t_10;
|
||||||
@ -28,7 +207,132 @@ DROP TABLE IF EXISTS tsp_03;
|
|||||||
DROP TABLE IF EXISTS tsp_04;
|
DROP TABLE IF EXISTS tsp_04;
|
||||||
DROP TABLE IF EXISTS t_empty;
|
DROP TABLE IF EXISTS t_empty;
|
||||||
DROP TABLE IF EXISTS t_null;
|
DROP TABLE IF EXISTS t_null;
|
||||||
use test;
|
# === data directory differs
|
||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir');
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp13 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||||
|
SUBPARTITION sp14 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
|
ERROR HY000: Tables have different definitions
|
||||||
|
DROP TABLE IF EXISTS t_10;
|
||||||
|
DROP TABLE IF EXISTS t_100;
|
||||||
|
DROP TABLE IF EXISTS t_1000;
|
||||||
|
DROP TABLE IF EXISTS tp;
|
||||||
|
DROP TABLE IF EXISTS tsp;
|
||||||
|
DROP TABLE IF EXISTS tsp_00;
|
||||||
|
DROP TABLE IF EXISTS tsp_01;
|
||||||
|
DROP TABLE IF EXISTS tsp_02;
|
||||||
|
DROP TABLE IF EXISTS tsp_03;
|
||||||
|
DROP TABLE IF EXISTS tsp_04;
|
||||||
|
DROP TABLE IF EXISTS t_empty;
|
||||||
|
DROP TABLE IF EXISTS t_null;
|
||||||
|
# === index directory differs
|
||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir');
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
|
||||||
|
SUBPARTITION sp11 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
|
||||||
|
SUBPARTITION sp12 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
|
||||||
|
SUBPARTITION sp13 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir',
|
||||||
|
SUBPARTITION sp14 DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir' AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
ERROR HY000: Tables have different definitions
|
ERROR HY000: Tables have different definitions
|
||||||
DROP TABLE IF EXISTS t_10;
|
DROP TABLE IF EXISTS t_10;
|
||||||
|
@ -1,10 +1,65 @@
|
|||||||
use test;
|
use test;
|
||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) ,
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) ,
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) );
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10)
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 ,
|
||||||
|
SUBPARTITION sp11 ,
|
||||||
|
SUBPARTITION sp12 ,
|
||||||
|
SUBPARTITION sp13 ,
|
||||||
|
SUBPARTITION sp14 ),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000)
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = InnoDB AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = InnoDB AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = InnoDB AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = InnoDB AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = InnoDB AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
CREATE TABLE t_11 (a INT, b VARCHAR(55),
|
CREATE TABLE t_11 (a INT, b VARCHAR(55),
|
||||||
FOREIGN KEY (a) REFERENCES t_10 (a) ON DELETE CASCADE)
|
FOREIGN KEY (a) REFERENCES t_10 (a) ON DELETE CASCADE)
|
||||||
ENGINE= InnoDB;
|
ENGINE= InnoDB;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
ERROR HY000: Table to exchange with partition has foreign key references: 't_11'
|
ERROR HY000: Table to exchange with partition has foreign key references: 't_11'
|
||||||
DROP TABLE IF EXISTS t_11;
|
DROP TABLE t_11;
|
||||||
DROP TABLE IF EXISTS t_10;
|
DROP TABLE IF EXISTS t_10;
|
||||||
DROP TABLE IF EXISTS t_100;
|
DROP TABLE IF EXISTS t_100;
|
||||||
DROP TABLE IF EXISTS t_1000;
|
DROP TABLE IF EXISTS t_1000;
|
||||||
|
@ -1,4 +1,59 @@
|
|||||||
use test;
|
use test;
|
||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) ,
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) ,
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) );
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10)
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 ,
|
||||||
|
SUBPARTITION sp11 ,
|
||||||
|
SUBPARTITION sp12 ,
|
||||||
|
SUBPARTITION sp13 ,
|
||||||
|
SUBPARTITION sp14 ),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000)
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
SELECT * FROM t_10;
|
SELECT * FROM t_10;
|
||||||
a b
|
a b
|
||||||
1 One
|
1 One
|
||||||
@ -102,20 +157,20 @@ a b
|
|||||||
CREATE TABLE t_11(a INT,b VARCHAR(55)) SELECT * FROM t_10;
|
CREATE TABLE t_11(a INT,b VARCHAR(55)) SELECT * FROM t_10;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
ERROR HY000: Tables have different definitions
|
ERROR HY000: Tables have different definitions
|
||||||
DROP TABLE IF EXISTS t_11;
|
DROP TABLE t_11;
|
||||||
CREATE TABLE t_11(a INT,b CHAR(55),PRIMARY KEY(a)) ENGINE= MYISAM SELECT * FROM t_10;
|
CREATE TABLE t_11(a INT,b CHAR(55),PRIMARY KEY(a)) ENGINE= MYISAM SELECT * FROM t_10;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
ERROR HY000: Tables have different definitions
|
ERROR HY000: Tables have different definitions
|
||||||
DROP TABLE IF EXISTS t_11;
|
DROP TABLE t_11;
|
||||||
CREATE TABLE t_11(a INT,b VARCHAR(55),PRIMARY KEY(a)) ENGINE= MEMORY SELECT * FROM t_10;
|
CREATE TABLE t_11(a INT,b VARCHAR(55),PRIMARY KEY(a)) ENGINE= MEMORY SELECT * FROM t_10;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MariaDB
|
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MariaDB
|
||||||
DROP TABLE IF EXISTS t_11;
|
DROP TABLE t_11;
|
||||||
CREATE TABLE t_11(a INT,b CHAR(55),PRIMARY KEY(a)) ENGINE= MYISAM
|
CREATE TABLE t_11(a INT,b CHAR(55),PRIMARY KEY(a)) ENGINE= MYISAM
|
||||||
PARTITION BY KEY() AS SELECT * FROM t_10;
|
PARTITION BY KEY() AS SELECT * FROM t_10;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
ERROR HY000: Table to exchange with partition is partitioned: 't_11'
|
ERROR HY000: Table to exchange with partition is partitioned: 't_11'
|
||||||
DROP TABLE IF EXISTS t_11;
|
DROP TABLE t_11;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE tsp;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE tsp;
|
||||||
ERROR HY000: Table to exchange with partition is partitioned: 'tsp'
|
ERROR HY000: Table to exchange with partition is partitioned: 'tsp'
|
||||||
ALTER TABLE tsp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tsp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
|
@ -1,4 +1,159 @@
|
|||||||
use test;
|
use test;
|
||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) ,
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) ,
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) );
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = InnoDB
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10)
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 ,
|
||||||
|
SUBPARTITION sp11 ,
|
||||||
|
SUBPARTITION sp12 ,
|
||||||
|
SUBPARTITION sp13 ,
|
||||||
|
SUBPARTITION sp14 ),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000)
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
|
SELECT * FROM t_10;
|
||||||
|
a b
|
||||||
|
1 One
|
||||||
|
3 Three
|
||||||
|
5 Five
|
||||||
|
9 Nine
|
||||||
|
SELECT * FROM t_100;
|
||||||
|
a b
|
||||||
|
11 Eleven
|
||||||
|
13 Thirdteen
|
||||||
|
15 Fifeteen
|
||||||
|
19 Nineteen
|
||||||
|
91 Ninety-one
|
||||||
|
93 Ninety-three
|
||||||
|
95 Ninety-five
|
||||||
|
99 Ninety-nine
|
||||||
|
SELECT * FROM t_1000;
|
||||||
|
a b
|
||||||
|
111 Hundred elven
|
||||||
|
113 Hundred thirdteen
|
||||||
|
115 Hundred fiveteen
|
||||||
|
119 Hundred nineteen
|
||||||
|
131 Hundred thirty-one
|
||||||
|
133 Hundred thirty-three
|
||||||
|
135 Hundred thirty-five
|
||||||
|
139 Hundred thirty-nine
|
||||||
|
151 Hundred fifty-one
|
||||||
|
153 Hundred fifty-three
|
||||||
|
155 Hundred fity-five
|
||||||
|
159 Hundred fifty-nine
|
||||||
|
191 Hundred ninety-one
|
||||||
|
193 Hundred ninety-three
|
||||||
|
195 Hundred ninety-five
|
||||||
|
199 Hundred ninety-nine
|
||||||
|
SELECT * FROM tp;
|
||||||
|
a b
|
||||||
|
112 Hundred twelve
|
||||||
|
114 Hundred fourteen
|
||||||
|
116 Hundred sixteen
|
||||||
|
118 Hundred eightteen
|
||||||
|
12 twelve
|
||||||
|
122 Hundred twenty-two
|
||||||
|
124 Hundred twenty-four
|
||||||
|
126 Hundred twenty-six
|
||||||
|
128 Hundred twenty-eight
|
||||||
|
14 Fourteen
|
||||||
|
16 Sixteen
|
||||||
|
162 Hundred sixty-two
|
||||||
|
164 Hundred sixty-four
|
||||||
|
166 Hundred sixty-six
|
||||||
|
168 Hundred sixty-eight
|
||||||
|
18 Eightteen
|
||||||
|
182 Hundred eighty-two
|
||||||
|
184 Hundred eighty-four
|
||||||
|
186 Hundred eighty-six
|
||||||
|
188 Hundred eighty-eight
|
||||||
|
2 Two
|
||||||
|
4 Four
|
||||||
|
6 Six
|
||||||
|
8 Eight
|
||||||
|
SELECT * FROM tsp;
|
||||||
|
a b
|
||||||
|
112 Hundred twelve
|
||||||
|
114 Hundred fourteen
|
||||||
|
116 Hundred sixteen
|
||||||
|
118 Hundred eightteen
|
||||||
|
12 twelve
|
||||||
|
122 Hundred twenty-two
|
||||||
|
124 Hundred twenty-four
|
||||||
|
126 Hundred twenty-six
|
||||||
|
128 Hundred twenty-eight
|
||||||
|
14 Fourteen
|
||||||
|
16 Sixteen
|
||||||
|
162 Hundred sixty-two
|
||||||
|
164 Hundred sixty-four
|
||||||
|
166 Hundred sixty-six
|
||||||
|
168 Hundred sixty-eight
|
||||||
|
18 Eightteen
|
||||||
|
182 Hundred eight-two
|
||||||
|
184 Hundred eighty-four
|
||||||
|
186 Hundred eighty-six
|
||||||
|
188 Hundred eighty-eight
|
||||||
|
2 Two
|
||||||
|
4 Four
|
||||||
|
6 Six
|
||||||
|
8 Eight
|
||||||
|
SELECT * FROM tsp_00;
|
||||||
|
a b
|
||||||
|
5 Five
|
||||||
|
SELECT * FROM tsp_01;
|
||||||
|
a b
|
||||||
|
1 One
|
||||||
|
SELECT * FROM tsp_02;
|
||||||
|
a b
|
||||||
|
SELECT * FROM tsp_03;
|
||||||
|
a b
|
||||||
|
3 Three
|
||||||
|
SELECT * FROM tsp_04;
|
||||||
|
a b
|
||||||
|
9 Nine
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MariaDB
|
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MariaDB
|
||||||
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
||||||
|
@ -1,8 +1,61 @@
|
|||||||
CREATE USER test2@localhost;
|
CREATE USER test2@localhost;
|
||||||
|
CREATE TABLE t_10 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_100 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_1000 (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_empty (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE t_null (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM;
|
||||||
|
CREATE TABLE tp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10) ,
|
||||||
|
PARTITION p1 VALUES LESS THAN (100) ,
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000) );
|
||||||
|
CREATE TABLE tsp (a INT, b VARCHAR(55), PRIMARY KEY (a)) ENGINE = MYISAM
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
SUBPARTITION BY HASH(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (10)
|
||||||
|
(SUBPARTITION sp00,
|
||||||
|
SUBPARTITION sp01,
|
||||||
|
SUBPARTITION sp02,
|
||||||
|
SUBPARTITION sp03,
|
||||||
|
SUBPARTITION sp04), PARTITION p1 VALUES LESS THAN (100)
|
||||||
|
(SUBPARTITION sp10 ,
|
||||||
|
SUBPARTITION sp11 ,
|
||||||
|
SUBPARTITION sp12 ,
|
||||||
|
SUBPARTITION sp13 ,
|
||||||
|
SUBPARTITION sp14 ),
|
||||||
|
PARTITION p2 VALUES LESS THAN (1000)
|
||||||
|
(SUBPARTITION sp20,
|
||||||
|
SUBPARTITION sp21,
|
||||||
|
SUBPARTITION sp22,
|
||||||
|
SUBPARTITION sp23,
|
||||||
|
SUBPARTITION sp24));
|
||||||
|
INSERT INTO t_10 VALUES (1, "One"), (3, "Three"), (5, "Five"), (9, "Nine");
|
||||||
|
INSERT INTO t_100 VALUES (11, "Eleven"), (13, "Thirdteen"), (15, "Fifeteen"), (19, "Nineteen");
|
||||||
|
INSERT INTO t_100 VALUES (91, "Ninety-one"), (93, "Ninety-three"), (95, "Ninety-five"), (99, "Ninety-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (111, "Hundred elven"), (113, "Hundred thirdteen"), (115, "Hundred fiveteen"), (119, "Hundred nineteen");
|
||||||
|
INSERT INTO t_1000 VALUES (131, "Hundred thirty-one"), (133, "Hundred thirty-three"), (135, "Hundred thirty-five"), (139, "Hundred thirty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (151, "Hundred fifty-one"), (153, "Hundred fifty-three"), (155, "Hundred fity-five"), (159, "Hundred fifty-nine");
|
||||||
|
INSERT INTO t_1000 VALUES (191, "Hundred ninety-one"), (193, "Hundred ninety-three"), (195, "Hundred ninety-five"), (199, "Hundred ninety-nine");
|
||||||
|
INSERT INTO t_null VALUES (1, "NULL");
|
||||||
|
INSERT INTO tp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tp VALUES (182, "Hundred eighty-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
INSERT INTO tsp VALUES (2, "Two"), (4, "Four"), (6, "Six"), (8, "Eight");
|
||||||
|
INSERT INTO tsp VALUES (12, "twelve"), (14, "Fourteen"), (16, "Sixteen"), (18, "Eightteen");
|
||||||
|
INSERT INTO tsp VALUES (112, "Hundred twelve"), (114, "Hundred fourteen"), (116, "Hundred sixteen"), (118, "Hundred eightteen");
|
||||||
|
INSERT INTO tsp VALUES (122, "Hundred twenty-two"), (124, "Hundred twenty-four"), (126, "Hundred twenty-six"), (128, "Hundred twenty-eight");
|
||||||
|
INSERT INTO tsp VALUES (162, "Hundred sixty-two"), (164, "Hundred sixty-four"), (166, "Hundred sixty-six"), (168, "Hundred sixty-eight");
|
||||||
|
INSERT INTO tsp VALUES (182, "Hundred eight-two"), (184, "Hundred eighty-four"), (186, "Hundred eighty-six"), (188, "Hundred eighty-eight");
|
||||||
|
CREATE TABLE tsp_01(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 1;
|
||||||
|
CREATE TABLE tsp_02(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 2;
|
||||||
|
CREATE TABLE tsp_03(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 3;
|
||||||
|
CREATE TABLE tsp_04(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 4;
|
||||||
|
CREATE TABLE tsp_00(a INT,b VARCHAR(55),PRIMARY KEY (a)) ENGINE = MYISAM AS SELECT a, b FROM t_10 WHERE MOD(a,5)= 0;
|
||||||
GRANT USAGE ON *.* TO test2@localhost;
|
GRANT USAGE ON *.* TO test2@localhost;
|
||||||
GRANT CREATE, DROP, ALTER, UPDATE, INSERT, SELECT ON test.* TO test2@localhost;
|
GRANT CREATE, DROP, ALTER, UPDATE, INSERT, SELECT ON test.* TO test2@localhost;
|
||||||
connect test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
|
||||||
USE test;
|
|
||||||
SHOW GRANTS FOR CURRENT_USER;
|
SHOW GRANTS FOR CURRENT_USER;
|
||||||
Grants for test2@localhost
|
Grants for test2@localhost
|
||||||
GRANT USAGE ON *.* TO 'test2'@'localhost'
|
GRANT USAGE ON *.* TO 'test2'@'localhost'
|
||||||
@ -53,10 +106,7 @@ a b
|
|||||||
4 Four
|
4 Four
|
||||||
6 Six
|
6 Six
|
||||||
8 Eight
|
8 Eight
|
||||||
disconnect test2;
|
|
||||||
connection default;
|
|
||||||
REVOKE INSERT ON test.* FROM test2@localhost;
|
REVOKE INSERT ON test.* FROM test2@localhost;
|
||||||
connect test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
|
||||||
USE test;
|
USE test;
|
||||||
SHOW GRANTS FOR CURRENT_USER;
|
SHOW GRANTS FOR CURRENT_USER;
|
||||||
Grants for test2@localhost
|
Grants for test2@localhost
|
||||||
@ -64,11 +114,8 @@ GRANT USAGE ON *.* TO 'test2'@'localhost'
|
|||||||
GRANT SELECT, UPDATE, CREATE, DROP, ALTER ON `test`.* TO 'test2'@'localhost'
|
GRANT SELECT, UPDATE, CREATE, DROP, ALTER ON `test`.* TO 'test2'@'localhost'
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
ERROR 42000: INSERT command denied to user 'test2'@'localhost' for table 'tp'
|
ERROR 42000: INSERT command denied to user 'test2'@'localhost' for table 'tp'
|
||||||
disconnect test2;
|
|
||||||
connection default;
|
|
||||||
GRANT INSERT ON test.* TO test2@localhost;
|
GRANT INSERT ON test.* TO test2@localhost;
|
||||||
REVOKE CREATE ON test.* FROM test2@localhost;
|
REVOKE CREATE ON test.* FROM test2@localhost;
|
||||||
connect test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
|
||||||
USE test;
|
USE test;
|
||||||
SHOW GRANTS FOR CURRENT_USER;
|
SHOW GRANTS FOR CURRENT_USER;
|
||||||
Grants for test2@localhost
|
Grants for test2@localhost
|
||||||
@ -76,20 +123,14 @@ GRANT USAGE ON *.* TO 'test2'@'localhost'
|
|||||||
GRANT SELECT, INSERT, UPDATE, DROP, ALTER ON `test`.* TO 'test2'@'localhost'
|
GRANT SELECT, INSERT, UPDATE, DROP, ALTER ON `test`.* TO 'test2'@'localhost'
|
||||||
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
||||||
ERROR 42000: CREATE command denied to user 'test2'@'localhost' for table 'tsp'
|
ERROR 42000: CREATE command denied to user 'test2'@'localhost' for table 'tsp'
|
||||||
disconnect test2;
|
|
||||||
connection default;
|
|
||||||
GRANT CREATE ON test.* TO test2@localhost;
|
GRANT CREATE ON test.* TO test2@localhost;
|
||||||
REVOKE DROP ON test.* FROM test2@localhost;
|
REVOKE DROP ON test.* FROM test2@localhost;
|
||||||
connect test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
|
||||||
USE test;
|
|
||||||
SHOW GRANTS FOR CURRENT_USER;
|
SHOW GRANTS FOR CURRENT_USER;
|
||||||
Grants for test2@localhost
|
Grants for test2@localhost
|
||||||
GRANT USAGE ON *.* TO 'test2'@'localhost'
|
GRANT USAGE ON *.* TO 'test2'@'localhost'
|
||||||
GRANT SELECT, INSERT, UPDATE, CREATE, ALTER ON `test`.* TO 'test2'@'localhost'
|
GRANT SELECT, INSERT, UPDATE, CREATE, ALTER ON `test`.* TO 'test2'@'localhost'
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
ERROR 42000: DROP command denied to user 'test2'@'localhost' for table 'tp'
|
ERROR 42000: DROP command denied to user 'test2'@'localhost' for table 'tp'
|
||||||
disconnect test2;
|
|
||||||
connection default;
|
|
||||||
DROP TABLE IF EXISTS t_10;
|
DROP TABLE IF EXISTS t_10;
|
||||||
DROP TABLE IF EXISTS t_100;
|
DROP TABLE IF EXISTS t_100;
|
||||||
DROP TABLE IF EXISTS t_1000;
|
DROP TABLE IF EXISTS t_1000;
|
||||||
|
@ -1,21 +1,17 @@
|
|||||||
# Author: Horst Hunger
|
# Author: Horst Hunger
|
||||||
# Created: 2010-07-05
|
# Created: 2010-07-05
|
||||||
|
|
||||||
--source include/have_innodb.inc
|
source include/have_innodb.inc;
|
||||||
--source include/have_partition.inc
|
source include/have_partition.inc;
|
||||||
|
|
||||||
let $engine_table= MYISAM;
|
let $engine_table= MYISAM;
|
||||||
let $engine_part= InnoDB;
|
let $engine_part= InnoDB;
|
||||||
let $engine_subpart= InnoDB;
|
let $engine_subpart= InnoDB;
|
||||||
|
|
||||||
--disable_result_log
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
--disable_query_log
|
|
||||||
--source suite/parts/inc/part_exch_tabs.inc
|
|
||||||
--enable_result_log
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
--error 1497
|
error ER_MIX_HANDLER_ERROR;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
|
|
||||||
--source suite/parts/inc/part_exch_drop_tabs.inc
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
|
|
||||||
|
@ -1,94 +1,66 @@
|
|||||||
# Author: Horst Hunger
|
# Author: Horst Hunger
|
||||||
# Created: 2010-07-13
|
# Created: 2010-07-13
|
||||||
|
|
||||||
--source include/not_windows.inc
|
source include/not_windows.inc;
|
||||||
--source include/have_partition.inc
|
source include/have_partition.inc;
|
||||||
--source include/have_symlink.inc
|
source include/have_symlink.inc;
|
||||||
|
|
||||||
let $engine_table= MYISAM;
|
let $engine_table= MYISAM;
|
||||||
let $engine_part= MYISAM;
|
let $engine_part= MYISAM;
|
||||||
let $engine_subpart= MYISAM;
|
let $engine_subpart= MYISAM;
|
||||||
|
|
||||||
# DATA DIRECTORY
|
|
||||||
# Make directory for partition data
|
|
||||||
let $data_dir_path= $MYSQLTEST_VARDIR/mysql-test-data-dir;
|
let $data_dir_path= $MYSQLTEST_VARDIR/mysql-test-data-dir;
|
||||||
--mkdir $data_dir_path
|
|
||||||
let $p_data_directory= DATA DIRECTORY = '$data_dir_path';
|
|
||||||
let $data_directory= DATA DIRECTORY = '$data_dir_path';
|
|
||||||
|
|
||||||
# INDEX DIRECTORY
|
|
||||||
# Make directory for partition index
|
|
||||||
let $idx_dir_path= $MYSQLTEST_VARDIR/mysql-test-idx-dir;
|
let $idx_dir_path= $MYSQLTEST_VARDIR/mysql-test-idx-dir;
|
||||||
--mkdir $idx_dir_path
|
mkdir $data_dir_path;
|
||||||
let $p_index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
mkdir $idx_dir_path;
|
||||||
let $index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
|
||||||
|
|
||||||
use test;
|
echo # === Data/Index directories are identical;
|
||||||
|
let $p_data_directory= DATA DIRECTORY = '$data_dir_path';
|
||||||
|
let $data_directory= DATA DIRECTORY = '$data_dir_path';
|
||||||
|
let $p_index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
||||||
|
let $index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
||||||
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
|
|
||||||
--disable_result_log
|
echo # === partition has directories, the table does not;
|
||||||
--disable_query_log
|
let $p_data_directory= DATA DIRECTORY = '$data_dir_path';
|
||||||
--source suite/parts/inc/part_exch_tabs.inc
|
let $data_directory= ;
|
||||||
--enable_result_log
|
let $p_index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
||||||
--enable_query_log
|
let $index_directory= ;
|
||||||
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
|
error ER_TABLES_DIFFERENT_METADATA;
|
||||||
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
|
|
||||||
--error ER_TABLES_DIFFERENT_METADATA
|
echo # === the table has directories, partition does not;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
let $p_data_directory= ;
|
||||||
|
let $data_directory= DATA DIRECTORY = '$data_dir_path';
|
||||||
|
let $p_index_directory= ;
|
||||||
|
let $index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
||||||
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
|
error ER_TABLES_DIFFERENT_METADATA;
|
||||||
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
|
|
||||||
--source suite/parts/inc/part_exch_drop_tabs.inc
|
echo # === data directory differs;
|
||||||
--rmdir $data_dir_path
|
let $p_data_directory= DATA DIRECTORY = '$data_dir_path';
|
||||||
--rmdir $idx_dir_path
|
let $data_directory= DATA DIRECTORY = '$idx_dir_path';
|
||||||
|
let $p_index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
||||||
|
let $index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
||||||
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
|
error ER_TABLES_DIFFERENT_METADATA;
|
||||||
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
|
|
||||||
# DATA DIRECTORY
|
echo # === index directory differs;
|
||||||
# Make directory for partition data
|
let $p_data_directory= DATA DIRECTORY = '$data_dir_path';
|
||||||
let $data_dir_path= $MYSQLTEST_VARDIR/mysql-test-data-dir;
|
let $data_directory= DATA DIRECTORY = '$data_dir_path';
|
||||||
--mkdir $data_dir_path
|
let $p_index_directory= DATA DIRECTORY = '$data_dir_path';
|
||||||
let $p_data_directory= DATA DIRECTORY = '$data_dir_path';
|
let $index_directory= DATA DIRECTORY = '$idx_dir_path';
|
||||||
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
# INDEX DIRECTORY
|
error ER_TABLES_DIFFERENT_METADATA;
|
||||||
# Make directory for partition index
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
let $idx_dir_path= $MYSQLTEST_VARDIR/mysql-test-idx-dir;
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
--mkdir $idx_dir_path
|
|
||||||
let $p_index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
|
||||||
|
|
||||||
use test;
|
|
||||||
|
|
||||||
--disable_result_log
|
|
||||||
--disable_query_log
|
|
||||||
--source suite/parts/inc/part_exch_tabs.inc
|
|
||||||
--enable_result_log
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
--error ER_TABLES_DIFFERENT_METADATA
|
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
|
||||||
|
|
||||||
--source suite/parts/inc/part_exch_drop_tabs.inc
|
|
||||||
--rmdir $data_dir_path
|
|
||||||
--rmdir $idx_dir_path
|
|
||||||
|
|
||||||
# DATA DIRECTORY
|
|
||||||
# Make directory for partition data
|
|
||||||
let $data_dir_path= $MYSQLTEST_VARDIR/mysql-test-data-dir;
|
|
||||||
--mkdir $data_dir_path
|
|
||||||
let $data_directory= DATA DIRECTORY = '$data_dir_path';
|
|
||||||
|
|
||||||
# INDEX DIRECTORY
|
|
||||||
# Make directory for partition index
|
|
||||||
let $idx_dir_path= $MYSQLTEST_VARDIR/mysql-test-idx-dir;
|
|
||||||
--mkdir $idx_dir_path
|
|
||||||
let $index_directory= INDEX DIRECTORY = '$idx_dir_path';
|
|
||||||
|
|
||||||
use test;
|
|
||||||
|
|
||||||
--disable_result_log
|
|
||||||
--disable_query_log
|
|
||||||
--source suite/parts/inc/part_exch_tabs.inc
|
|
||||||
--enable_result_log
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
--error ER_TABLES_DIFFERENT_METADATA
|
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
|
||||||
|
|
||||||
--source suite/parts/inc/part_exch_drop_tabs.inc
|
|
||||||
--rmdir $data_dir_path
|
|
||||||
--rmdir $idx_dir_path
|
|
||||||
|
|
||||||
|
rmdir $idx_dir_path;
|
||||||
|
rmdir $data_dir_path;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Author: Horst Hunger
|
# Author: Horst Hunger
|
||||||
# Created: 2010-07-15
|
# Created: 2010-07-15
|
||||||
|
|
||||||
--source include/have_innodb.inc
|
source include/have_innodb.inc;
|
||||||
--source include/have_partition.inc
|
source include/have_partition.inc;
|
||||||
|
|
||||||
let $engine_table= InnoDB;
|
let $engine_table= InnoDB;
|
||||||
let $engine_part= InnoDB;
|
let $engine_part= InnoDB;
|
||||||
@ -10,11 +10,7 @@ let $engine_subpart= InnoDB;
|
|||||||
|
|
||||||
use test;
|
use test;
|
||||||
|
|
||||||
--disable_result_log
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
--disable_query_log
|
|
||||||
--source suite/parts/inc/part_exch_tabs.inc
|
|
||||||
--enable_result_log
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
# 21) Foreign Key.
|
# 21) Foreign Key.
|
||||||
# Exchange of partition with table differing in structure.
|
# Exchange of partition with table differing in structure.
|
||||||
@ -22,10 +18,8 @@ CREATE TABLE t_11 (a INT, b VARCHAR(55),
|
|||||||
FOREIGN KEY (a) REFERENCES t_10 (a) ON DELETE CASCADE)
|
FOREIGN KEY (a) REFERENCES t_10 (a) ON DELETE CASCADE)
|
||||||
ENGINE= InnoDB;
|
ENGINE= InnoDB;
|
||||||
#--error ER_TABLES_DIFFERENT_METADATA
|
#--error ER_TABLES_DIFFERENT_METADATA
|
||||||
--error ER_PARTITION_EXCHANGE_FOREIGN_KEY
|
error ER_PARTITION_EXCHANGE_FOREIGN_KEY;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
--disable_warnings
|
DROP TABLE t_11;
|
||||||
DROP TABLE IF EXISTS t_11;
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
--enable_warnings
|
|
||||||
--source suite/parts/inc/part_exch_drop_tabs.inc
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Author: Horst Hunger
|
# Author: Horst Hunger
|
||||||
# Created: 2010-07-05
|
# Created: 2010-07-05
|
||||||
|
|
||||||
--source include/have_partition.inc
|
source include/have_partition.inc;
|
||||||
|
|
||||||
let $engine_table= MYISAM;
|
let $engine_table= MYISAM;
|
||||||
let $engine_part= MYISAM;
|
let $engine_part= MYISAM;
|
||||||
@ -9,72 +9,61 @@ let $engine_subpart= MYISAM;
|
|||||||
|
|
||||||
use test;
|
use test;
|
||||||
|
|
||||||
--disable_result_log
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
--disable_query_log
|
|
||||||
--source suite/parts/inc/part_exch_tabs.inc
|
|
||||||
--enable_result_log
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM t_10;
|
SELECT * FROM t_10;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM t_100;
|
SELECT * FROM t_100;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM t_1000;
|
SELECT * FROM t_1000;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tp;
|
SELECT * FROM tp;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp;
|
SELECT * FROM tsp;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_00;
|
SELECT * FROM tsp_00;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_01;
|
SELECT * FROM tsp_01;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_02;
|
SELECT * FROM tsp_02;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_03;
|
SELECT * FROM tsp_03;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_04;
|
SELECT * FROM tsp_04;
|
||||||
|
|
||||||
# 3) Invalid exchanges.
|
# 3) Invalid exchanges.
|
||||||
# Exchange of partition with table differing in structure.
|
# Exchange of partition with table differing in structure.
|
||||||
CREATE TABLE t_11(a INT,b VARCHAR(55)) SELECT * FROM t_10;
|
CREATE TABLE t_11(a INT,b VARCHAR(55)) SELECT * FROM t_10;
|
||||||
--error ER_TABLES_DIFFERENT_METADATA
|
error ER_TABLES_DIFFERENT_METADATA;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
--disable_warnings
|
DROP TABLE t_11;
|
||||||
DROP TABLE IF EXISTS t_11;
|
|
||||||
--enable_warnings
|
|
||||||
eval CREATE TABLE t_11(a INT,b CHAR(55),PRIMARY KEY(a)) ENGINE= $engine_table SELECT * FROM t_10;
|
eval CREATE TABLE t_11(a INT,b CHAR(55),PRIMARY KEY(a)) ENGINE= $engine_table SELECT * FROM t_10;
|
||||||
--error ER_TABLES_DIFFERENT_METADATA
|
error ER_TABLES_DIFFERENT_METADATA;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
--disable_warnings
|
DROP TABLE t_11;
|
||||||
DROP TABLE IF EXISTS t_11;
|
|
||||||
CREATE TABLE t_11(a INT,b VARCHAR(55),PRIMARY KEY(a)) ENGINE= MEMORY SELECT * FROM t_10;
|
CREATE TABLE t_11(a INT,b VARCHAR(55),PRIMARY KEY(a)) ENGINE= MEMORY SELECT * FROM t_10;
|
||||||
--error ER_MIX_HANDLER_ERROR
|
error ER_MIX_HANDLER_ERROR;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
--disable_warnings
|
DROP TABLE t_11;
|
||||||
DROP TABLE IF EXISTS t_11;
|
|
||||||
--enable_warnings
|
|
||||||
# Exchange of partition with partitioned table.
|
# Exchange of partition with partitioned table.
|
||||||
eval CREATE TABLE t_11(a INT,b CHAR(55),PRIMARY KEY(a)) ENGINE= $engine_table
|
eval CREATE TABLE t_11(a INT,b CHAR(55),PRIMARY KEY(a)) ENGINE= $engine_table
|
||||||
PARTITION BY KEY() AS SELECT * FROM t_10;
|
PARTITION BY KEY() AS SELECT * FROM t_10;
|
||||||
--error ER_PARTITION_EXCHANGE_PART_TABLE
|
error ER_PARTITION_EXCHANGE_PART_TABLE;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_11;
|
||||||
--disable_warnings
|
DROP TABLE t_11;
|
||||||
DROP TABLE IF EXISTS t_11;
|
|
||||||
--enable_warnings
|
|
||||||
# Exchange of subpartition with partitioned table.
|
# Exchange of subpartition with partitioned table.
|
||||||
--error ER_PARTITION_EXCHANGE_PART_TABLE
|
error ER_PARTITION_EXCHANGE_PART_TABLE;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE tsp;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE tsp;
|
||||||
# Exchange of subpartitioned partition with table.
|
# Exchange of subpartitioned partition with table.
|
||||||
--error ER_PARTITION_INSTEAD_OF_SUBPARTITION
|
error ER_PARTITION_INSTEAD_OF_SUBPARTITION;
|
||||||
ALTER TABLE tsp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tsp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
# Exchange of values in partition not fitting the hash.
|
# Exchange of values in partition not fitting the hash.
|
||||||
--error ER_ROW_DOES_NOT_MATCH_PARTITION
|
error ER_ROW_DOES_NOT_MATCH_PARTITION;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_100;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_100;
|
||||||
# Exchange of values in subpartition not fitting the hash.
|
# Exchange of values in subpartition not fitting the hash.
|
||||||
--error ER_ROW_DOES_NOT_MATCH_PARTITION
|
error ER_ROW_DOES_NOT_MATCH_PARTITION;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p2 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p2 WITH TABLE t_10;
|
||||||
|
|
||||||
--source suite/parts/inc/part_exch_drop_tabs.inc
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Author: Horst Hunger
|
# Author: Horst Hunger
|
||||||
# Created: 2010-07-05
|
# Created: 2010-07-05
|
||||||
|
|
||||||
--source include/have_partition.inc
|
source include/have_partition.inc;
|
||||||
--source include/have_innodb.inc
|
source include/have_innodb.inc;
|
||||||
|
|
||||||
let $engine_table= MYISAM;
|
let $engine_table= MYISAM;
|
||||||
let $engine_part= InnoDB;
|
let $engine_part= InnoDB;
|
||||||
@ -10,38 +10,34 @@ let $engine_subpart= InnoDB;
|
|||||||
|
|
||||||
use test;
|
use test;
|
||||||
|
|
||||||
--disable_result_log
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
--disable_query_log
|
|
||||||
--source suite/parts/inc/part_exch_tabs.inc
|
|
||||||
|
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM t_10;
|
SELECT * FROM t_10;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM t_100;
|
SELECT * FROM t_100;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM t_1000;
|
SELECT * FROM t_1000;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tp;
|
SELECT * FROM tp;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp;
|
SELECT * FROM tsp;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_00;
|
SELECT * FROM tsp_00;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_01;
|
SELECT * FROM tsp_01;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_02;
|
SELECT * FROM tsp_02;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_03;
|
SELECT * FROM tsp_03;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_04;
|
SELECT * FROM tsp_04;
|
||||||
--enable_result_log
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
# 5) Exchanges with different engines.
|
# 5) Exchanges with different engines.
|
||||||
--error ER_MIX_HANDLER_ERROR
|
error ER_MIX_HANDLER_ERROR;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
--error ER_MIX_HANDLER_ERROR
|
error ER_MIX_HANDLER_ERROR;
|
||||||
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
||||||
|
|
||||||
--source suite/parts/inc/part_exch_drop_tabs.inc
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Author: Horst Hunger
|
# Author: Horst Hunger
|
||||||
# Created: 2010-07-06
|
# Created: 2010-07-06
|
||||||
|
|
||||||
--source include/not_embedded.inc
|
source include/not_embedded.inc;
|
||||||
--source include/have_partition.inc
|
source include/have_partition.inc;
|
||||||
|
|
||||||
let $engine_table= MYISAM;
|
let $engine_table= MYISAM;
|
||||||
let $engine_part= MYISAM;
|
let $engine_part= MYISAM;
|
||||||
@ -10,41 +10,36 @@ let $engine_subpart= MYISAM;
|
|||||||
|
|
||||||
CREATE USER test2@localhost;
|
CREATE USER test2@localhost;
|
||||||
|
|
||||||
--disable_result_log
|
source suite/parts/inc/part_exch_tabs.inc;
|
||||||
--disable_query_log
|
|
||||||
--source suite/parts/inc/part_exch_tabs.inc
|
|
||||||
--enable_result_log
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
GRANT USAGE ON *.* TO test2@localhost;
|
GRANT USAGE ON *.* TO test2@localhost;
|
||||||
GRANT CREATE, DROP, ALTER, UPDATE, INSERT, SELECT ON test.* TO test2@localhost;
|
GRANT CREATE, DROP, ALTER, UPDATE, INSERT, SELECT ON test.* TO test2@localhost;
|
||||||
|
|
||||||
connect (test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
USE test;
|
|
||||||
SHOW GRANTS FOR CURRENT_USER;
|
SHOW GRANTS FOR CURRENT_USER;
|
||||||
# 9) Exchanges with different owner.
|
# 9) Exchanges with different owner.
|
||||||
# Privilege for ALTER and SELECT
|
# Privilege for ALTER and SELECT
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM t_10;
|
SELECT * FROM t_10;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tp WHERE a BETWEEN 0 AND 10;
|
SELECT * FROM tp WHERE a BETWEEN 0 AND 10;
|
||||||
# Back to former values.
|
# Back to former values.
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM t_10;
|
SELECT * FROM t_10;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tp WHERE a BETWEEN 0 AND 10;
|
SELECT * FROM tp WHERE a BETWEEN 0 AND 10;
|
||||||
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_00;
|
SELECT * FROM tsp_00;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp WHERE a BETWEEN 0 AND 10;
|
SELECT * FROM tsp WHERE a BETWEEN 0 AND 10;
|
||||||
# Back to former values.
|
# Back to former values.
|
||||||
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp_00;
|
SELECT * FROM tsp_00;
|
||||||
--sorted_result
|
sorted_result;
|
||||||
SELECT * FROM tsp WHERE a BETWEEN 0 AND 10;
|
SELECT * FROM tsp WHERE a BETWEEN 0 AND 10;
|
||||||
disconnect test2;
|
disconnect test2;
|
||||||
|
|
||||||
@ -55,7 +50,7 @@ connect (test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
|||||||
USE test;
|
USE test;
|
||||||
SHOW GRANTS FOR CURRENT_USER;
|
SHOW GRANTS FOR CURRENT_USER;
|
||||||
# Privilege for ALTER and SELECT
|
# Privilege for ALTER and SELECT
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
error ER_TABLEACCESS_DENIED_ERROR;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
disconnect test2;
|
disconnect test2;
|
||||||
|
|
||||||
@ -66,7 +61,7 @@ REVOKE CREATE ON test.* FROM test2@localhost;
|
|||||||
connect (test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
USE test;
|
USE test;
|
||||||
SHOW GRANTS FOR CURRENT_USER;
|
SHOW GRANTS FOR CURRENT_USER;
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
error ER_TABLEACCESS_DENIED_ERROR;
|
||||||
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
|
||||||
disconnect test2;
|
disconnect test2;
|
||||||
|
|
||||||
@ -75,15 +70,14 @@ GRANT CREATE ON test.* TO test2@localhost;
|
|||||||
REVOKE DROP ON test.* FROM test2@localhost;
|
REVOKE DROP ON test.* FROM test2@localhost;
|
||||||
|
|
||||||
connect (test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
USE test;
|
|
||||||
SHOW GRANTS FOR CURRENT_USER;
|
SHOW GRANTS FOR CURRENT_USER;
|
||||||
# Privilege for ALTER and SELECT
|
# Privilege for ALTER and SELECT
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
error ER_TABLEACCESS_DENIED_ERROR;
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
disconnect test2;
|
disconnect test2;
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
--source suite/parts/inc/part_exch_drop_tabs.inc
|
source suite/parts/inc/part_exch_drop_tabs.inc;
|
||||||
|
|
||||||
DROP USER test2@localhost;
|
DROP USER test2@localhost;
|
||||||
|
24
mysql-test/suite/rpl/r/rpl_sp_variables.result
Normal file
24
mysql-test/suite/rpl/r/rpl_sp_variables.result
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
include/master-slave.inc
|
||||||
|
[connection master]
|
||||||
|
#
|
||||||
|
# MDEV-13685 Can not replay binary log due to Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation 'concat'
|
||||||
|
#
|
||||||
|
SET NAMES utf8;
|
||||||
|
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8);
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_id INT DEFAULT 2017;
|
||||||
|
INSERT INTO test.t1 SELECT CONCAT(v_id, '오');
|
||||||
|
END;
|
||||||
|
$$
|
||||||
|
CALL p1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
2017오
|
||||||
|
SET NAMES utf8;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
2017오
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
include/rpl_end.inc
|
28
mysql-test/suite/rpl/t/rpl_sp_variables.test
Normal file
28
mysql-test/suite/rpl/t/rpl_sp_variables.test
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
source include/master-slave.inc;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-13685 Can not replay binary log due to Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation 'concat'
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
SET NAMES utf8;
|
||||||
|
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8);
|
||||||
|
DELIMITER $$;
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_id INT DEFAULT 2017;
|
||||||
|
INSERT INTO test.t1 SELECT CONCAT(v_id, '오');
|
||||||
|
END;
|
||||||
|
$$
|
||||||
|
DELIMITER ;$$
|
||||||
|
CALL p1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
SET NAMES utf8;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
connection master;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
--source include/rpl_end.inc
|
@ -120,6 +120,35 @@ select count(distinct user_id) from t1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
set @@tmp_table_size = default;
|
set @@tmp_table_size = default;
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13457: Wrong result for aggregate function with distinct clause when the value for
|
||||||
|
# tmp_table_size is small
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (
|
||||||
|
a VARCHAR(1020),
|
||||||
|
b int
|
||||||
|
);
|
||||||
|
insert into t1 values
|
||||||
|
( 0 , 1 ),
|
||||||
|
( 1 , 2 ),
|
||||||
|
( 2 , 3 ),
|
||||||
|
( 3 , 4 ),
|
||||||
|
( 4 , 5 ),
|
||||||
|
( 5 , 6 ),
|
||||||
|
( 6 , 7 ),
|
||||||
|
( 7 , 8 ),
|
||||||
|
( 8 , 9 ),
|
||||||
|
( 9 , 10 ),
|
||||||
|
( 0 , 11 ),
|
||||||
|
( 1 , 12 ),
|
||||||
|
( 2 , 13 ),
|
||||||
|
( 3 , 14 );
|
||||||
|
set @@tmp_table_size=1024;
|
||||||
|
select count(distinct a) from t1;
|
||||||
|
drop table t1;
|
||||||
|
set @@tmp_table_size = default;
|
||||||
|
|
||||||
#
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
|
@ -1092,6 +1092,17 @@ select release_lock('test');
|
|||||||
--echo # -- Done.
|
--echo # -- Done.
|
||||||
--echo
|
--echo
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-13685 Can not replay binary log due to Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation 'concat'
|
||||||
|
--echo #
|
||||||
|
SET NAMES utf8;
|
||||||
|
SELECT COERCIBILITY(NAME_CONST('name','test'));
|
||||||
|
SELECT COERCIBILITY(NAME_CONST('name',TIME'00:00:00'));
|
||||||
|
SELECT COERCIBILITY(NAME_CONST('name',15));
|
||||||
|
SELECT CONCAT(NAME_CONST('name',15),'오');
|
||||||
|
SET NAMES latin1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Start of 10.2 tests
|
--echo # Start of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
# check that CSV engine was compiled in
|
# check that CSV engine was compiled in
|
||||||
--source include/have_csv.inc
|
--source include/have_csv.inc
|
||||||
|
|
||||||
|
set @log_output.saved = @@global.log_output;
|
||||||
set @@global.log_output = 'TABLE';
|
set @@global.log_output = 'TABLE';
|
||||||
|
|
||||||
connect (con1,localhost,root,,);
|
connect (con1,localhost,root,,);
|
||||||
@ -21,13 +22,13 @@ select get_lock('bug27638', 1);
|
|||||||
connection con2;
|
connection con2;
|
||||||
set session long_query_time=1;
|
set session long_query_time=1;
|
||||||
select get_lock('bug27638', 2);
|
select get_lock('bug27638', 2);
|
||||||
select if (query_time >= '00:00:01', 'OK', 'WRONG') as qt, sql_text from mysql.slow_log
|
select if (query_time >= '00:00:01', 'OK', concat('WRONG: ',query_time)) as qt, sql_text from mysql.slow_log
|
||||||
where sql_text = 'select get_lock(\'bug27638\', 2)';
|
where sql_text = 'select get_lock(\'bug27638\', 2)';
|
||||||
select get_lock('bug27638', 60);
|
select get_lock('bug27638', 60);
|
||||||
select if (query_time >= '00:00:59', 'OK', 'WRONG') as qt, sql_text from mysql.slow_log
|
select if (query_time >= '00:00:59', 'OK', concat('WRONG: ',query_time)) as qt, sql_text from mysql.slow_log
|
||||||
where sql_text = 'select get_lock(\'bug27638\', 60)';
|
where sql_text = 'select get_lock(\'bug27638\', 60)';
|
||||||
select get_lock('bug27638', 101);
|
select get_lock('bug27638', 101);
|
||||||
select if (query_time >= '00:01:40', 'OK', 'WRONG') as qt, sql_text from mysql.slow_log
|
select if (query_time >= '00:01:40', 'OK', concat('WRONG: ',query_time)) as qt, sql_text from mysql.slow_log
|
||||||
where sql_text = 'select get_lock(\'bug27638\', 101)';
|
where sql_text = 'select get_lock(\'bug27638\', 101)';
|
||||||
connection con1;
|
connection con1;
|
||||||
select release_lock('bug27638');
|
select release_lock('bug27638');
|
||||||
@ -36,4 +37,4 @@ connection default;
|
|||||||
disconnect con1;
|
disconnect con1;
|
||||||
disconnect con2;
|
disconnect con2;
|
||||||
|
|
||||||
set @@global.log_output=default;
|
set @@global.log_output = @log_output.saved;
|
||||||
|
@ -38,11 +38,10 @@ SHOW CREATE TABLE t1;
|
|||||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||||
SHOW CREATE TABLE t2;
|
SHOW CREATE TABLE t2;
|
||||||
INSERT INTO t1 VALUES (0), (1), (2);
|
INSERT INTO t1 VALUES (0), (1), (2);
|
||||||
--error ER_TABLES_DIFFERENT_METADATA
|
|
||||||
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
|
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
|
||||||
--error ER_TABLES_DIFFERENT_METADATA
|
--error ER_TABLES_DIFFERENT_METADATA
|
||||||
ALTER TABLE t1 EXCHANGE PARTITION p2 WITH TABLE t2;
|
ALTER TABLE t1 EXCHANGE PARTITION p2 WITH TABLE t2;
|
||||||
--sorted_result
|
SELECT * FROM t1;
|
||||||
SELECT * FROM t2;
|
SELECT * FROM t2;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
# skipped because of bug#52354
|
# skipped because of bug#52354
|
||||||
|
@ -316,3 +316,28 @@ eval CREATE TABLE test.t1(id INT(11)) ENGINE MYISAM
|
|||||||
DATA DIRECTORY "$MYSQLTEST_VARDIR/tmp";
|
DATA DIRECTORY "$MYSQLTEST_VARDIR/tmp";
|
||||||
|
|
||||||
DROP TABLE test.t1;
|
DROP TABLE test.t1;
|
||||||
|
use test;
|
||||||
|
|
||||||
|
#
|
||||||
|
# End of 5.5 tests
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# End of 10.0 tests
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13636 ALTER TABLE ... DELAY_KEY_WRITE=1 creates table copy for MyISAM table with DATA DIRECTORY/INDEX DIRECTORY options
|
||||||
|
#
|
||||||
|
replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR;
|
||||||
|
eval
|
||||||
|
create table t1(c1 int, c2 int, c3 varchar(100)) engine=MyISAM data directory='$MYSQL_TMP_DIR' index directory = '$MYSQL_TMP_DIR';
|
||||||
|
insert t1 values (1,2,3), (2,3,4), (3,4,5), (4,5,6), (5,6,7), (6,7,8), (7,8,9);
|
||||||
|
alter online table t1 delay_key_write=1;
|
||||||
|
replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# End of 10.1 tests
|
||||||
|
#
|
||||||
|
@ -49,23 +49,12 @@ SET(GEN_SOURCES
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.h
|
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.h
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.cc
|
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.cc
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
|
${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
|
||||||
)
|
${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
|
||||||
SET(GEN_DIGEST_SOURCES
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
|
|
||||||
)
|
)
|
||||||
|
|
||||||
SET_SOURCE_FILES_PROPERTIES(${GEN_SOURCES}
|
SET_SOURCE_FILES_PROPERTIES(${GEN_SOURCES}
|
||||||
${GEN_DIGEST_SOURCES}
|
|
||||||
PROPERTIES GENERATED 1)
|
PROPERTIES GENERATED 1)
|
||||||
|
|
||||||
# Gen_lex_token
|
|
||||||
# Make sure sql_yacc.h is generated before compiling gen_lex_token
|
|
||||||
|
|
||||||
IF(NOT CMAKE_GENERATOR MATCHES "Visual Studio")
|
|
||||||
SET(DEPENDS_gen_lex_token DEPENDS gen_lex_token)
|
|
||||||
SET(DEPENDS_gen_lex_hash DEPENDS gen_lex_hash)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
|
|
||||||
IF(NOT CMAKE_CROSSCOMPILING)
|
IF(NOT CMAKE_CROSSCOMPILING)
|
||||||
ADD_EXECUTABLE(gen_lex_token gen_lex_token.cc
|
ADD_EXECUTABLE(gen_lex_token gen_lex_token.cc
|
||||||
@ -75,7 +64,7 @@ ENDIF()
|
|||||||
ADD_CUSTOM_COMMAND(
|
ADD_CUSTOM_COMMAND(
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
|
||||||
COMMAND gen_lex_token > lex_token.h
|
COMMAND gen_lex_token > lex_token.h
|
||||||
${DEPENDS_gen_lex_token}
|
DEPENDS gen_lex_token
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_DEFINITIONS(-DMYSQL_SERVER -DHAVE_EVENT_SCHEDULER)
|
ADD_DEFINITIONS(-DMYSQL_SERVER -DHAVE_EVENT_SCHEDULER)
|
||||||
@ -153,7 +142,6 @@ SET (SQL_SOURCE
|
|||||||
table_cache.cc encryption.cc temporary_tables.cc
|
table_cache.cc encryption.cc temporary_tables.cc
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/sql_builtin.cc
|
${CMAKE_CURRENT_BINARY_DIR}/sql_builtin.cc
|
||||||
${GEN_SOURCES}
|
${GEN_SOURCES}
|
||||||
${GEN_DIGEST_SOURCES}
|
|
||||||
${MYSYS_LIBWRAP_SOURCE}
|
${MYSYS_LIBWRAP_SOURCE}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -174,7 +162,6 @@ RECOMPILE_FOR_EMBEDDED)
|
|||||||
|
|
||||||
ADD_LIBRARY(sql STATIC ${SQL_SOURCE})
|
ADD_LIBRARY(sql STATIC ${SQL_SOURCE})
|
||||||
ADD_DEPENDENCIES(sql GenServerSource)
|
ADD_DEPENDENCIES(sql GenServerSource)
|
||||||
ADD_DEPENDENCIES(sql GenDigestServerSource)
|
|
||||||
DTRACE_INSTRUMENT(sql)
|
DTRACE_INSTRUMENT(sql)
|
||||||
TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS}
|
TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS}
|
||||||
mysys mysys_ssl dbug strings vio pcre
|
mysys mysys_ssl dbug strings vio pcre
|
||||||
@ -213,7 +200,7 @@ IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
|||||||
SET(MYSQLD_DEF ${CMAKE_CURRENT_BINARY_DIR}/mysqld_lib.def)
|
SET(MYSQLD_DEF ${CMAKE_CURRENT_BINARY_DIR}/mysqld_lib.def)
|
||||||
SET(MYSQLD_EXP ${CMAKE_CURRENT_BINARY_DIR}/mysqld_lib.exp)
|
SET(MYSQLD_EXP ${CMAKE_CURRENT_BINARY_DIR}/mysqld_lib.exp)
|
||||||
SET(MYSQLD_LIB ${CMAKE_CURRENT_BINARY_DIR}/mysqld_lib.lib)
|
SET(MYSQLD_LIB ${CMAKE_CURRENT_BINARY_DIR}/mysqld_lib.lib)
|
||||||
SET(MYSQLD_CORELIBS sql mysys mysys_ssl dbug strings)
|
SET(MYSQLD_CORELIBS sql mysys dbug strings)
|
||||||
FOREACH (CORELIB ${MYSQLD_CORELIBS})
|
FOREACH (CORELIB ${MYSQLD_CORELIBS})
|
||||||
GET_TARGET_PROPERTY(LOC ${CORELIB} LOCATION)
|
GET_TARGET_PROPERTY(LOC ${CORELIB} LOCATION)
|
||||||
FILE(TO_NATIVE_PATH ${LOC} LOC)
|
FILE(TO_NATIVE_PATH ${LOC} LOC)
|
||||||
@ -224,6 +211,29 @@ IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
|||||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
SET(_PLATFORM x64)
|
SET(_PLATFORM x64)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
# Create a cmake script to generate import and export libs
|
||||||
|
# from a .def file
|
||||||
|
SET(CMAKE_CONFIGURABLE_FILE_CONTENT "
|
||||||
|
IF ((mysqld_lib.def IS_NEWER_THAN mysqld_lib.lib) OR
|
||||||
|
(mysqld_lib.def IS_NEWER_THAN mysqld_lib.exp))
|
||||||
|
FILE(REMOVE mysqld_lib.lib mysqld_lib.exp)
|
||||||
|
SET(ENV{VS_UNICODE_OUTPUT})
|
||||||
|
EXECUTE_PROCESS (
|
||||||
|
COMMAND \"${CMAKE_LINKER}\" /lib /NAME:mysqld.exe \"/DEF:${MYSQLD_DEF}\" /MACHINE:${_PLATFORM}
|
||||||
|
RESULT_VARIABLE ret)
|
||||||
|
IF(NOT ret EQUAL 0)
|
||||||
|
MESSAGE(FATAL_ERROR \"process failed ret=\${ret}\")
|
||||||
|
ENDIF()
|
||||||
|
ENDIF()
|
||||||
|
")
|
||||||
|
|
||||||
|
CONFIGURE_FILE(
|
||||||
|
${PROJECT_SOURCE_DIR}/cmake/configurable_file_content.in
|
||||||
|
make_mysqld_lib.cmake)
|
||||||
|
|
||||||
|
IF(CMAKE_VERSION VERSION_GREATER "3.2.0")
|
||||||
|
SET(MYSQLD_LIB_BYPRODUCTS BYPRODUCTS ${MYSQLD_DEF} ${MYSQLD_LIB} ${MYSQLD_EXP})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
# Create a cmake script to generate import and export libs
|
# Create a cmake script to generate import and export libs
|
||||||
# from a .def file
|
# from a .def file
|
||||||
@ -245,16 +255,20 @@ IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
|||||||
make_mysqld_lib.cmake)
|
make_mysqld_lib.cmake)
|
||||||
|
|
||||||
ADD_CUSTOM_COMMAND(
|
ADD_CUSTOM_COMMAND(
|
||||||
OUTPUT ${MYSQLD_DEF} ${MYSQLD_LIB} ${MYSQLD_EXP}
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mysqld_lib.stamp
|
||||||
COMMAND cscript ARGS //nologo ${PROJECT_SOURCE_DIR}/win/create_def_file.js
|
${MYSQLD_LIB_BYPRODUCTS}
|
||||||
|
COMMENT "Generating mysqld_lib.def, mysqld_lib.lib, mysqld_lib.exp"
|
||||||
|
COMMAND cscript //nologo ${PROJECT_SOURCE_DIR}/win/create_def_file.js
|
||||||
${_PLATFORM} /forLib ${LIB_LOCATIONS} > mysqld_lib.def.tmp
|
${_PLATFORM} /forLib ${LIB_LOCATIONS} > mysqld_lib.def.tmp
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different mysqld_lib.def.tmp mysqld_lib.def
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different mysqld_lib.def.tmp mysqld_lib.def
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E remove mysqld_lib.def.tmp
|
||||||
COMMAND ${CMAKE_COMMAND} -P make_mysqld_lib.cmake
|
COMMAND ${CMAKE_COMMAND} -P make_mysqld_lib.cmake
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E touch mysqld_lib.stamp
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
DEPENDS ${MYSQLD_CORELIBS}
|
DEPENDS ${MYSQLD_CORELIBS}
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(gen_mysqld_lib DEPENDS ${MYSQLD_LIB})
|
ADD_CUSTOM_TARGET(gen_mysqld_lib DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mysqld_lib.stamp)
|
||||||
ADD_LIBRARY(mysqld_import_lib UNKNOWN IMPORTED GLOBAL)
|
ADD_LIBRARY(mysqld_import_lib UNKNOWN IMPORTED GLOBAL)
|
||||||
SET_TARGET_PROPERTIES(mysqld_import_lib PROPERTIES IMPORTED_LOCATION ${MYSQLD_LIB})
|
SET_TARGET_PROPERTIES(mysqld_import_lib PROPERTIES IMPORTED_LOCATION ${MYSQLD_LIB})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
@ -273,7 +287,6 @@ IF(NOT WITHOUT_DYNAMIC_PLUGINS)
|
|||||||
IF(NOT MSVC)
|
IF(NOT MSVC)
|
||||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE)
|
SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
GET_TARGET_PROPERTY(mysqld_link_flags mysqld LINK_FLAGS)
|
GET_TARGET_PROPERTY(mysqld_link_flags mysqld LINK_FLAGS)
|
||||||
IF(NOT mysqld_link_flags)
|
IF(NOT mysqld_link_flags)
|
||||||
SET(mysqld_link_flags)
|
SET(mysqld_link_flags)
|
||||||
@ -312,10 +325,6 @@ IF(WITH_MYSQLD_LDFLAGS)
|
|||||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS
|
SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS
|
||||||
"${MYSQLD_LINK_FLAGS} ${WITH_MYSQLD_LDFLAGS}")
|
"${MYSQLD_LINK_FLAGS} ${WITH_MYSQLD_LDFLAGS}")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
INSTALL_DEBUG_TARGET(mysqld
|
|
||||||
DESTINATION ${INSTALL_SBINDIR}
|
|
||||||
PDB_DESTINATION ${INSTALL_SBINDIR}/debug
|
|
||||||
RENAME mysqld-debug)
|
|
||||||
|
|
||||||
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/bison.cmake)
|
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/bison.cmake)
|
||||||
|
|
||||||
@ -349,7 +358,7 @@ ENDIF()
|
|||||||
ADD_CUSTOM_COMMAND(
|
ADD_CUSTOM_COMMAND(
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
|
||||||
COMMAND gen_lex_hash > lex_hash.h
|
COMMAND gen_lex_hash > lex_hash.h
|
||||||
${DEPENDS_gen_lex_hash}
|
DEPENDS gen_lex_hash
|
||||||
)
|
)
|
||||||
|
|
||||||
MYSQL_ADD_EXECUTABLE(mysql_tzinfo_to_sql tztime.cc COMPONENT Server)
|
MYSQL_ADD_EXECUTABLE(mysql_tzinfo_to_sql tztime.cc COMPONENT Server)
|
||||||
@ -361,11 +370,6 @@ ADD_CUSTOM_TARGET(
|
|||||||
DEPENDS ${GEN_SOURCES}
|
DEPENDS ${GEN_SOURCES}
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(
|
|
||||||
GenDigestServerSource
|
|
||||||
DEPENDS ${GEN_DIGEST_SOURCES}
|
|
||||||
)
|
|
||||||
|
|
||||||
#Need this only for embedded
|
#Need this only for embedded
|
||||||
SET_TARGET_PROPERTIES(GenServerSource PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
SET_TARGET_PROPERTIES(GenServerSource PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||||
|
|
||||||
|
@ -349,6 +349,10 @@ public:
|
|||||||
virtual void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share);
|
virtual void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share);
|
||||||
virtual bool check_if_incompatible_data(HA_CREATE_INFO *create_info,
|
virtual bool check_if_incompatible_data(HA_CREATE_INFO *create_info,
|
||||||
uint table_changes);
|
uint table_changes);
|
||||||
|
void update_part_create_info(HA_CREATE_INFO *create_info, uint part_id)
|
||||||
|
{
|
||||||
|
m_file[part_id]->update_create_info(create_info);
|
||||||
|
}
|
||||||
private:
|
private:
|
||||||
int copy_partitions(ulonglong * const copied, ulonglong * const deleted);
|
int copy_partitions(ulonglong * const copied, ulonglong * const deleted);
|
||||||
void cleanup_new_partition(uint part_count);
|
void cleanup_new_partition(uint part_count);
|
||||||
|
@ -1828,6 +1828,9 @@ bool Item_name_const::fix_fields(THD *thd, Item **ref)
|
|||||||
set_name(thd, item_name->ptr(), (uint) item_name->length(),
|
set_name(thd, item_name->ptr(), (uint) item_name->length(),
|
||||||
system_charset_info);
|
system_charset_info);
|
||||||
}
|
}
|
||||||
|
if (value_item->collation.derivation == DERIVATION_NUMERIC)
|
||||||
|
collation.set_numeric();
|
||||||
|
else
|
||||||
collation.set(value_item->collation.collation, DERIVATION_IMPLICIT);
|
collation.set(value_item->collation.collation, DERIVATION_IMPLICIT);
|
||||||
max_length= value_item->max_length;
|
max_length= value_item->max_length;
|
||||||
decimals= value_item->decimals;
|
decimals= value_item->decimals;
|
||||||
|
@ -5371,7 +5371,6 @@ user_var_entry *get_variable(HASH *hash, LEX_STRING &name,
|
|||||||
bool create_if_not_exists);
|
bool create_if_not_exists);
|
||||||
|
|
||||||
class SORT_INFO;
|
class SORT_INFO;
|
||||||
|
|
||||||
class multi_delete :public select_result_interceptor
|
class multi_delete :public select_result_interceptor
|
||||||
{
|
{
|
||||||
TABLE_LIST *delete_tables, *table_being_deleted;
|
TABLE_LIST *delete_tables, *table_being_deleted;
|
||||||
|
@ -4355,10 +4355,6 @@ bool compare_partition_options(HA_CREATE_INFO *table_create_info,
|
|||||||
option_diffs[errors++]= "MAX_ROWS";
|
option_diffs[errors++]= "MAX_ROWS";
|
||||||
if (part_elem->part_min_rows != table_create_info->min_rows)
|
if (part_elem->part_min_rows != table_create_info->min_rows)
|
||||||
option_diffs[errors++]= "MIN_ROWS";
|
option_diffs[errors++]= "MIN_ROWS";
|
||||||
if (part_elem->data_file_name || table_create_info->data_file_name)
|
|
||||||
option_diffs[errors++]= "DATA DIRECTORY";
|
|
||||||
if (part_elem->index_file_name || table_create_info->index_file_name)
|
|
||||||
option_diffs[errors++]= "INDEX DIRECTORY";
|
|
||||||
|
|
||||||
for (i= 0; i < errors; i++)
|
for (i= 0; i < errors; i++)
|
||||||
my_error(ER_PARTITION_EXCHANGE_DIFFERENT_OPTION, MYF(0),
|
my_error(ER_PARTITION_EXCHANGE_DIFFERENT_OPTION, MYF(0),
|
||||||
|
@ -178,7 +178,8 @@ static bool check_exchange_partition(TABLE *table, TABLE *part_table)
|
|||||||
*/
|
*/
|
||||||
static bool compare_table_with_partition(THD *thd, TABLE *table,
|
static bool compare_table_with_partition(THD *thd, TABLE *table,
|
||||||
TABLE *part_table,
|
TABLE *part_table,
|
||||||
partition_element *part_elem)
|
partition_element *part_elem,
|
||||||
|
uint part_id)
|
||||||
{
|
{
|
||||||
HA_CREATE_INFO table_create_info, part_create_info;
|
HA_CREATE_INFO table_create_info, part_create_info;
|
||||||
Alter_info part_alter_info;
|
Alter_info part_alter_info;
|
||||||
@ -203,6 +204,7 @@ static bool compare_table_with_partition(THD *thd, TABLE *table,
|
|||||||
}
|
}
|
||||||
/* db_type is not set in prepare_alter_table */
|
/* db_type is not set in prepare_alter_table */
|
||||||
part_create_info.db_type= part_table->part_info->default_engine_type;
|
part_create_info.db_type= part_table->part_info->default_engine_type;
|
||||||
|
((ha_partition*)(part_table->file))->update_part_create_info(&part_create_info, part_id);
|
||||||
/*
|
/*
|
||||||
Since we exchange the partition with the table, allow exchanging
|
Since we exchange the partition with the table, allow exchanging
|
||||||
auto_increment value as well.
|
auto_increment value as well.
|
||||||
@ -595,7 +597,8 @@ bool Sql_cmd_alter_table_exchange_partition::
|
|||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (compare_table_with_partition(thd, swap_table, part_table, part_elem))
|
if (compare_table_with_partition(thd, swap_table, part_table, part_elem,
|
||||||
|
swap_part_id))
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
/* Table and partition has same structure/options, OK to exchange */
|
/* Table and partition has same structure/options, OK to exchange */
|
||||||
|
@ -101,6 +101,9 @@ Unique::Unique(qsort_cmp2 comp_func, void * comp_func_fixed_arg,
|
|||||||
*/
|
*/
|
||||||
max_elements= (ulong) (max_in_memory_size /
|
max_elements= (ulong) (max_in_memory_size /
|
||||||
ALIGN_SIZE(sizeof(TREE_ELEMENT)+size));
|
ALIGN_SIZE(sizeof(TREE_ELEMENT)+size));
|
||||||
|
if (!max_elements)
|
||||||
|
max_elements= 1;
|
||||||
|
|
||||||
(void) open_cached_file(&file, mysql_tmpdir,TEMP_PREFIX, DISK_BUFFER_SIZE,
|
(void) open_cached_file(&file, mysql_tmpdir,TEMP_PREFIX, DISK_BUFFER_SIZE,
|
||||||
MYF(MY_WME));
|
MYF(MY_WME));
|
||||||
}
|
}
|
||||||
@ -646,11 +649,12 @@ bool Unique::walk(TABLE *table, tree_walk_action action, void *walk_action_arg)
|
|||||||
if (flush_io_cache(&file) || reinit_io_cache(&file, READ_CACHE, 0L, 0, 0))
|
if (flush_io_cache(&file) || reinit_io_cache(&file, READ_CACHE, 0L, 0, 0))
|
||||||
return 1;
|
return 1;
|
||||||
/*
|
/*
|
||||||
merge_buffer must fit at least MERGEBUFF2 keys, because
|
merge_buffer must fit at least MERGEBUFF2 + 1 keys, because
|
||||||
merge_index() can merge that many BUFFPEKs at once.
|
merge_index() can merge that many BUFFPEKs at once. The extra space for one key
|
||||||
|
is needed when a piece of merge buffer is re-read, see merge_walk()
|
||||||
*/
|
*/
|
||||||
size_t buff_sz= MY_MAX(MERGEBUFF2, max_in_memory_size/full_size+1) * full_size;
|
size_t buff_sz= MY_MAX(MERGEBUFF2+1, max_in_memory_size/full_size+1) * full_size;
|
||||||
if (!(merge_buffer = (uchar *)my_malloc(buff_sz, MYF(MY_THREAD_SPECIFIC|MY_WME))))
|
if (!(merge_buffer = (uchar *)my_malloc(buff_sz, MYF(MY_WME))))
|
||||||
return 1;
|
return 1;
|
||||||
if (buff_sz < full_size * (file_ptrs.elements + 1UL))
|
if (buff_sz < full_size * (file_ptrs.elements + 1UL))
|
||||||
res= merge(table, merge_buffer, buff_sz >= full_size * MERGEBUFF2) ;
|
res= merge(table, merge_buffer, buff_sz >= full_size * MERGEBUFF2) ;
|
||||||
@ -709,7 +713,7 @@ bool Unique::merge(TABLE *table, uchar *buff, bool without_last_merge)
|
|||||||
sort_param.min_dupl_count= min_dupl_count;
|
sort_param.min_dupl_count= min_dupl_count;
|
||||||
sort_param.res_length= 0;
|
sort_param.res_length= 0;
|
||||||
sort_param.max_keys_per_buffer=
|
sort_param.max_keys_per_buffer=
|
||||||
(uint) (max_in_memory_size / sort_param.sort_length);
|
(uint) MY_MAX((max_in_memory_size / sort_param.sort_length), MERGEBUFF2);
|
||||||
sort_param.not_killable= 1;
|
sort_param.not_killable= 1;
|
||||||
|
|
||||||
sort_param.unique_buff= buff +(sort_param.max_keys_per_buffer *
|
sort_param.unique_buff= buff +(sort_param.max_keys_per_buffer *
|
||||||
|
@ -2359,6 +2359,17 @@ ha_myisam::check_if_supported_inplace_alter(TABLE *new_table,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool directories_differ(const char *d1, const char *d2)
|
||||||
|
{
|
||||||
|
if (!d1 && !d2)
|
||||||
|
return false;
|
||||||
|
if (!d1 || !d2)
|
||||||
|
return true;
|
||||||
|
size_t l1= dirname_length(d1), l2= dirname_length(d2);
|
||||||
|
return l1 != l2 || strncmp(d1, d2, l1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool ha_myisam::check_if_incompatible_data(HA_CREATE_INFO *create_info,
|
bool ha_myisam::check_if_incompatible_data(HA_CREATE_INFO *create_info,
|
||||||
uint table_changes)
|
uint table_changes)
|
||||||
{
|
{
|
||||||
@ -2366,8 +2377,8 @@ bool ha_myisam::check_if_incompatible_data(HA_CREATE_INFO *create_info,
|
|||||||
|
|
||||||
if ((create_info->used_fields & HA_CREATE_USED_AUTO &&
|
if ((create_info->used_fields & HA_CREATE_USED_AUTO &&
|
||||||
create_info->auto_increment_value != stats.auto_increment_value) ||
|
create_info->auto_increment_value != stats.auto_increment_value) ||
|
||||||
create_info->data_file_name != data_file_name ||
|
directories_differ(create_info->data_file_name, data_file_name) ||
|
||||||
create_info->index_file_name != index_file_name ||
|
directories_differ(create_info->index_file_name, index_file_name) ||
|
||||||
table_changes == IS_EQUAL_NO ||
|
table_changes == IS_EQUAL_NO ||
|
||||||
table_changes & IS_EQUAL_PACK_LENGTH) // Not implemented yet
|
table_changes & IS_EQUAL_PACK_LENGTH) // Not implemented yet
|
||||||
return COMPATIBLE_DATA_NO;
|
return COMPATIBLE_DATA_NO;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
SET(TOKUDB_VERSION 5.6.36-82.1)
|
SET(TOKUDB_VERSION 5.6.37-82.2)
|
||||||
# PerconaFT only supports x86-64 and cmake-2.8.9+
|
# PerconaFT only supports x86-64 and cmake-2.8.9+
|
||||||
IF(CMAKE_VERSION VERSION_LESS "2.8.9")
|
IF(CMAKE_VERSION VERSION_LESS "2.8.9")
|
||||||
MESSAGE(STATUS "CMake 2.8.9 or higher is required by TokuDB")
|
MESSAGE(STATUS "CMake 2.8.9 or higher is required by TokuDB")
|
||||||
|
@ -231,6 +231,8 @@ static void print_defines (void) {
|
|||||||
printf("#define DB_SET_RANGE_REVERSE 252\n"); // private tokudb
|
printf("#define DB_SET_RANGE_REVERSE 252\n"); // private tokudb
|
||||||
//printf("#define DB_GET_BOTH_RANGE_REVERSE 251\n"); // private tokudb. No longer supported #2862.
|
//printf("#define DB_GET_BOTH_RANGE_REVERSE 251\n"); // private tokudb. No longer supported #2862.
|
||||||
dodefine(DB_RMW);
|
dodefine(DB_RMW);
|
||||||
|
|
||||||
|
printf("#define DB_LOCKING_READ 0x80000000\n");
|
||||||
printf("#define DB_IS_RESETTING_OP 0x01000000\n"); // private tokudb
|
printf("#define DB_IS_RESETTING_OP 0x01000000\n"); // private tokudb
|
||||||
printf("#define DB_PRELOCKED 0x00800000\n"); // private tokudb
|
printf("#define DB_PRELOCKED 0x00800000\n"); // private tokudb
|
||||||
printf("#define DB_PRELOCKED_WRITE 0x00400000\n"); // private tokudb
|
printf("#define DB_PRELOCKED_WRITE 0x00400000\n"); // private tokudb
|
||||||
|
@ -239,12 +239,15 @@ struct __toku_dbc_internal {
|
|||||||
struct simple_dbt skey_s,sval_s;
|
struct simple_dbt skey_s,sval_s;
|
||||||
struct simple_dbt *skey,*sval;
|
struct simple_dbt *skey,*sval;
|
||||||
|
|
||||||
// if the rmw flag is asserted, cursor operations (like set) grab write locks instead of read locks
|
// if the rmw flag is asserted, cursor operations (like set) grab write
|
||||||
|
// locks instead of read locks
|
||||||
// the rmw flag is set when the cursor is created with the DB_RMW flag set
|
// the rmw flag is set when the cursor is created with the DB_RMW flag set
|
||||||
bool rmw;
|
bool rmw;
|
||||||
|
bool locking_read;
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert(sizeof(__toku_dbc_internal) <= sizeof(((DBC *) nullptr)->_internal),
|
static_assert(
|
||||||
|
sizeof(__toku_dbc_internal) <= sizeof(((DBC *)nullptr)->_internal),
|
||||||
"__toku_dbc_internal doesn't fit in the internal portion of a DBC");
|
"__toku_dbc_internal doesn't fit in the internal portion of a DBC");
|
||||||
|
|
||||||
static inline __toku_dbc_internal *dbc_struct_i(DBC *c) {
|
static inline __toku_dbc_internal *dbc_struct_i(DBC *c) {
|
||||||
|
@ -110,12 +110,14 @@ c_get_wrapper_callback(DBT const *key, DBT const *val, void *extra) {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t
|
static inline uint32_t get_cursor_prelocked_flags(uint32_t flags, DBC *dbc) {
|
||||||
get_cursor_prelocked_flags(uint32_t flags, DBC* dbc) {
|
|
||||||
uint32_t lock_flags = flags & (DB_PRELOCKED | DB_PRELOCKED_WRITE);
|
uint32_t lock_flags = flags & (DB_PRELOCKED | DB_PRELOCKED_WRITE);
|
||||||
|
|
||||||
//DB_READ_UNCOMMITTED and DB_READ_COMMITTED transactions 'own' all read locks for user-data dictionaries.
|
// DB_READ_UNCOMMITTED and DB_READ_COMMITTED transactions 'own' all read
|
||||||
if (dbc_struct_i(dbc)->iso != TOKU_ISO_SERIALIZABLE) {
|
// locks for user-data dictionaries.
|
||||||
|
if (dbc_struct_i(dbc)->iso != TOKU_ISO_SERIALIZABLE &&
|
||||||
|
!(dbc_struct_i(dbc)->iso == TOKU_ISO_SNAPSHOT &&
|
||||||
|
dbc_struct_i(dbc)->locking_read)) {
|
||||||
lock_flags |= DB_PRELOCKED;
|
lock_flags |= DB_PRELOCKED;
|
||||||
}
|
}
|
||||||
return lock_flags;
|
return lock_flags;
|
||||||
@ -671,37 +673,44 @@ int toku_c_close(DBC *c) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int c_set_bounds(DBC *dbc,
|
||||||
c_set_bounds(DBC *dbc, const DBT *left_key, const DBT *right_key, bool pre_acquire, int out_of_range_error) {
|
const DBT *left_key,
|
||||||
|
const DBT *right_key,
|
||||||
|
bool pre_acquire,
|
||||||
|
int out_of_range_error) {
|
||||||
if (out_of_range_error != DB_NOTFOUND &&
|
if (out_of_range_error != DB_NOTFOUND &&
|
||||||
out_of_range_error != TOKUDB_OUT_OF_RANGE &&
|
out_of_range_error != TOKUDB_OUT_OF_RANGE && out_of_range_error != 0) {
|
||||||
out_of_range_error != 0) {
|
return toku_ydb_do_error(dbc->dbp->dbenv,
|
||||||
return toku_ydb_do_error(
|
|
||||||
dbc->dbp->dbenv,
|
|
||||||
EINVAL,
|
EINVAL,
|
||||||
"Invalid out_of_range_error [%d] for %s\n",
|
"Invalid out_of_range_error [%d] for %s\n",
|
||||||
out_of_range_error,
|
out_of_range_error,
|
||||||
__FUNCTION__
|
__FUNCTION__);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (left_key == toku_dbt_negative_infinity() && right_key == toku_dbt_positive_infinity()) {
|
if (left_key == toku_dbt_negative_infinity() &&
|
||||||
|
right_key == toku_dbt_positive_infinity()) {
|
||||||
out_of_range_error = 0;
|
out_of_range_error = 0;
|
||||||
}
|
}
|
||||||
DB *db = dbc->dbp;
|
DB *db = dbc->dbp;
|
||||||
DB_TXN *txn = dbc_struct_i(dbc)->txn;
|
DB_TXN *txn = dbc_struct_i(dbc)->txn;
|
||||||
HANDLE_PANICKED_DB(db);
|
HANDLE_PANICKED_DB(db);
|
||||||
toku_ft_cursor_set_range_lock(dbc_ftcursor(dbc), left_key, right_key,
|
toku_ft_cursor_set_range_lock(dbc_ftcursor(dbc),
|
||||||
|
left_key,
|
||||||
|
right_key,
|
||||||
(left_key == toku_dbt_negative_infinity()),
|
(left_key == toku_dbt_negative_infinity()),
|
||||||
(right_key == toku_dbt_positive_infinity()),
|
(right_key == toku_dbt_positive_infinity()),
|
||||||
out_of_range_error);
|
out_of_range_error);
|
||||||
if (!db->i->lt || !txn || !pre_acquire)
|
if (!db->i->lt || !txn || !pre_acquire)
|
||||||
return 0;
|
return 0;
|
||||||
//READ_UNCOMMITTED and READ_COMMITTED transactions do not need read locks.
|
// READ_UNCOMMITTED and READ_COMMITTED transactions do not need read locks.
|
||||||
if (!dbc_struct_i(dbc)->rmw && dbc_struct_i(dbc)->iso != TOKU_ISO_SERIALIZABLE)
|
if (!dbc_struct_i(dbc)->rmw &&
|
||||||
|
dbc_struct_i(dbc)->iso != TOKU_ISO_SERIALIZABLE &&
|
||||||
|
!(dbc_struct_i(dbc)->iso == TOKU_ISO_SNAPSHOT &&
|
||||||
|
dbc_struct_i(dbc)->locking_read))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
toku::lock_request::type lock_type = dbc_struct_i(dbc)->rmw ?
|
toku::lock_request::type lock_type = dbc_struct_i(dbc)->rmw
|
||||||
toku::lock_request::type::WRITE : toku::lock_request::type::READ;
|
? toku::lock_request::type::WRITE
|
||||||
|
: toku::lock_request::type::READ;
|
||||||
int r = toku_db_get_range_lock(db, txn, left_key, right_key, lock_type);
|
int r = toku_db_get_range_lock(db, txn, left_key, right_key, lock_type);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
@ -783,18 +792,20 @@ toku_c_get(DBC* c, DBT* key, DBT* val, uint32_t flag) {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int toku_db_cursor_internal(DB *db,
|
||||||
toku_db_cursor_internal(DB * db, DB_TXN * txn, DBC *c, uint32_t flags, int is_temporary_cursor) {
|
DB_TXN *txn,
|
||||||
|
DBC *c,
|
||||||
|
uint32_t flags,
|
||||||
|
int is_temporary_cursor) {
|
||||||
HANDLE_PANICKED_DB(db);
|
HANDLE_PANICKED_DB(db);
|
||||||
HANDLE_DB_ILLEGAL_WORKING_PARENT_TXN(db, txn);
|
HANDLE_DB_ILLEGAL_WORKING_PARENT_TXN(db, txn);
|
||||||
DB_ENV* env = db->dbenv;
|
DB_ENV *env = db->dbenv;
|
||||||
|
|
||||||
if (flags & ~(DB_SERIALIZABLE | DB_INHERIT_ISOLATION | DB_RMW | DBC_DISABLE_PREFETCHING)) {
|
if (flags &
|
||||||
|
~(DB_SERIALIZABLE | DB_INHERIT_ISOLATION | DB_LOCKING_READ | DB_RMW |
|
||||||
|
DBC_DISABLE_PREFETCHING)) {
|
||||||
return toku_ydb_do_error(
|
return toku_ydb_do_error(
|
||||||
env,
|
env, EINVAL, "Invalid flags set for toku_db_cursor\n");
|
||||||
EINVAL,
|
|
||||||
"Invalid flags set for toku_db_cursor\n"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SCRS(name) c->name = name
|
#define SCRS(name) c->name = name
|
||||||
@ -819,8 +830,8 @@ toku_db_cursor_internal(DB * db, DB_TXN * txn, DBC *c, uint32_t flags, int is_te
|
|||||||
c->dbp = db;
|
c->dbp = db;
|
||||||
|
|
||||||
dbc_struct_i(c)->txn = txn;
|
dbc_struct_i(c)->txn = txn;
|
||||||
dbc_struct_i(c)->skey_s = (struct simple_dbt){0,0};
|
dbc_struct_i(c)->skey_s = (struct simple_dbt){0, 0};
|
||||||
dbc_struct_i(c)->sval_s = (struct simple_dbt){0,0};
|
dbc_struct_i(c)->sval_s = (struct simple_dbt){0, 0};
|
||||||
if (is_temporary_cursor) {
|
if (is_temporary_cursor) {
|
||||||
dbc_struct_i(c)->skey = &db->i->skey;
|
dbc_struct_i(c)->skey = &db->i->skey;
|
||||||
dbc_struct_i(c)->sval = &db->i->sval;
|
dbc_struct_i(c)->sval = &db->i->sval;
|
||||||
@ -831,28 +842,27 @@ toku_db_cursor_internal(DB * db, DB_TXN * txn, DBC *c, uint32_t flags, int is_te
|
|||||||
if (flags & DB_SERIALIZABLE) {
|
if (flags & DB_SERIALIZABLE) {
|
||||||
dbc_struct_i(c)->iso = TOKU_ISO_SERIALIZABLE;
|
dbc_struct_i(c)->iso = TOKU_ISO_SERIALIZABLE;
|
||||||
} else {
|
} else {
|
||||||
dbc_struct_i(c)->iso = txn ? db_txn_struct_i(txn)->iso : TOKU_ISO_SERIALIZABLE;
|
dbc_struct_i(c)->iso =
|
||||||
|
txn ? db_txn_struct_i(txn)->iso : TOKU_ISO_SERIALIZABLE;
|
||||||
}
|
}
|
||||||
dbc_struct_i(c)->rmw = (flags & DB_RMW) != 0;
|
dbc_struct_i(c)->rmw = (flags & DB_RMW) != 0;
|
||||||
enum cursor_read_type read_type = C_READ_ANY; // default, used in serializable and read uncommitted
|
dbc_struct_i(c)->locking_read = (flags & DB_LOCKING_READ) != 0;
|
||||||
|
enum cursor_read_type read_type =
|
||||||
|
C_READ_ANY; // default, used in serializable and read uncommitted
|
||||||
if (txn) {
|
if (txn) {
|
||||||
if (dbc_struct_i(c)->iso == TOKU_ISO_READ_COMMITTED ||
|
if (dbc_struct_i(c)->iso == TOKU_ISO_READ_COMMITTED ||
|
||||||
dbc_struct_i(c)->iso == TOKU_ISO_SNAPSHOT)
|
dbc_struct_i(c)->iso == TOKU_ISO_SNAPSHOT) {
|
||||||
{
|
|
||||||
read_type = C_READ_SNAPSHOT;
|
read_type = C_READ_SNAPSHOT;
|
||||||
}
|
} else if (dbc_struct_i(c)->iso == TOKU_ISO_READ_COMMITTED_ALWAYS) {
|
||||||
else if (dbc_struct_i(c)->iso == TOKU_ISO_READ_COMMITTED_ALWAYS) {
|
|
||||||
read_type = C_READ_COMMITTED;
|
read_type = C_READ_COMMITTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int r = toku_ft_cursor_create(
|
int r = toku_ft_cursor_create(db->i->ft_handle,
|
||||||
db->i->ft_handle,
|
|
||||||
dbc_ftcursor(c),
|
dbc_ftcursor(c),
|
||||||
txn ? db_txn_struct_i(txn)->tokutxn : NULL,
|
txn ? db_txn_struct_i(txn)->tokutxn : NULL,
|
||||||
read_type,
|
read_type,
|
||||||
((flags & DBC_DISABLE_PREFETCHING) != 0),
|
((flags & DBC_DISABLE_PREFETCHING) != 0),
|
||||||
is_temporary_cursor != 0
|
is_temporary_cursor != 0);
|
||||||
);
|
|
||||||
if (r != 0) {
|
if (r != 0) {
|
||||||
invariant(r == TOKUDB_MVCC_DICTIONARY_TOO_NEW);
|
invariant(r == TOKUDB_MVCC_DICTIONARY_TOO_NEW);
|
||||||
}
|
}
|
||||||
|
@ -7630,7 +7630,13 @@ static bool tokudb_check_db_dir_exist_from_table_name(const char *table_name) {
|
|||||||
|
|
||||||
memcpy(db_name, db_name_begin, db_name_size);
|
memcpy(db_name, db_name_begin, db_name_size);
|
||||||
db_name[db_name_size] = '\0';
|
db_name[db_name_size] = '\0';
|
||||||
mysql_dir_exists = (check_db_dir_existence(db_name) == 0);
|
|
||||||
|
// At this point, db_name contains the MySQL formatted database name.
|
||||||
|
// This is exactly the same format that would come into us through a
|
||||||
|
// CREATE TABLE. Some charaters (like ':' for example) might be expanded
|
||||||
|
// into hex (':' would papear as "@003a").
|
||||||
|
// We need to check that the MySQL destination database directory exists.
|
||||||
|
mysql_dir_exists = (my_access(db_name, F_OK) == 0);
|
||||||
|
|
||||||
return mysql_dir_exists;
|
return mysql_dir_exists;
|
||||||
}
|
}
|
||||||
|
@ -1,315 +0,0 @@
|
|||||||
include/master-slave.inc
|
|
||||||
[connection master]
|
|
||||||
connection slave;
|
|
||||||
include/stop_slave.inc
|
|
||||||
include/wait_for_slave_to_stop.inc
|
|
||||||
reset master;
|
|
||||||
reset slave;
|
|
||||||
start slave;
|
|
||||||
include/wait_for_slave_to_start.inc
|
|
||||||
connection slave;
|
|
||||||
set @save_slave_ddl_exec_mode=@@global.slave_ddl_exec_mode;
|
|
||||||
set @@global.slave_ddl_exec_mode=STRICT;
|
|
||||||
connection master;
|
|
||||||
create table t1(n int not null auto_increment primary key)ENGINE=TokuDB;
|
|
||||||
insert into t1 values (NULL);
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (word char(20) not null)ENGINE=TokuDB;
|
|
||||||
load data infile 'LOAD_FILE' into table t1 ignore 1 lines;
|
|
||||||
select count(*) from t1;
|
|
||||||
count(*)
|
|
||||||
69
|
|
||||||
include/show_binlog_events.inc
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB
|
|
||||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
master-bin.000001 # Annotate_rows # # insert into t1 values (NULL)
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB
|
|
||||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
master-bin.000001 # Annotate_rows # # load data infile '../../std_data/words.dat' into table t1 ignore 1 lines
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
||||||
include/show_binlog_events.inc
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB
|
|
||||||
include/show_binlog_events.inc
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB
|
|
||||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
include/show_binlog_events.inc
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
master-bin.000001 # Annotate_rows # # insert into t1 values (NULL)
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
||||||
flush logs;
|
|
||||||
create table t3 (a int)ENGINE=TokuDB;
|
|
||||||
connection master;
|
|
||||||
select * from t1 order by 1 asc;
|
|
||||||
word
|
|
||||||
Aarhus
|
|
||||||
Aaron
|
|
||||||
Aaron
|
|
||||||
Ababa
|
|
||||||
Ababa
|
|
||||||
aback
|
|
||||||
aback
|
|
||||||
abaft
|
|
||||||
abaft
|
|
||||||
abandon
|
|
||||||
abandon
|
|
||||||
abandoned
|
|
||||||
abandoned
|
|
||||||
abandoning
|
|
||||||
abandoning
|
|
||||||
abandonment
|
|
||||||
abandonment
|
|
||||||
abandons
|
|
||||||
abandons
|
|
||||||
abase
|
|
||||||
abased
|
|
||||||
abasement
|
|
||||||
abasements
|
|
||||||
abases
|
|
||||||
abash
|
|
||||||
abashed
|
|
||||||
abashes
|
|
||||||
abashing
|
|
||||||
abasing
|
|
||||||
abate
|
|
||||||
abated
|
|
||||||
abatement
|
|
||||||
abatements
|
|
||||||
abater
|
|
||||||
abates
|
|
||||||
abating
|
|
||||||
Abba
|
|
||||||
abbe
|
|
||||||
abbey
|
|
||||||
abbeys
|
|
||||||
abbot
|
|
||||||
abbots
|
|
||||||
Abbott
|
|
||||||
abbreviate
|
|
||||||
abbreviated
|
|
||||||
abbreviates
|
|
||||||
abbreviating
|
|
||||||
abbreviation
|
|
||||||
abbreviations
|
|
||||||
Abby
|
|
||||||
abdomen
|
|
||||||
abdomens
|
|
||||||
abdominal
|
|
||||||
abduct
|
|
||||||
abducted
|
|
||||||
abduction
|
|
||||||
abductions
|
|
||||||
abductor
|
|
||||||
abductors
|
|
||||||
abducts
|
|
||||||
Abe
|
|
||||||
abed
|
|
||||||
Abel
|
|
||||||
Abelian
|
|
||||||
Abelson
|
|
||||||
Aberdeen
|
|
||||||
Abernathy
|
|
||||||
aberrant
|
|
||||||
aberration
|
|
||||||
connection slave;
|
|
||||||
select * from t1 order by 1 asc;
|
|
||||||
word
|
|
||||||
Aarhus
|
|
||||||
Aaron
|
|
||||||
Aaron
|
|
||||||
Ababa
|
|
||||||
Ababa
|
|
||||||
aback
|
|
||||||
aback
|
|
||||||
abaft
|
|
||||||
abaft
|
|
||||||
abandon
|
|
||||||
abandon
|
|
||||||
abandoned
|
|
||||||
abandoned
|
|
||||||
abandoning
|
|
||||||
abandoning
|
|
||||||
abandonment
|
|
||||||
abandonment
|
|
||||||
abandons
|
|
||||||
abandons
|
|
||||||
abase
|
|
||||||
abased
|
|
||||||
abasement
|
|
||||||
abasements
|
|
||||||
abases
|
|
||||||
abash
|
|
||||||
abashed
|
|
||||||
abashes
|
|
||||||
abashing
|
|
||||||
abasing
|
|
||||||
abate
|
|
||||||
abated
|
|
||||||
abatement
|
|
||||||
abatements
|
|
||||||
abater
|
|
||||||
abates
|
|
||||||
abating
|
|
||||||
Abba
|
|
||||||
abbe
|
|
||||||
abbey
|
|
||||||
abbeys
|
|
||||||
abbot
|
|
||||||
abbots
|
|
||||||
Abbott
|
|
||||||
abbreviate
|
|
||||||
abbreviated
|
|
||||||
abbreviates
|
|
||||||
abbreviating
|
|
||||||
abbreviation
|
|
||||||
abbreviations
|
|
||||||
Abby
|
|
||||||
abdomen
|
|
||||||
abdomens
|
|
||||||
abdominal
|
|
||||||
abduct
|
|
||||||
abducted
|
|
||||||
abduction
|
|
||||||
abductions
|
|
||||||
abductor
|
|
||||||
abductors
|
|
||||||
abducts
|
|
||||||
Abe
|
|
||||||
abed
|
|
||||||
Abel
|
|
||||||
Abelian
|
|
||||||
Abelson
|
|
||||||
Aberdeen
|
|
||||||
Abernathy
|
|
||||||
aberrant
|
|
||||||
aberration
|
|
||||||
flush logs;
|
|
||||||
include/stop_slave.inc
|
|
||||||
include/start_slave.inc
|
|
||||||
connection master;
|
|
||||||
create table t2 (n int)ENGINE=TokuDB;
|
|
||||||
insert into t2 values (1);
|
|
||||||
include/show_binlog_events.inc
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB
|
|
||||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
master-bin.000001 # Annotate_rows # # insert into t1 values (NULL)
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB
|
|
||||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
master-bin.000001 # Annotate_rows # # load data infile '../../std_data/words.dat' into table t1 ignore 1 lines
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
||||||
master-bin.000001 # Rotate # # master-bin.000002;pos=POS
|
|
||||||
include/show_binlog_events.inc
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000002 # Binlog_checkpoint # # master-bin.000002
|
|
||||||
master-bin.000002 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB
|
|
||||||
master-bin.000002 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB
|
|
||||||
master-bin.000002 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
master-bin.000002 # Annotate_rows # # insert into t2 values (1)
|
|
||||||
master-bin.000002 # Table_map # # table_id: # (test.t2)
|
|
||||||
master-bin.000002 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000002 # Xid # # COMMIT /* XID */
|
|
||||||
show binary logs;
|
|
||||||
Log_name File_size
|
|
||||||
master-bin.000001 #
|
|
||||||
master-bin.000002 #
|
|
||||||
connection slave;
|
|
||||||
show binary logs;
|
|
||||||
Log_name File_size
|
|
||||||
slave-bin.000001 #
|
|
||||||
slave-bin.000002 #
|
|
||||||
include/show_binlog_events.inc
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
slave-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB
|
|
||||||
slave-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
slave-bin.000001 # Annotate_rows # # insert into t1 values (NULL)
|
|
||||||
slave-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
slave-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
slave-bin.000001 # Xid # # COMMIT /* XID */
|
|
||||||
slave-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
slave-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
||||||
slave-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB
|
|
||||||
slave-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
slave-bin.000001 # Annotate_rows # # load data infile '../../std_data/words.dat' into table t1 ignore 1 lines
|
|
||||||
slave-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
slave-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
slave-bin.000001 # Xid # # COMMIT /* XID */
|
|
||||||
slave-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB
|
|
||||||
slave-bin.000001 # Rotate # # slave-bin.000002;pos=POS
|
|
||||||
include/show_binlog_events.inc
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
slave-bin.000002 # Binlog_checkpoint # # slave-bin.000002
|
|
||||||
slave-bin.000002 # Gtid # # GTID #-#-#
|
|
||||||
slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB
|
|
||||||
slave-bin.000002 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
slave-bin.000002 # Annotate_rows # # insert into t2 values (1)
|
|
||||||
slave-bin.000002 # Table_map # # table_id: # (test.t2)
|
|
||||||
slave-bin.000002 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
slave-bin.000002 # Xid # # COMMIT /* XID */
|
|
||||||
include/check_slave_is_running.inc
|
|
||||||
show binlog events in 'slave-bin.000005' from 4;
|
|
||||||
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
|
|
||||||
connection master;
|
|
||||||
DROP TABLE t1;
|
|
||||||
DROP TABLE t2;
|
|
||||||
DROP TABLE t3;
|
|
||||||
include/rpl_reset.inc
|
|
||||||
connection master;
|
|
||||||
create table t1(a int auto_increment primary key, b int);
|
|
||||||
insert into t1 values (NULL, 1);
|
|
||||||
set insert_id=5;
|
|
||||||
insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id());
|
|
||||||
include/show_binlog_events.inc
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int)
|
|
||||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
master-bin.000001 # Annotate_rows # # insert into t1 values (NULL, 1)
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Query # # COMMIT
|
|
||||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
||||||
master-bin.000001 # Annotate_rows # # insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id())
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Query # # COMMIT
|
|
||||||
select * from t1;
|
|
||||||
a b
|
|
||||||
1 1
|
|
||||||
5 1
|
|
||||||
6 1
|
|
||||||
drop table t1;
|
|
||||||
connection slave;
|
|
||||||
set @@global.slave_ddl_exec_mode=@save_slave_ddl_exec_mode;
|
|
||||||
connection master;
|
|
||||||
include/rpl_end.inc
|
|
@ -1,2 +0,0 @@
|
|||||||
--skip-external-locking
|
|
||||||
--default-storage-engine=MyISAM
|
|
@ -1,14 +0,0 @@
|
|||||||
###################################
|
|
||||||
# Wrapper for rpl_row_log.test #
|
|
||||||
# Added wrapper so that MyISAM & #
|
|
||||||
# Innodb and NDB could all use the#
|
|
||||||
# Same test. NDB produced a diff #
|
|
||||||
# bin-log #
|
|
||||||
###################################
|
|
||||||
-- source include/have_binlog_format_row.inc
|
|
||||||
-- source include/have_tokudb.inc
|
|
||||||
-- source include/master-slave.inc
|
|
||||||
let $engine_type=TokuDB;
|
|
||||||
-- source extra/rpl_tests/rpl_log.test
|
|
||||||
|
|
||||||
--source include/rpl_end.inc
|
|
@ -1,3 +1,4 @@
|
|||||||
|
SET @orig_tokudb_dir_per_db=@@global.tokudb_dir_per_db;
|
||||||
########
|
########
|
||||||
# tokudb_dir_per_db = 1
|
# tokudb_dir_per_db = 1
|
||||||
########
|
########
|
||||||
@ -177,4 +178,11 @@ t1_status_id.tokudb
|
|||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
## Looking for *.tokudb files in data_dir
|
## Looking for *.tokudb files in data_dir
|
||||||
## Looking for *.tokudb files in data_dir/test
|
## Looking for *.tokudb files in data_dir/test
|
||||||
SET GLOBAL tokudb_dir_per_db=default;
|
CREATE DATABASE `a::a@@`;
|
||||||
|
CREATE TABLE `a::a@@`.`t1` (a INT) ENGINE=TOKUDB;
|
||||||
|
CREATE DATABASE `!@#$%^&*()`;
|
||||||
|
ALTER TABLE `a::a@@`.`t1` RENAME `!@#$%^&*()`.`t1`;
|
||||||
|
DROP TABLE `!@#$%^&*()`.`t1`;
|
||||||
|
DROP DATABASE `!@#$%^&*()`;
|
||||||
|
DROP DATABASE `a::a@@`;
|
||||||
|
SET GLOBAL tokudb_dir_per_db=@orig_tokudb_dir_per_db;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
source include/have_tokudb.inc;
|
source include/have_tokudb.inc;
|
||||||
|
|
||||||
|
SET @orig_tokudb_dir_per_db=@@global.tokudb_dir_per_db;
|
||||||
|
|
||||||
--let $DB= test
|
--let $DB= test
|
||||||
--let $DATADIR= `select @@datadir`
|
--let $DATADIR= `select @@datadir`
|
||||||
--let $i= 2
|
--let $i= 2
|
||||||
@ -73,4 +75,17 @@ while ($i) {
|
|||||||
--source dir_per_db_show_table_files.inc
|
--source dir_per_db_show_table_files.inc
|
||||||
}
|
}
|
||||||
|
|
||||||
SET GLOBAL tokudb_dir_per_db=default;
|
|
||||||
|
# test case for TDB-72 : Can not rename table in database with non alphanum
|
||||||
|
# characters in its name.
|
||||||
|
CREATE DATABASE `a::a@@`;
|
||||||
|
CREATE TABLE `a::a@@`.`t1` (a INT) ENGINE=TOKUDB;
|
||||||
|
CREATE DATABASE `!@#$%^&*()`;
|
||||||
|
ALTER TABLE `a::a@@`.`t1` RENAME `!@#$%^&*()`.`t1`;
|
||||||
|
|
||||||
|
DROP TABLE `!@#$%^&*()`.`t1`;
|
||||||
|
DROP DATABASE `!@#$%^&*()`;
|
||||||
|
DROP DATABASE `a::a@@`;
|
||||||
|
|
||||||
|
# cleanup
|
||||||
|
SET GLOBAL tokudb_dir_per_db=@orig_tokudb_dir_per_db;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2008, 2015, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2008, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License as published by the Free Software
|
the terms of the GNU General Public License as published by the Free Software
|
||||||
@ -1988,6 +1988,7 @@ ib_cursor_read_row(
|
|||||||
|
|
||||||
page_format = static_cast<ib_bool_t>(
|
page_format = static_cast<ib_bool_t>(
|
||||||
dict_table_is_comp(tuple->index->table));
|
dict_table_is_comp(tuple->index->table));
|
||||||
|
|
||||||
rec = btr_pcur_get_rec(pcur);
|
rec = btr_pcur_get_rec(pcur);
|
||||||
|
|
||||||
if (prebuilt->innodb_api_rec &&
|
if (prebuilt->innodb_api_rec &&
|
||||||
@ -2029,6 +2030,7 @@ ib_cursor_position(
|
|||||||
|
|
||||||
buf = static_cast<unsigned char*>(mem_alloc(UNIV_PAGE_SIZE));
|
buf = static_cast<unsigned char*>(mem_alloc(UNIV_PAGE_SIZE));
|
||||||
|
|
||||||
|
|
||||||
/* We want to position at one of the ends, row_search_for_mysql()
|
/* We want to position at one of the ends, row_search_for_mysql()
|
||||||
uses the search_tuple fields to work out what to do. */
|
uses the search_tuple fields to work out what to do. */
|
||||||
dtuple_set_n_fields(prebuilt->search_tuple, 0);
|
dtuple_set_n_fields(prebuilt->search_tuple, 0);
|
||||||
|
@ -10560,6 +10560,27 @@ ha_innobase::ft_init_ext(
|
|||||||
return((FT_INFO*) fts_hdl);
|
return((FT_INFO*) fts_hdl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************//**
|
||||||
|
Copy a cached MySQL row.
|
||||||
|
If requested, also avoids overwriting non-read columns.
|
||||||
|
@param[out] buf Row in MySQL format.
|
||||||
|
@param[in] cached_row Which row to copy.
|
||||||
|
@param[in] rec_len Record length. */
|
||||||
|
void
|
||||||
|
ha_innobase::copy_cached_row(
|
||||||
|
uchar* buf,
|
||||||
|
const uchar* cached_row,
|
||||||
|
uint rec_len)
|
||||||
|
{
|
||||||
|
if (prebuilt->keep_other_fields_on_keyread) {
|
||||||
|
row_sel_copy_cached_fields_for_mysql(buf, cached_row,
|
||||||
|
prebuilt);
|
||||||
|
} else {
|
||||||
|
memcpy(buf, cached_row, rec_len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************//**
|
/*****************************************************************//**
|
||||||
Set up search tuple for a query through FTS_DOC_ID_INDEX on
|
Set up search tuple for a query through FTS_DOC_ID_INDEX on
|
||||||
supplied Doc ID. This is used by MySQL to retrieve the documents
|
supplied Doc ID. This is used by MySQL to retrieve the documents
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2013, 2017, MariaDB Corporation.
|
Copyright (c) 2013, 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
@ -167,6 +167,10 @@ class ha_innobase: public handler
|
|||||||
int index_first(uchar * buf);
|
int index_first(uchar * buf);
|
||||||
int index_last(uchar * buf);
|
int index_last(uchar * buf);
|
||||||
|
|
||||||
|
/* Copy a cached MySQL row. If requested, also avoids
|
||||||
|
overwriting non-read columns. */
|
||||||
|
void copy_cached_row(uchar *to_rec, const uchar *from_rec,
|
||||||
|
uint rec_length);
|
||||||
bool has_gap_locks() const { return true; }
|
bool has_gap_locks() const { return true; }
|
||||||
|
|
||||||
int rnd_init(bool scan);
|
int rnd_init(bool scan);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2017, MariaDB Corporation.
|
Copyright (c) 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License as published by the Free Software
|
the terms of the GNU General Public License as published by the Free Software
|
||||||
@ -205,6 +205,18 @@ struct sel_buf_t{
|
|||||||
when data != NULL */
|
when data != NULL */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Copy used fields from cached row.
|
||||||
|
Copy cache record field by field, don't touch fields that
|
||||||
|
are not covered by current key.
|
||||||
|
@param[out] buf Where to copy the MySQL row.
|
||||||
|
@param[in] cached_rec What to copy (in MySQL row format).
|
||||||
|
@param[in] prebuilt prebuilt struct. */
|
||||||
|
void
|
||||||
|
row_sel_copy_cached_fields_for_mysql(
|
||||||
|
byte* buf,
|
||||||
|
const byte* cached_rec,
|
||||||
|
row_prebuilt_t* prebuilt);
|
||||||
|
|
||||||
/** Query plan */
|
/** Query plan */
|
||||||
struct plan_t{
|
struct plan_t{
|
||||||
dict_table_t* table; /*!< table struct in the dictionary
|
dict_table_t* table; /*!< table struct in the dictionary
|
||||||
|
@ -48,7 +48,7 @@ Created 1/20/1994 Heikki Tuuri
|
|||||||
#define INNODB_VERSION_BUGFIX 36
|
#define INNODB_VERSION_BUGFIX 36
|
||||||
|
|
||||||
#ifndef PERCONA_INNODB_VERSION
|
#ifndef PERCONA_INNODB_VERSION
|
||||||
#define PERCONA_INNODB_VERSION 82.1
|
#define PERCONA_INNODB_VERSION 82.2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Enable UNIV_LOG_ARCHIVE in XtraDB */
|
/* Enable UNIV_LOG_ARCHIVE in XtraDB */
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2005, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 2005, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2014, 2017, MariaDB Corporation.
|
Copyright (c) 2014, 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
@ -1538,6 +1538,8 @@ row_merge_read_clustered_index(
|
|||||||
goto func_exit;
|
goto func_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mem_heap_empty(row_heap);
|
||||||
|
|
||||||
page_cur_move_to_next(cur);
|
page_cur_move_to_next(cur);
|
||||||
|
|
||||||
if (page_cur_is_after_last(cur)) {
|
if (page_cur_is_after_last(cur)) {
|
||||||
@ -1970,8 +1972,6 @@ write_buffers:
|
|||||||
goto func_exit;
|
goto func_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
mem_heap_empty(row_heap);
|
|
||||||
|
|
||||||
/* Increment innodb_onlineddl_pct_progress status variable */
|
/* Increment innodb_onlineddl_pct_progress status variable */
|
||||||
read_rows++;
|
read_rows++;
|
||||||
if(read_rows % 1000 == 0) {
|
if(read_rows % 1000 == 0) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2008, Google Inc.
|
Copyright (c) 2008, Google Inc.
|
||||||
Copyright (c) 2015, 2017, MariaDB Corporation.
|
Copyright (c) 2015, 2017, MariaDB Corporation.
|
||||||
|
|
||||||
@ -2571,31 +2571,30 @@ row_sel_store_row_id_to_prebuilt(
|
|||||||
(dest,templ,src,len)
|
(dest,templ,src,len)
|
||||||
#endif /* UNIV_DEBUG */
|
#endif /* UNIV_DEBUG */
|
||||||
|
|
||||||
/**************************************************************//**
|
/** Stores a non-SQL-NULL field in the MySQL format. The counterpart of this
|
||||||
Stores a non-SQL-NULL field in the MySQL format. The counterpart of this
|
function is row_mysql_store_col_in_innobase_format() in row0mysql.cc.
|
||||||
function is row_mysql_store_col_in_innobase_format() in row0mysql.cc. */
|
@param[in,out] dest buffer where to store; NOTE
|
||||||
|
that BLOBs are not in themselves stored
|
||||||
|
here: the caller must allocate and copy
|
||||||
|
the BLOB into buffer before, and pass
|
||||||
|
the pointer to the BLOB in 'data'
|
||||||
|
@param[in] templ MySQL column template. Its following fields
|
||||||
|
are referenced: type, is_unsigned, mysql_col_len,
|
||||||
|
mbminlen, mbmaxlen
|
||||||
|
@param[in] index InnoDB index
|
||||||
|
@param[in] field_no templ->rec_field_no or templ->clust_rec_field_no
|
||||||
|
or templ->icp_rec_field_no
|
||||||
|
@param[in] data data to store
|
||||||
|
@param[in] len length of the data
|
||||||
|
*/
|
||||||
static MY_ATTRIBUTE((nonnull))
|
static MY_ATTRIBUTE((nonnull))
|
||||||
void
|
void
|
||||||
row_sel_field_store_in_mysql_format_func(
|
row_sel_field_store_in_mysql_format_func(
|
||||||
/*=====================================*/
|
byte* dest,
|
||||||
byte* dest, /*!< in/out: buffer where to store; NOTE
|
|
||||||
that BLOBs are not in themselves
|
|
||||||
stored here: the caller must allocate
|
|
||||||
and copy the BLOB into buffer before,
|
|
||||||
and pass the pointer to the BLOB in
|
|
||||||
'data' */
|
|
||||||
const mysql_row_templ_t* templ,
|
const mysql_row_templ_t* templ,
|
||||||
/*!< in: MySQL column template.
|
|
||||||
Its following fields are referenced:
|
|
||||||
type, is_unsigned, mysql_col_len,
|
|
||||||
mbminlen, mbmaxlen */
|
|
||||||
#ifdef UNIV_DEBUG
|
#ifdef UNIV_DEBUG
|
||||||
const dict_index_t* index,
|
const dict_index_t* index,
|
||||||
/*!< in: InnoDB index */
|
|
||||||
ulint field_no,
|
ulint field_no,
|
||||||
/*!< in: templ->rec_field_no or
|
|
||||||
templ->clust_rec_field_no or
|
|
||||||
templ->icp_rec_field_no */
|
|
||||||
#endif /* UNIV_DEBUG */
|
#endif /* UNIV_DEBUG */
|
||||||
const byte* data, /*!< in: data to store */
|
const byte* data, /*!< in: data to store */
|
||||||
ulint len) /*!< in: length of the data */
|
ulint len) /*!< in: length of the data */
|
||||||
@ -2748,7 +2747,7 @@ row_sel_field_store_in_mysql_format_func(
|
|||||||
#endif /* UNIV_DEBUG */
|
#endif /* UNIV_DEBUG */
|
||||||
ut_ad(field->prefix_len
|
ut_ad(field->prefix_len
|
||||||
? field->prefix_len == len
|
? field->prefix_len == len
|
||||||
: templ->mysql_col_len == len);
|
: (templ->mysql_col_len == len));
|
||||||
memcpy(dest, data, len);
|
memcpy(dest, data, len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2772,8 +2771,6 @@ row_sel_field_store_in_mysql_format_func(
|
|||||||
@param[in] field_no templ->rec_field_no or
|
@param[in] field_no templ->rec_field_no or
|
||||||
templ->clust_rec_field_no
|
templ->clust_rec_field_no
|
||||||
or templ->icp_rec_field_no
|
or templ->icp_rec_field_no
|
||||||
or sec field no if clust_templ_for_sec
|
|
||||||
is TRUE
|
|
||||||
@param[in] templ row template
|
@param[in] templ row template
|
||||||
*/
|
*/
|
||||||
static MY_ATTRIBUTE((warn_unused_result))
|
static MY_ATTRIBUTE((warn_unused_result))
|
||||||
@ -2955,6 +2952,7 @@ row_sel_store_mysql_rec(
|
|||||||
= rec_clust
|
= rec_clust
|
||||||
? templ->clust_rec_field_no
|
? templ->clust_rec_field_no
|
||||||
: templ->rec_field_no;
|
: templ->rec_field_no;
|
||||||
|
|
||||||
/* We should never deliver column prefixes to MySQL,
|
/* We should never deliver column prefixes to MySQL,
|
||||||
except for evaluating innobase_index_cond() and if the prefix
|
except for evaluating innobase_index_cond() and if the prefix
|
||||||
index is longer than the actual row data. */
|
index is longer than the actual row data. */
|
||||||
@ -3353,6 +3351,36 @@ row_sel_copy_cached_field_for_mysql(
|
|||||||
ut_memcpy(buf, cache, len);
|
ut_memcpy(buf, cache, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Copy used fields from cached row.
|
||||||
|
Copy cache record field by field, don't touch fields that
|
||||||
|
are not covered by current key.
|
||||||
|
@param[out] buf Where to copy the MySQL row.
|
||||||
|
@param[in] cached_rec What to copy (in MySQL row format).
|
||||||
|
@param[in] prebuilt prebuilt struct. */
|
||||||
|
void
|
||||||
|
row_sel_copy_cached_fields_for_mysql(
|
||||||
|
byte* buf,
|
||||||
|
const byte* cached_rec,
|
||||||
|
row_prebuilt_t* prebuilt)
|
||||||
|
{
|
||||||
|
const mysql_row_templ_t*templ;
|
||||||
|
ulint i;
|
||||||
|
for (i = 0; i < prebuilt->n_template; i++) {
|
||||||
|
templ = prebuilt->mysql_template + i;
|
||||||
|
|
||||||
|
row_sel_copy_cached_field_for_mysql(
|
||||||
|
buf, cached_rec, templ);
|
||||||
|
/* Copy NULL bit of the current field from cached_rec
|
||||||
|
to buf */
|
||||||
|
if (templ->mysql_null_bit_mask) {
|
||||||
|
buf[templ->mysql_null_byte_offset]
|
||||||
|
^= (buf[templ->mysql_null_byte_offset]
|
||||||
|
^ cached_rec[templ->mysql_null_byte_offset])
|
||||||
|
& (byte) templ->mysql_null_bit_mask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/********************************************************************//**
|
/********************************************************************//**
|
||||||
Pops a cached row for MySQL from the fetch cache. */
|
Pops a cached row for MySQL from the fetch cache. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
|
@ -35,7 +35,3 @@ ADD_CONVENIENCE_LIBRARY(strings ${STRINGS_SOURCES})
|
|||||||
|
|
||||||
ADD_EXECUTABLE(conf_to_src EXCLUDE_FROM_ALL conf_to_src.c)
|
ADD_EXECUTABLE(conf_to_src EXCLUDE_FROM_ALL conf_to_src.c)
|
||||||
TARGET_LINK_LIBRARIES(conf_to_src strings)
|
TARGET_LINK_LIBRARIES(conf_to_src strings)
|
||||||
|
|
||||||
IF(MSVC)
|
|
||||||
INSTALL_DEBUG_TARGET(strings DESTINATION ${INSTALL_LIBDIR}/debug)
|
|
||||||
ENDIF()
|
|
||||||
|
@ -20,7 +20,3 @@ ADD_DEFINITIONS(${SSL_DEFINES})
|
|||||||
SET(VIO_SOURCES vio.c viosocket.c viossl.c viopipe.c vioshm.c viosslfactories.c)
|
SET(VIO_SOURCES vio.c viosocket.c viossl.c viopipe.c vioshm.c viosslfactories.c)
|
||||||
ADD_CONVENIENCE_LIBRARY(vio ${VIO_SOURCES})
|
ADD_CONVENIENCE_LIBRARY(vio ${VIO_SOURCES})
|
||||||
TARGET_LINK_LIBRARIES(vio ${LIBSOCKET})
|
TARGET_LINK_LIBRARIES(vio ${LIBSOCKET})
|
||||||
|
|
||||||
IF(MSVC)
|
|
||||||
INSTALL_DEBUG_TARGET(vio DESTINATION ${INSTALL_LIBDIR}/debug)
|
|
||||||
ENDIF()
|
|
||||||
|
@ -22,8 +22,3 @@ SET(ZLIB_SOURCES adler32.c compress.c crc32.c crc32.h deflate.c deflate.h gzio.
|
|||||||
zutil.c zutil.h)
|
zutil.c zutil.h)
|
||||||
ADD_CONVENIENCE_LIBRARY(zlib ${ZLIB_SOURCES})
|
ADD_CONVENIENCE_LIBRARY(zlib ${ZLIB_SOURCES})
|
||||||
RESTRICT_SYMBOL_EXPORTS(zlib)
|
RESTRICT_SYMBOL_EXPORTS(zlib)
|
||||||
|
|
||||||
IF(MSVC)
|
|
||||||
INSTALL_DEBUG_TARGET(zlib DESTINATION ${INSTALL_LIBDIR}/debug)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user