Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-maint sql/set_var.cc: Auto merged
This commit is contained in:
commit
b5761c5c35
@ -708,7 +708,6 @@ mysql-test/r/*.err
|
|||||||
mysql-test/r/*.log
|
mysql-test/r/*.log
|
||||||
mysql-test/r/*.out
|
mysql-test/r/*.out
|
||||||
mysql-test/r/*.reject
|
mysql-test/r/*.reject
|
||||||
mysql-test/r/*.warnings
|
|
||||||
mysql-test/r/alter_table.err
|
mysql-test/r/alter_table.err
|
||||||
mysql-test/r/archive.err
|
mysql-test/r/archive.err
|
||||||
mysql-test/r/bdb-alter-table-1.err
|
mysql-test/r/bdb-alter-table-1.err
|
||||||
@ -1342,3 +1341,6 @@ win/vs71cache.txt
|
|||||||
win/vs8cache.txt
|
win/vs8cache.txt
|
||||||
zlib/*.ds?
|
zlib/*.ds?
|
||||||
zlib/*.vcproj
|
zlib/*.vcproj
|
||||||
|
debian/control
|
||||||
|
debian/defs.mk
|
||||||
|
include/abi_check
|
||||||
|
@ -104,6 +104,12 @@ check_cpu () {
|
|||||||
*Athlon*64*)
|
*Athlon*64*)
|
||||||
cpu_arg="athlon64";
|
cpu_arg="athlon64";
|
||||||
;;
|
;;
|
||||||
|
*Turion*)
|
||||||
|
cpu_arg="athlon64";
|
||||||
|
;;
|
||||||
|
*Opteron*)
|
||||||
|
cpu_arg="athlon64";
|
||||||
|
;;
|
||||||
*Athlon*)
|
*Athlon*)
|
||||||
cpu_arg="athlon";
|
cpu_arg="athlon";
|
||||||
;;
|
;;
|
||||||
|
@ -13,8 +13,9 @@ export LDFLAGS="-fprofile-arcs -ftest-coverage"
|
|||||||
|
|
||||||
# The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
|
# The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
|
||||||
# code with profiling information used by gcov.
|
# code with profiling information used by gcov.
|
||||||
# the -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
|
# The -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
|
||||||
extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM $debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov"
|
# The -DHAVE_gcov enables code to write out coverage info even when crashing.
|
||||||
|
extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM $debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov -DHAVE_gcov"
|
||||||
c_warnings="$c_warnings $debug_extra_warnings"
|
c_warnings="$c_warnings $debug_extra_warnings"
|
||||||
cxx_warnings="$cxx_warnings $debug_extra_warnings"
|
cxx_warnings="$cxx_warnings $debug_extra_warnings"
|
||||||
extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
|
extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
|
||||||
|
@ -33,6 +33,13 @@ then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
IS_MERGE=`bk changes -r+ -k -m`
|
||||||
|
if [ "$IS_MERGE" = "" ]
|
||||||
|
then
|
||||||
|
echo Merge changeset, not sending mails
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
CHANGESET=`bk -R prs -r+ -h -d':P:::I:' ChangeSet`
|
CHANGESET=`bk -R prs -r+ -h -d':P:::I:' ChangeSet`
|
||||||
CSETKEY=`bk -R prs -r+ -h -d':KEY:' ChangeSet`
|
CSETKEY=`bk -R prs -r+ -h -d':KEY:' ChangeSet`
|
||||||
#
|
#
|
||||||
@ -48,44 +55,35 @@ WL=`bk -R prs -r+ -h -d':C:' ChangeSet | \
|
|||||||
s/.*\(WL#[0-9][0-9]*\)/ \1/p'`
|
s/.*\(WL#[0-9][0-9]*\)/ \1/p'`
|
||||||
if [ "$BUG" = "" ]
|
if [ "$BUG" = "" ]
|
||||||
then
|
then
|
||||||
TO=dev-public@mysql.com
|
# TO=dev-public@mysql.com
|
||||||
BS=""
|
BS=""
|
||||||
BH=""
|
BH=""
|
||||||
else
|
else
|
||||||
TO=dev-bugs@mysql.com
|
# TO=dev-bugs@mysql.com
|
||||||
BS=" BUG#$BUG"
|
BS=" BUG#$BUG"
|
||||||
# need newline here
|
# need newline here
|
||||||
BH="X-Bug: $BUG
|
BH="X-Bug: $BUG
|
||||||
"
|
"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#++
|
#++
|
||||||
# dev-public@ / dev-bugs@
|
# commits@ or dev-private@ mail
|
||||||
#--
|
#--
|
||||||
echo "Commit successful, notifying developers at $TO"
|
|
||||||
|
LIST="commits"
|
||||||
|
TO="commits@lists.mysql.com"
|
||||||
|
if [ -f .tree-is-private ]
|
||||||
|
then
|
||||||
|
LIST="dev-private"
|
||||||
|
TO="dev-private@mysql.com"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Notifying $LIST list at $TO"
|
||||||
(
|
(
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
List-ID: <bk.mysql-$VERSION>
|
List-ID: <bk.mysql-$VERSION>
|
||||||
From: $FROM
|
From: $FROM
|
||||||
To: $TO
|
To: $TO
|
||||||
Subject: bk commit - $VERSION tree ($CHANGESET)${BS}${WL}
|
|
||||||
X-CSetKey: <$CSETKEY>
|
|
||||||
$BH
|
|
||||||
EOF
|
|
||||||
bk changes -v -r+
|
|
||||||
bk cset -r+ -d
|
|
||||||
) > $BKROOT/BitKeeper/tmp/dev_public.txt
|
|
||||||
|
|
||||||
$SENDMAIL -t < $BKROOT/BitKeeper/tmp/dev_public.txt
|
|
||||||
|
|
||||||
#++
|
|
||||||
# commits@ mail
|
|
||||||
#--
|
|
||||||
echo "Notifying commits list at $COMMITS"
|
|
||||||
(
|
|
||||||
cat <<EOF
|
|
||||||
List-ID: <bk.mysql-$VERSION>
|
|
||||||
From: $FROM
|
|
||||||
To: $COMMITS
|
|
||||||
Subject: bk commit into $VERSION tree ($CHANGESET)$BS
|
Subject: bk commit into $VERSION tree ($CHANGESET)$BS
|
||||||
X-CSetKey: <$CSETKEY>
|
X-CSetKey: <$CSETKEY>
|
||||||
$BH
|
$BH
|
||||||
@ -98,7 +96,7 @@ see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
|
|||||||
|
|
||||||
EOF
|
EOF
|
||||||
bk changes -v -r+
|
bk changes -v -r+
|
||||||
bk cset -r+ -d
|
bk rset -r+ -ah | bk gnupatch -h -dup -T
|
||||||
) | bk sed -e ${LIMIT}q > $BKROOT/BitKeeper/tmp/commits.txt
|
) | bk sed -e ${LIMIT}q > $BKROOT/BitKeeper/tmp/commits.txt
|
||||||
|
|
||||||
$SENDMAIL -t < $BKROOT/BitKeeper/tmp/commits.txt
|
$SENDMAIL -t < $BKROOT/BitKeeper/tmp/commits.txt
|
||||||
@ -120,7 +118,7 @@ Subject: bk commit - $VERSION tree (Manual) ($CHANGESET)$BS
|
|||||||
|
|
||||||
EOF
|
EOF
|
||||||
bk changes -v -r+
|
bk changes -v -r+
|
||||||
bk cset -r+ -d
|
bk rset -r+ -ah | bk gnupatch -h -dup -T
|
||||||
) > $BKROOT/BitKeeper/tmp/docs.txt
|
) > $BKROOT/BitKeeper/tmp/docs.txt
|
||||||
$SENDMAIL -t < $BKROOT/BitKeeper/tmp/docs.txt
|
$SENDMAIL -t < $BKROOT/BitKeeper/tmp/docs.txt
|
||||||
fi
|
fi
|
||||||
|
@ -158,10 +158,10 @@ IF(EMBED_MANIFESTS)
|
|||||||
STRING(REGEX MATCH "MANIFEST:NO" tmp_manifest ${CMAKE_EXE_LINKER_FLAGS})
|
STRING(REGEX MATCH "MANIFEST:NO" tmp_manifest ${CMAKE_EXE_LINKER_FLAGS})
|
||||||
IF(NOT tmp_manifest)
|
IF(NOT tmp_manifest)
|
||||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
|
||||||
ENDIF(tmp_manifest)
|
ENDIF(NOT tmp_manifest)
|
||||||
# Set the processor architecture.
|
# Set the processor architecture.
|
||||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||||
SET(PROCESSOR_ARCH "X64")
|
SET(PROCESSOR_ARCH "amd64")
|
||||||
ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||||
SET(PROCESSOR_ARCH "X86")
|
SET(PROCESSOR_ARCH "X86")
|
||||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||||
|
10
Makefile.am
10
Makefile.am
@ -157,6 +157,16 @@ test-bt:
|
|||||||
@PERL@ ./mysql-test-run.pl --force --comment=funcs1_ps --ps-protocol --suite=funcs_1
|
@PERL@ ./mysql-test-run.pl --force --comment=funcs1_ps --ps-protocol --suite=funcs_1
|
||||||
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
@PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2
|
@PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2
|
||||||
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
|
@PERL@ ./mysql-test-run.pl --force --comment=rowlock --suite=row_lock
|
||||||
|
-if [ -d mysql-test/suite/nist ] ; then \
|
||||||
|
cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
|
@PERL@ ./mysql-test-run.pl --comment=NIST+normal --force --suite=nist ; \
|
||||||
|
fi
|
||||||
|
-if [ -d mysql-test/suite/nist ] ; then \
|
||||||
|
cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
|
@PERL@ ./mysql-test-run.pl --comment=NIST+ps --force --suite=nist --ps-protocol ; \
|
||||||
|
fi
|
||||||
|
|
||||||
test-bt-debug:
|
test-bt-debug:
|
||||||
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
|
@ -19,16 +19,53 @@ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
|||||||
|
|
||||||
# The old Windows build method used renamed (.cc -> .cpp) source files, fails
|
# The old Windows build method used renamed (.cc -> .cpp) source files, fails
|
||||||
# in #include in mysqlbinlog.cc. So disable that using the USING_CMAKE define.
|
# in #include in mysqlbinlog.cc. So disable that using the USING_CMAKE define.
|
||||||
ADD_DEFINITIONS(-DUSING_CMAKE)
|
ADD_DEFINITIONS(-DUSING_CMAKE -DYASSL_PREFIX -DUSE_TLS)
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
|
||||||
${CMAKE_SOURCE_DIR}/zlib
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
${CMAKE_SOURCE_DIR}/zlib
|
||||||
|
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||||
|
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include
|
||||||
|
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL
|
||||||
${CMAKE_SOURCE_DIR}/libmysql
|
${CMAKE_SOURCE_DIR}/libmysql
|
||||||
${CMAKE_SOURCE_DIR}/regex
|
${CMAKE_SOURCE_DIR}/regex
|
||||||
${CMAKE_SOURCE_DIR}/mysys
|
${CMAKE_SOURCE_DIR}/mysys
|
||||||
${CMAKE_SOURCE_DIR}/sql
|
${CMAKE_SOURCE_DIR}/sql
|
||||||
${CMAKE_SOURCE_DIR}/strings)
|
${CMAKE_SOURCE_DIR}/strings)
|
||||||
|
|
||||||
|
SET(YASSL_SOURCES ../extra/yassl/src/buffer.cpp
|
||||||
|
../extra/yassl/src/cert_wrapper.cpp
|
||||||
|
../extra/yassl/src/crypto_wrapper.cpp
|
||||||
|
../extra/yassl/src/handshake.cpp
|
||||||
|
../extra/yassl/src/lock.cpp
|
||||||
|
../extra/yassl/src/log.cpp
|
||||||
|
../extra/yassl/src/socket_wrapper.cpp
|
||||||
|
../extra/yassl/src/ssl.cpp
|
||||||
|
../extra/yassl/src/timer.cpp
|
||||||
|
../extra/yassl/src/yassl_error.cpp
|
||||||
|
../extra/yassl/src/yassl_imp.cpp
|
||||||
|
../extra/yassl/src/yassl_int.cpp)
|
||||||
|
|
||||||
|
SET(TAOCRYPT_SOURCES ../extra/yassl/taocrypt/src/aes.cpp
|
||||||
|
../extra/yassl/taocrypt/src/aestables.cpp
|
||||||
|
../extra/yassl/taocrypt/src/algebra.cpp
|
||||||
|
../extra/yassl/taocrypt/src/arc4.cpp
|
||||||
|
../extra/yassl/taocrypt/src/asn.cpp
|
||||||
|
../extra/yassl/taocrypt/src/coding.cpp
|
||||||
|
../extra/yassl/taocrypt/src/des.cpp
|
||||||
|
../extra/yassl/taocrypt/src/dh.cpp
|
||||||
|
../extra/yassl/taocrypt/src/dsa.cpp
|
||||||
|
../extra/yassl/taocrypt/src/file.cpp
|
||||||
|
../extra/yassl/taocrypt/src/hash.cpp
|
||||||
|
../extra/yassl/taocrypt/src/integer.cpp
|
||||||
|
../extra/yassl/taocrypt/src/md2.cpp
|
||||||
|
../extra/yassl/taocrypt/src/md4.cpp
|
||||||
|
../extra/yassl/taocrypt/src/md5.cpp
|
||||||
|
../extra/yassl/taocrypt/src/misc.cpp
|
||||||
|
../extra/yassl/taocrypt/src/random.cpp
|
||||||
|
../extra/yassl/taocrypt/src/ripemd.cpp
|
||||||
|
../extra/yassl/taocrypt/src/rsa.cpp
|
||||||
|
../extra/yassl/taocrypt/src/sha.cpp)
|
||||||
|
|
||||||
ADD_LIBRARY(mysqlclient ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
ADD_LIBRARY(mysqlclient ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
||||||
../strings/bmove_upp.c ../mysys/charset-def.c ../mysys/charset.c
|
../strings/bmove_upp.c ../mysys/charset-def.c ../mysys/charset.c
|
||||||
../sql-common/client.c ../strings/ctype-big5.c ../strings/ctype-bin.c
|
../sql-common/client.c ../strings/ctype-big5.c ../strings/ctype-bin.c
|
||||||
@ -63,39 +100,42 @@ ADD_LIBRARY(mysqlclient ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
|||||||
../strings/strmov.c ../strings/strnlen.c ../strings/strnmov.c ../strings/strtod.c
|
../strings/strmov.c ../strings/strnlen.c ../strings/strnmov.c ../strings/strtod.c
|
||||||
../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c
|
../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c
|
||||||
../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c
|
../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c
|
||||||
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c)
|
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c
|
||||||
|
${YASSL_SOURCES} ${TAOCRYPT_SOURCES}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
ADD_DEPENDENCIES(mysqlclient GenError)
|
ADD_DEPENDENCIES(mysqlclient GenError)
|
||||||
ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc)
|
ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc)
|
||||||
LINK_DIRECTORIES(${MYSQL_BINARY_DIR}/mysys ${MYSQL_BINARY_DIR}/zlib)
|
LINK_DIRECTORIES(${MYSQL_BINARY_DIR}/mysys ${MYSQL_BINARY_DIR}/zlib)
|
||||||
TARGET_LINK_LIBRARIES(mysql mysqlclient mysys yassl taocrypt zlib dbug wsock32)
|
TARGET_LINK_LIBRARIES(mysql mysqlclient mysys zlib dbug wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqltest mysqltest.c)
|
ADD_EXECUTABLE(mysqltest mysqltest.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqltest mysqlclient mysys yassl taocrypt zlib dbug regex wsock32)
|
TARGET_LINK_LIBRARIES(mysqltest mysqlclient mysys zlib dbug regex wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
|
ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient dbug yassl taocrypt zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient dbug zlib wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c)
|
ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqldump mysqlclient mysys dbug yassl taocrypt zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqldump mysqlclient mysys dbug zlib wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient mysys dbug yassl taocrypt zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient mysys dbug zlib wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c ../mysys/my_getpagesize.c)
|
ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c ../mysys/my_getpagesize.c)
|
||||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient mysys dbug yassl taocrypt zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient mysys dbug zlib wsock32)
|
||||||
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqlshow mysqlshow.c)
|
ADD_EXECUTABLE(mysqlshow mysqlshow.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient mysys dbug yassl taocrypt zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient mysys dbug zlib wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc ../mysys/mf_tempdir.c ../mysys/my_new.cc
|
ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc ../mysys/mf_tempdir.c ../mysys/my_new.cc
|
||||||
../mysys/my_bit.c ../mysys/my_bitmap.c
|
../mysys/my_bit.c ../mysys/my_bitmap.c
|
||||||
../mysys/base64.c)
|
../mysys/base64.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient dbug yassl taocrypt zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient dbug zlib wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
|
ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
|
||||||
TARGET_LINK_LIBRARIES(mysqladmin mysqlclient mysys dbug yassl taocrypt zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqladmin mysqlclient mysys dbug zlib wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(echo echo.c)
|
ADD_EXECUTABLE(echo echo.c)
|
||||||
|
|
||||||
|
@ -686,6 +686,18 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
opt_disable_keys=0;
|
opt_disable_keys=0;
|
||||||
|
|
||||||
|
if (strlen(argument) >= FN_REFLEN)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
This check is made because the some the file functions below
|
||||||
|
have FN_REFLEN sized stack allocated buffers and will cause
|
||||||
|
a crash even if the input destination buffer is large enough
|
||||||
|
to hold the output.
|
||||||
|
*/
|
||||||
|
die(EX_USAGE, "Input filename too long: %s", argument);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||||
@ -2324,17 +2336,6 @@ static void dump_table(char *table, char *db)
|
|||||||
{
|
{
|
||||||
char filename[FN_REFLEN], tmp_path[FN_REFLEN];
|
char filename[FN_REFLEN], tmp_path[FN_REFLEN];
|
||||||
|
|
||||||
if (strlen(path) >= FN_REFLEN)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
This check is made because the some the file functions below
|
|
||||||
have FN_REFLEN sized stack allocated buffers and will cause
|
|
||||||
a crash even if the input destination buffer is large enough
|
|
||||||
to hold the output.
|
|
||||||
*/
|
|
||||||
die(EX_USAGE, "Input filename or options too long: %s", path);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Convert the path to native os format
|
Convert the path to native os format
|
||||||
and resolve to the full filepath.
|
and resolve to the full filepath.
|
||||||
@ -2535,15 +2536,18 @@ static void dump_table(char *table, char *db)
|
|||||||
plus 2 bytes for '0x' prefix.
|
plus 2 bytes for '0x' prefix.
|
||||||
- In non-HEX mode we need up to 2 bytes per character,
|
- In non-HEX mode we need up to 2 bytes per character,
|
||||||
plus 2 bytes for leading and trailing '\'' characters.
|
plus 2 bytes for leading and trailing '\'' characters.
|
||||||
|
Also we need to reserve 1 byte for terminating '\0'.
|
||||||
*/
|
*/
|
||||||
dynstr_realloc_checked(&extended_row,length * 2+2);
|
dynstr_realloc_checked(&extended_row,length * 2 + 2 + 1);
|
||||||
if (opt_hex_blob && is_blob)
|
if (opt_hex_blob && is_blob)
|
||||||
{
|
{
|
||||||
dynstr_append_checked(&extended_row, "0x");
|
dynstr_append_checked(&extended_row, "0x");
|
||||||
extended_row.length+= mysql_hex_string(extended_row.str +
|
extended_row.length+= mysql_hex_string(extended_row.str +
|
||||||
extended_row.length,
|
extended_row.length,
|
||||||
row[i], length);
|
row[i], length);
|
||||||
extended_row.str[extended_row.length]= '\0';
|
DBUG_ASSERT(extended_row.length+1 <= extended_row.max_length);
|
||||||
|
/* mysql_hex_string() already terminated string by '\0' */
|
||||||
|
DBUG_ASSERT(extended_row.str[extended_row.length] == '\0');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3268,10 +3272,41 @@ static int do_unlock_tables(MYSQL *mysql_con)
|
|||||||
return mysql_query_with_error_report(mysql_con, 0, "UNLOCK TABLES");
|
return mysql_query_with_error_report(mysql_con, 0, "UNLOCK TABLES");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int get_bin_log_name(MYSQL *mysql_con,
|
||||||
static int do_reset_master(MYSQL *mysql_con)
|
char* buff_log_name, uint buff_len)
|
||||||
{
|
{
|
||||||
return mysql_query_with_error_report(mysql_con, 0, "RESET MASTER");
|
MYSQL_RES *res;
|
||||||
|
MYSQL_ROW row;
|
||||||
|
|
||||||
|
if (mysql_query(mysql_con, "SHOW MASTER STATUS") ||
|
||||||
|
!(res= mysql_store_result(mysql)))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
if (!(row= mysql_fetch_row(res)))
|
||||||
|
{
|
||||||
|
mysql_free_result(res);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
Only one row is returned, and the first column is the name of the
|
||||||
|
active log.
|
||||||
|
*/
|
||||||
|
strmake(buff_log_name, row[0], buff_len - 1);
|
||||||
|
|
||||||
|
mysql_free_result(res);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int purge_bin_logs_to(MYSQL *mysql_con, char* log_name)
|
||||||
|
{
|
||||||
|
DYNAMIC_STRING str;
|
||||||
|
int err;
|
||||||
|
init_dynamic_string_checked(&str, "PURGE BINARY LOGS TO '", 1024, 1024);
|
||||||
|
dynstr_append_checked(&str, log_name);
|
||||||
|
dynstr_append_checked(&str, "'");
|
||||||
|
err = mysql_query_with_error_report(mysql_con, 0, str.str);
|
||||||
|
dynstr_free(&str);
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3795,6 +3830,7 @@ static void dynstr_realloc_checked(DYNAMIC_STRING *str, ulong additional_size)
|
|||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
char bin_log_name[FN_REFLEN];
|
||||||
int exit_code;
|
int exit_code;
|
||||||
MY_INIT("mysqldump");
|
MY_INIT("mysqldump");
|
||||||
|
|
||||||
@ -3831,8 +3867,13 @@ int main(int argc, char **argv)
|
|||||||
goto err;
|
goto err;
|
||||||
if (opt_single_transaction && start_transaction(mysql))
|
if (opt_single_transaction && start_transaction(mysql))
|
||||||
goto err;
|
goto err;
|
||||||
if (opt_delete_master_logs && do_reset_master(mysql))
|
if (opt_delete_master_logs)
|
||||||
goto err;
|
{
|
||||||
|
if (mysql_refresh(mysql, REFRESH_LOG) ||
|
||||||
|
get_bin_log_name(mysql, bin_log_name, sizeof(bin_log_name)))
|
||||||
|
goto err;
|
||||||
|
flush_logs= 0;
|
||||||
|
}
|
||||||
if (opt_lock_all_tables || opt_master_data)
|
if (opt_lock_all_tables || opt_master_data)
|
||||||
{
|
{
|
||||||
if (flush_logs && mysql_refresh(mysql, REFRESH_LOG))
|
if (flush_logs && mysql_refresh(mysql, REFRESH_LOG))
|
||||||
@ -3856,6 +3897,18 @@ int main(int argc, char **argv)
|
|||||||
/* One or more databases, all tables */
|
/* One or more databases, all tables */
|
||||||
dump_databases(argv);
|
dump_databases(argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ensure dumped data flushed */
|
||||||
|
if (md_result_file && fflush(md_result_file))
|
||||||
|
{
|
||||||
|
if (!first_error)
|
||||||
|
first_error= EX_MYSQLERR;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
/* everything successful, purge the old logs files */
|
||||||
|
if (opt_delete_master_logs && purge_bin_logs_to(mysql, bin_log_name))
|
||||||
|
goto err;
|
||||||
|
|
||||||
#ifdef HAVE_SMEM
|
#ifdef HAVE_SMEM
|
||||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||||
#endif
|
#endif
|
||||||
|
@ -280,6 +280,7 @@ enum enum_commands {
|
|||||||
Q_REPLACE_REGEX, Q_REMOVE_FILE, Q_FILE_EXIST,
|
Q_REPLACE_REGEX, Q_REMOVE_FILE, Q_FILE_EXIST,
|
||||||
Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT, Q_SKIP,
|
Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT, Q_SKIP,
|
||||||
Q_CHMOD_FILE, Q_APPEND_FILE, Q_CAT_FILE, Q_DIFF_FILES,
|
Q_CHMOD_FILE, Q_APPEND_FILE, Q_CAT_FILE, Q_DIFF_FILES,
|
||||||
|
Q_SEND_QUIT,
|
||||||
|
|
||||||
Q_UNKNOWN, /* Unknown command. */
|
Q_UNKNOWN, /* Unknown command. */
|
||||||
Q_COMMENT, /* Comments, ignored. */
|
Q_COMMENT, /* Comments, ignored. */
|
||||||
@ -367,6 +368,7 @@ const char *command_names[]=
|
|||||||
"append_file",
|
"append_file",
|
||||||
"cat_file",
|
"cat_file",
|
||||||
"diff_files",
|
"diff_files",
|
||||||
|
"send_quit",
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -496,6 +498,10 @@ void handle_error(struct st_command*,
|
|||||||
void handle_no_error(struct st_command*);
|
void handle_no_error(struct st_command*);
|
||||||
|
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
|
||||||
|
/* attributes of the query thread */
|
||||||
|
pthread_attr_t cn_thd_attrib;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
send_one_query executes query in separate thread what is
|
send_one_query executes query in separate thread what is
|
||||||
necessary in embedded library to run 'send' in proper way.
|
necessary in embedded library to run 'send' in proper way.
|
||||||
@ -534,7 +540,7 @@ static int do_send_query(struct st_connection *cn, const char *q, int q_len,
|
|||||||
cn->cur_query= q;
|
cn->cur_query= q;
|
||||||
cn->cur_query_len= q_len;
|
cn->cur_query_len= q_len;
|
||||||
cn->query_done= 0;
|
cn->query_done= 0;
|
||||||
if (pthread_create(&tid, NULL, send_one_query, (void*)cn))
|
if (pthread_create(&tid, &cn_thd_attrib, send_one_query, (void*)cn))
|
||||||
die("Cannot start new thread for query");
|
die("Cannot start new thread for query");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -1143,6 +1149,50 @@ void check_require(DYNAMIC_STRING* ds, const char *fname)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Remove surrounding chars from string
|
||||||
|
|
||||||
|
Return 1 if first character is found but not last
|
||||||
|
*/
|
||||||
|
static int strip_surrounding(char* str, char c1, char c2)
|
||||||
|
{
|
||||||
|
char* ptr= str;
|
||||||
|
|
||||||
|
/* Check if the first non space character is c1 */
|
||||||
|
while(*ptr && my_isspace(charset_info, *ptr))
|
||||||
|
ptr++;
|
||||||
|
if (*ptr == c1)
|
||||||
|
{
|
||||||
|
/* Replace it with a space */
|
||||||
|
*ptr= ' ';
|
||||||
|
|
||||||
|
/* Last non space charecter should be c2 */
|
||||||
|
ptr= strend(str)-1;
|
||||||
|
while(*ptr && my_isspace(charset_info, *ptr))
|
||||||
|
ptr--;
|
||||||
|
if (*ptr == c2)
|
||||||
|
{
|
||||||
|
/* Replace it with \0 */
|
||||||
|
*ptr= 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Mismatch detected */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void strip_parentheses(struct st_command *command)
|
||||||
|
{
|
||||||
|
if (strip_surrounding(command->first_argument, '(', ')'))
|
||||||
|
die("%.*s - argument list started with '%c' must be ended with '%c'",
|
||||||
|
command->first_word_len, command->query, '(', ')');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static byte *get_var_key(const byte* var, uint* len,
|
static byte *get_var_key(const byte* var, uint* len,
|
||||||
my_bool __attribute__((unused)) t)
|
my_bool __attribute__((unused)) t)
|
||||||
{
|
{
|
||||||
@ -1398,12 +1448,11 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
|
|||||||
init_dynamic_string(&ds_query, 0, (end - query) + 32, 256);
|
init_dynamic_string(&ds_query, 0, (end - query) + 32, 256);
|
||||||
do_eval(&ds_query, query, end, FALSE);
|
do_eval(&ds_query, query, end, FALSE);
|
||||||
|
|
||||||
if (mysql_real_query(mysql, ds_query.str, ds_query.length) ||
|
if (mysql_real_query(mysql, ds_query.str, ds_query.length))
|
||||||
!(res = mysql_store_result(mysql)))
|
|
||||||
{
|
|
||||||
die("Error running query '%s': %d %s", ds_query.str,
|
die("Error running query '%s': %d %s", ds_query.str,
|
||||||
mysql_errno(mysql), mysql_error(mysql));
|
mysql_errno(mysql), mysql_error(mysql));
|
||||||
}
|
if (!(res= mysql_store_result(mysql)))
|
||||||
|
die("Query '%s' didn't return a result set", ds_query.str);
|
||||||
dynstr_free(&ds_query);
|
dynstr_free(&ds_query);
|
||||||
|
|
||||||
if ((row = mysql_fetch_row(res)) && row[0])
|
if ((row = mysql_fetch_row(res)) && row[0])
|
||||||
@ -1457,6 +1506,130 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Set variable from the result of a field in a query
|
||||||
|
|
||||||
|
This function is useful when checking for a certain value
|
||||||
|
in the output from a query that can't be restricted to only
|
||||||
|
return some values. A very good example of that is most SHOW
|
||||||
|
commands.
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
var_set_query_get_value()
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
let $variable= query_get_value(<query to run>,<column name>,<row no>);
|
||||||
|
|
||||||
|
<query to run> - The query that should be sent to the server
|
||||||
|
<column name> - Name of the column that holds the field be compared
|
||||||
|
against the expected value
|
||||||
|
<row no> - Number of the row that holds the field to be
|
||||||
|
compared against the expected value
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
void var_set_query_get_value(struct st_command *command, VAR *var)
|
||||||
|
{
|
||||||
|
ulong row_no;
|
||||||
|
int col_no= -1;
|
||||||
|
MYSQL_RES* res;
|
||||||
|
MYSQL* mysql= &cur_con->mysql;
|
||||||
|
|
||||||
|
static DYNAMIC_STRING ds_query;
|
||||||
|
static DYNAMIC_STRING ds_col;
|
||||||
|
static DYNAMIC_STRING ds_row;
|
||||||
|
const struct command_arg query_get_value_args[] = {
|
||||||
|
"query", ARG_STRING, TRUE, &ds_query, "Query to run",
|
||||||
|
"column name", ARG_STRING, TRUE, &ds_col, "Name of column",
|
||||||
|
"row number", ARG_STRING, TRUE, &ds_row, "Number for row",
|
||||||
|
};
|
||||||
|
|
||||||
|
DBUG_ENTER("var_set_query_get_value");
|
||||||
|
LINT_INIT(res);
|
||||||
|
|
||||||
|
strip_parentheses(command);
|
||||||
|
DBUG_PRINT("info", ("query: %s", command->query));
|
||||||
|
check_command_args(command, command->first_argument, query_get_value_args,
|
||||||
|
sizeof(query_get_value_args)/sizeof(struct command_arg),
|
||||||
|
',');
|
||||||
|
|
||||||
|
DBUG_PRINT("info", ("query: %s", ds_query.str));
|
||||||
|
DBUG_PRINT("info", ("col: %s", ds_col.str));
|
||||||
|
|
||||||
|
/* Convert row number to int */
|
||||||
|
if (!str2int(ds_row.str, 10, (long) 0, (long) INT_MAX, &row_no))
|
||||||
|
die("Invalid row number: '%s'", ds_row.str);
|
||||||
|
DBUG_PRINT("info", ("row: %s, row_no: %ld", ds_row.str, row_no));
|
||||||
|
dynstr_free(&ds_row);
|
||||||
|
|
||||||
|
/* Remove any surrounding "'s from the query - if there is any */
|
||||||
|
if (strip_surrounding(ds_query.str, '"', '"'))
|
||||||
|
die("Mismatched \"'s around query '%s'", ds_query.str);
|
||||||
|
|
||||||
|
/* Run the query */
|
||||||
|
if (mysql_real_query(mysql, ds_query.str, ds_query.length))
|
||||||
|
die("Error running query '%s': %d %s", ds_query.str,
|
||||||
|
mysql_errno(mysql), mysql_error(mysql));
|
||||||
|
if (!(res= mysql_store_result(mysql)))
|
||||||
|
die("Query '%s' didn't return a result set", ds_query.str);
|
||||||
|
|
||||||
|
{
|
||||||
|
/* Find column number from the given column name */
|
||||||
|
uint i;
|
||||||
|
uint num_fields= mysql_num_fields(res);
|
||||||
|
MYSQL_FIELD *fields= mysql_fetch_fields(res);
|
||||||
|
|
||||||
|
for (i= 0; i < num_fields; i++)
|
||||||
|
{
|
||||||
|
if (strcmp(fields[i].name, ds_col.str) == 0 &&
|
||||||
|
strlen(fields[i].name) == ds_col.length)
|
||||||
|
{
|
||||||
|
col_no= i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (col_no == -1)
|
||||||
|
{
|
||||||
|
mysql_free_result(res);
|
||||||
|
die("Could not find column '%s' in the result of '%s'",
|
||||||
|
ds_col.str, ds_query.str);
|
||||||
|
}
|
||||||
|
DBUG_PRINT("info", ("Found column %d with name '%s'",
|
||||||
|
i, fields[i].name));
|
||||||
|
}
|
||||||
|
dynstr_free(&ds_col);
|
||||||
|
|
||||||
|
{
|
||||||
|
/* Get the value */
|
||||||
|
MYSQL_ROW row;
|
||||||
|
ulong rows= 0;
|
||||||
|
const char* value= "No such row";
|
||||||
|
|
||||||
|
while ((row= mysql_fetch_row(res)))
|
||||||
|
{
|
||||||
|
if (++rows == row_no)
|
||||||
|
{
|
||||||
|
|
||||||
|
DBUG_PRINT("info", ("At row %ld, column %d is '%s'",
|
||||||
|
row_no, col_no, row[col_no]));
|
||||||
|
/* Found the row to get */
|
||||||
|
if (row[col_no])
|
||||||
|
value= row[col_no];
|
||||||
|
else
|
||||||
|
value= "NULL";
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eval_expr(var, value, 0);
|
||||||
|
}
|
||||||
|
dynstr_free(&ds_query);
|
||||||
|
mysql_free_result(res);
|
||||||
|
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void var_copy(VAR *dest, VAR *src)
|
void var_copy(VAR *dest, VAR *src)
|
||||||
{
|
{
|
||||||
dest->int_val= src->int_val;
|
dest->int_val= src->int_val;
|
||||||
@ -1480,26 +1653,47 @@ void var_copy(VAR *dest, VAR *src)
|
|||||||
|
|
||||||
void eval_expr(VAR *v, const char *p, const char **p_end)
|
void eval_expr(VAR *v, const char *p, const char **p_end)
|
||||||
{
|
{
|
||||||
static int MIN_VAR_ALLOC= 32; /* MASV why 32? */
|
|
||||||
VAR *vp;
|
DBUG_ENTER("eval_expr");
|
||||||
|
DBUG_PRINT("enter", ("p: '%s'", p));
|
||||||
|
|
||||||
if (*p == '$')
|
if (*p == '$')
|
||||||
{
|
{
|
||||||
|
VAR *vp;
|
||||||
if ((vp= var_get(p, p_end, 0, 0)))
|
if ((vp= var_get(p, p_end, 0, 0)))
|
||||||
{
|
|
||||||
var_copy(v, vp);
|
var_copy(v, vp);
|
||||||
return;
|
DBUG_VOID_RETURN;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (*p == '`')
|
|
||||||
|
if (*p == '`')
|
||||||
{
|
{
|
||||||
var_query_set(v, p, p_end);
|
var_query_set(v, p, p_end);
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
{
|
||||||
|
/* Check if this is a "let $var= query_get_value()" */
|
||||||
|
const char* get_value_str= "query_get_value";
|
||||||
|
const size_t len= strlen(get_value_str);
|
||||||
|
if (strncmp(p, get_value_str, len)==0)
|
||||||
|
{
|
||||||
|
struct st_command command;
|
||||||
|
memset(&command, 0, sizeof(command));
|
||||||
|
command.query= (char*)p;
|
||||||
|
command.first_word_len= len;
|
||||||
|
command.first_argument= command.query + len;
|
||||||
|
command.end= (char*)*p_end;
|
||||||
|
var_set_query_get_value(&command, v);
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
int new_val_len = (p_end && *p_end) ?
|
int new_val_len = (p_end && *p_end) ?
|
||||||
(int) (*p_end - p) : (int) strlen(p);
|
(int) (*p_end - p) : (int) strlen(p);
|
||||||
if (new_val_len + 1 >= v->alloced_len)
|
if (new_val_len + 1 >= v->alloced_len)
|
||||||
{
|
{
|
||||||
|
static int MIN_VAR_ALLOC= 32;
|
||||||
v->alloced_len = (new_val_len < MIN_VAR_ALLOC - 1) ?
|
v->alloced_len = (new_val_len < MIN_VAR_ALLOC - 1) ?
|
||||||
MIN_VAR_ALLOC : new_val_len + 1;
|
MIN_VAR_ALLOC : new_val_len + 1;
|
||||||
if (!(v->str_val =
|
if (!(v->str_val =
|
||||||
@ -1512,9 +1706,10 @@ void eval_expr(VAR *v, const char *p, const char **p_end)
|
|||||||
memcpy(v->str_val, p, new_val_len);
|
memcpy(v->str_val, p, new_val_len);
|
||||||
v->str_val[new_val_len] = 0;
|
v->str_val[new_val_len] = 0;
|
||||||
v->int_val=atoi(p);
|
v->int_val=atoi(p);
|
||||||
|
DBUG_PRINT("info", ("atoi on '%s', returns: %d", p, v->int_val));
|
||||||
v->int_dirty=0;
|
v->int_dirty=0;
|
||||||
}
|
}
|
||||||
return;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2362,6 +2557,48 @@ void do_diff_files(struct st_command *command)
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
SYNOPSIS
|
||||||
|
do_send_quit
|
||||||
|
command called command
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
Sends a simple quit command to the server for the named connection.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
void do_send_quit(struct st_command *command)
|
||||||
|
{
|
||||||
|
char *p= command->first_argument, *name;
|
||||||
|
struct st_connection *con;
|
||||||
|
|
||||||
|
DBUG_ENTER("do_send_quit");
|
||||||
|
DBUG_PRINT("enter",("name: '%s'",p));
|
||||||
|
|
||||||
|
if (!*p)
|
||||||
|
die("Missing connection name in do_send_quit");
|
||||||
|
name= p;
|
||||||
|
while (*p && !my_isspace(charset_info,*p))
|
||||||
|
p++;
|
||||||
|
|
||||||
|
if (*p)
|
||||||
|
*p++= 0;
|
||||||
|
command->last_argument= p;
|
||||||
|
|
||||||
|
/* Loop through connection pool for connection to close */
|
||||||
|
for (con= connections; con < next_con; con++)
|
||||||
|
{
|
||||||
|
DBUG_PRINT("info", ("con->name: %s", con->name));
|
||||||
|
if (!strcmp(con->name, name))
|
||||||
|
{
|
||||||
|
simple_command(&con->mysql,COM_QUIT,NullS,0,1);
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
die("connection '%s' not found in connection pool", name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
do_perl
|
do_perl
|
||||||
@ -3271,11 +3508,10 @@ void do_close_connection(struct st_command *command)
|
|||||||
my_free(con->name, MYF(0));
|
my_free(con->name, MYF(0));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
When the connection is closed set name to "closed_connection"
|
When the connection is closed set name to "-closed_connection-"
|
||||||
to make it possible to reuse the connection name.
|
to make it possible to reuse the connection name.
|
||||||
The connection slot will not be reused
|
|
||||||
*/
|
*/
|
||||||
if (!(con->name = my_strdup("closed_connection", MYF(MY_WME))))
|
if (!(con->name = my_strdup("-closed_connection-", MYF(MY_WME))))
|
||||||
die("Out of memory");
|
die("Out of memory");
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
@ -3453,7 +3689,7 @@ void do_connect(struct st_command *command)
|
|||||||
int con_port= opt_port;
|
int con_port= opt_port;
|
||||||
char *con_options;
|
char *con_options;
|
||||||
bool con_ssl= 0, con_compress= 0;
|
bool con_ssl= 0, con_compress= 0;
|
||||||
char *ptr;
|
struct st_connection* con_slot;
|
||||||
|
|
||||||
static DYNAMIC_STRING ds_connection_name;
|
static DYNAMIC_STRING ds_connection_name;
|
||||||
static DYNAMIC_STRING ds_host;
|
static DYNAMIC_STRING ds_host;
|
||||||
@ -3481,20 +3717,7 @@ void do_connect(struct st_command *command)
|
|||||||
DBUG_ENTER("do_connect");
|
DBUG_ENTER("do_connect");
|
||||||
DBUG_PRINT("enter",("connect: %s", command->first_argument));
|
DBUG_PRINT("enter",("connect: %s", command->first_argument));
|
||||||
|
|
||||||
/* Remove parenteses around connect arguments */
|
strip_parentheses(command);
|
||||||
if ((ptr= strstr(command->first_argument, "(")))
|
|
||||||
{
|
|
||||||
/* Replace it with a space */
|
|
||||||
*ptr= ' ';
|
|
||||||
if ((ptr= strstr(command->first_argument, ")")))
|
|
||||||
{
|
|
||||||
/* Replace it with \0 */
|
|
||||||
*ptr= 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
die("connect - argument list started with '(' must be ended with ')'");
|
|
||||||
}
|
|
||||||
|
|
||||||
check_command_args(command, command->first_argument, connect_args,
|
check_command_args(command, command->first_argument, connect_args,
|
||||||
sizeof(connect_args)/sizeof(struct command_arg),
|
sizeof(connect_args)/sizeof(struct command_arg),
|
||||||
',');
|
',');
|
||||||
@ -3552,19 +3775,24 @@ void do_connect(struct st_command *command)
|
|||||||
con_options= end;
|
con_options= end;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (next_con == connections_end)
|
|
||||||
die("Connection limit exhausted, you can have max %d connections",
|
|
||||||
(int) (sizeof(connections)/sizeof(struct st_connection)));
|
|
||||||
|
|
||||||
if (find_connection_by_name(ds_connection_name.str))
|
if (find_connection_by_name(ds_connection_name.str))
|
||||||
die("Connection %s already exists", ds_connection_name.str);
|
die("Connection %s already exists", ds_connection_name.str);
|
||||||
|
|
||||||
|
if (next_con != connections_end)
|
||||||
|
con_slot= next_con;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!(con_slot= find_connection_by_name("-closed_connection-")))
|
||||||
|
die("Connection limit exhausted, you can have max %d connections",
|
||||||
|
(int) (sizeof(connections)/sizeof(struct st_connection)));
|
||||||
|
}
|
||||||
|
|
||||||
if (!mysql_init(&next_con->mysql))
|
if (!mysql_init(&con_slot->mysql))
|
||||||
die("Failed on mysql_init()");
|
die("Failed on mysql_init()");
|
||||||
if (opt_compress || con_compress)
|
if (opt_compress || con_compress)
|
||||||
mysql_options(&next_con->mysql, MYSQL_OPT_COMPRESS, NullS);
|
mysql_options(&con_slot->mysql, MYSQL_OPT_COMPRESS, NullS);
|
||||||
mysql_options(&next_con->mysql, MYSQL_OPT_LOCAL_INFILE, 0);
|
mysql_options(&con_slot->mysql, MYSQL_OPT_LOCAL_INFILE, 0);
|
||||||
mysql_options(&next_con->mysql, MYSQL_SET_CHARSET_NAME,
|
mysql_options(&con_slot->mysql, MYSQL_SET_CHARSET_NAME,
|
||||||
charset_info->csname);
|
charset_info->csname);
|
||||||
if (opt_charsets_dir)
|
if (opt_charsets_dir)
|
||||||
mysql_options(&cur_con->mysql, MYSQL_SET_CHARSET_DIR,
|
mysql_options(&cur_con->mysql, MYSQL_SET_CHARSET_DIR,
|
||||||
@ -3573,12 +3801,12 @@ void do_connect(struct st_command *command)
|
|||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
if (opt_use_ssl || con_ssl)
|
if (opt_use_ssl || con_ssl)
|
||||||
{
|
{
|
||||||
mysql_ssl_set(&next_con->mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
|
mysql_ssl_set(&con_slot->mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
|
||||||
opt_ssl_capath, opt_ssl_cipher);
|
opt_ssl_capath, opt_ssl_cipher);
|
||||||
#if MYSQL_VERSION_ID >= 50000
|
#if MYSQL_VERSION_ID >= 50000
|
||||||
/* Turn on ssl_verify_server_cert only if host is "localhost" */
|
/* Turn on ssl_verify_server_cert only if host is "localhost" */
|
||||||
opt_ssl_verify_server_cert= !strcmp(ds_host.str, "localhost");
|
opt_ssl_verify_server_cert= !strcmp(ds_host.str, "localhost");
|
||||||
mysql_options(&next_con->mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
mysql_options(&con_slot->mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
||||||
&opt_ssl_verify_server_cert);
|
&opt_ssl_verify_server_cert);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -3592,16 +3820,19 @@ void do_connect(struct st_command *command)
|
|||||||
if (ds_database.length && !strcmp(ds_database.str,"*NO-ONE*"))
|
if (ds_database.length && !strcmp(ds_database.str,"*NO-ONE*"))
|
||||||
dynstr_set(&ds_database, "");
|
dynstr_set(&ds_database, "");
|
||||||
|
|
||||||
if (connect_n_handle_errors(command, &next_con->mysql,
|
if (connect_n_handle_errors(command, &con_slot->mysql,
|
||||||
ds_host.str,ds_user.str,
|
ds_host.str,ds_user.str,
|
||||||
ds_password.str, ds_database.str,
|
ds_password.str, ds_database.str,
|
||||||
con_port, ds_sock.str))
|
con_port, ds_sock.str))
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("Inserting connection %s in connection pool",
|
DBUG_PRINT("info", ("Inserting connection %s in connection pool",
|
||||||
ds_connection_name.str));
|
ds_connection_name.str));
|
||||||
if (!(next_con->name= my_strdup(ds_connection_name.str, MYF(MY_WME))))
|
if (!(con_slot->name= my_strdup(ds_connection_name.str, MYF(MY_WME))))
|
||||||
die("Out of memory");
|
die("Out of memory");
|
||||||
cur_con= next_con++;
|
cur_con= con_slot;
|
||||||
|
|
||||||
|
if (con_slot == next_con)
|
||||||
|
next_con++; /* if we used the next_con slot, advance the pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
dynstr_free(&ds_connection_name);
|
dynstr_free(&ds_connection_name);
|
||||||
@ -4192,16 +4423,12 @@ int read_command(struct st_command** command_ptr)
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
if (!(*command_ptr= command=
|
if (!(*command_ptr= command=
|
||||||
(struct st_command*) my_malloc(sizeof(*command), MYF(MY_WME))) ||
|
(struct st_command*) my_malloc(sizeof(*command),
|
||||||
|
MYF(MY_WME|MY_ZEROFILL))) ||
|
||||||
insert_dynamic(&q_lines, (gptr) &command))
|
insert_dynamic(&q_lines, (gptr) &command))
|
||||||
die(NullS);
|
die(NullS);
|
||||||
|
|
||||||
command->require_file[0]= 0;
|
|
||||||
command->first_word_len= 0;
|
|
||||||
command->query_len= 0;
|
|
||||||
|
|
||||||
command->type= Q_UNKNOWN;
|
command->type= Q_UNKNOWN;
|
||||||
command->query_buf= command->query= 0;
|
|
||||||
read_command_buf[0]= 0;
|
read_command_buf[0]= 0;
|
||||||
if (read_line(read_command_buf, sizeof(read_command_buf)))
|
if (read_line(read_command_buf, sizeof(read_command_buf)))
|
||||||
{
|
{
|
||||||
@ -5999,6 +6226,12 @@ int main(int argc, char **argv)
|
|||||||
next_con= connections + 1;
|
next_con= connections + 1;
|
||||||
cur_con= connections;
|
cur_con= connections;
|
||||||
|
|
||||||
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
/* set appropriate stack for the 'query' threads */
|
||||||
|
(void) pthread_attr_init(&cn_thd_attrib);
|
||||||
|
pthread_attr_setstacksize(&cn_thd_attrib, DEFAULT_THREAD_STACK);
|
||||||
|
#endif /*EMBEDDED_LIBRARY*/
|
||||||
|
|
||||||
/* Init file stack */
|
/* Init file stack */
|
||||||
memset(file_stack, 0, sizeof(file_stack));
|
memset(file_stack, 0, sizeof(file_stack));
|
||||||
file_stack_end=
|
file_stack_end=
|
||||||
@ -6168,6 +6401,7 @@ int main(int argc, char **argv)
|
|||||||
case Q_WRITE_FILE: do_write_file(command); break;
|
case Q_WRITE_FILE: do_write_file(command); break;
|
||||||
case Q_APPEND_FILE: do_append_file(command); break;
|
case Q_APPEND_FILE: do_append_file(command); break;
|
||||||
case Q_DIFF_FILES: do_diff_files(command); break;
|
case Q_DIFF_FILES: do_diff_files(command); break;
|
||||||
|
case Q_SEND_QUIT: do_send_quit(command); break;
|
||||||
case Q_CAT_FILE: do_cat_file(command); break;
|
case Q_CAT_FILE: do_cat_file(command); break;
|
||||||
case Q_COPY_FILE: do_copy_file(command); break;
|
case Q_COPY_FILE: do_copy_file(command); break;
|
||||||
case Q_CHMOD_FILE: do_chmod_file(command); break;
|
case Q_CHMOD_FILE: do_chmod_file(command); break;
|
||||||
|
@ -90,6 +90,16 @@ extern char* tgoto(const char*, int, int);
|
|||||||
extern char* tgetstr(char*, char**);
|
extern char* tgetstr(char*, char**);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if !HAVE_DECL_TGOTO
|
||||||
|
/*
|
||||||
|
'tgoto' is not declared in the system header files, this causes
|
||||||
|
problems on 64-bit systems. The function returns a 64 bit pointer
|
||||||
|
but caller see it as "int" and it's thus truncated to 32-bit
|
||||||
|
*/
|
||||||
|
extern char* tgoto(const char*, int, int);
|
||||||
|
#endif
|
||||||
|
|
||||||
protected void term_move_to_line(EditLine *, int);
|
protected void term_move_to_line(EditLine *, int);
|
||||||
protected void term_move_to_char(EditLine *, int);
|
protected void term_move_to_char(EditLine *, int);
|
||||||
protected void term_clear_EOL(EditLine *, int);
|
protected void term_clear_EOL(EditLine *, int);
|
||||||
|
28
configure.in
28
configure.in
@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
|
|||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
# The Docs Makefile.am parses this line!
|
# The Docs Makefile.am parses this line!
|
||||||
# remember to also change ndb version below and update version.c in ndb
|
# remember to also change ndb version below and update version.c in ndb
|
||||||
AM_INIT_AUTOMAKE(mysql, 5.0.44)
|
AM_INIT_AUTOMAKE(mysql, 5.0.46)
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
PROTOCOL_VERSION=10
|
PROTOCOL_VERSION=10
|
||||||
@ -23,7 +23,7 @@ NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
|
|||||||
# ndb version
|
# ndb version
|
||||||
NDB_VERSION_MAJOR=5
|
NDB_VERSION_MAJOR=5
|
||||||
NDB_VERSION_MINOR=0
|
NDB_VERSION_MINOR=0
|
||||||
NDB_VERSION_BUILD=44
|
NDB_VERSION_BUILD=46
|
||||||
NDB_VERSION_STATUS=""
|
NDB_VERSION_STATUS=""
|
||||||
|
|
||||||
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
||||||
@ -507,7 +507,7 @@ then
|
|||||||
FIND_PROC="$PS \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null"
|
FIND_PROC="$PS \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null"
|
||||||
else
|
else
|
||||||
case $SYSTEM_TYPE in
|
case $SYSTEM_TYPE in
|
||||||
*freebsd*)
|
*freebsd*|*dragonfly*)
|
||||||
FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null"
|
FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null"
|
||||||
;;
|
;;
|
||||||
*darwin*)
|
*darwin*)
|
||||||
@ -776,6 +776,7 @@ AC_CHECK_HEADERS(fcntl.h float.h floatingpoint.h ieeefp.h limits.h \
|
|||||||
sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \
|
sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \
|
||||||
unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h \
|
unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h \
|
||||||
sys/ioctl.h malloc.h sys/malloc.h sys/ipc.h sys/shm.h linux/config.h \
|
sys/ioctl.h malloc.h sys/malloc.h sys/ipc.h sys/shm.h linux/config.h \
|
||||||
|
sys/prctl.h \
|
||||||
sys/resource.h sys/param.h)
|
sys/resource.h sys/param.h)
|
||||||
|
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
@ -1127,7 +1128,7 @@ case $SYSTEM_TYPE in
|
|||||||
MAX_C_OPTIMIZE="-O"
|
MAX_C_OPTIMIZE="-O"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*freebsd*)
|
*freebsd*|*dragonfly*)
|
||||||
AC_MSG_WARN([Adding fix for interrupted reads])
|
AC_MSG_WARN([Adding fix for interrupted reads])
|
||||||
OSVERSION=`sysctl -a | grep osreldate | awk '{ print $2 }'`
|
OSVERSION=`sysctl -a | grep osreldate | awk '{ print $2 }'`
|
||||||
if test "$OSVERSION" -gt "480100" && \
|
if test "$OSVERSION" -gt "480100" && \
|
||||||
@ -1736,6 +1737,12 @@ AC_ARG_WITH(client-ldflags,
|
|||||||
[CLIENT_EXTRA_LDFLAGS=])
|
[CLIENT_EXTRA_LDFLAGS=])
|
||||||
AC_SUBST(CLIENT_EXTRA_LDFLAGS)
|
AC_SUBST(CLIENT_EXTRA_LDFLAGS)
|
||||||
|
|
||||||
|
AC_ARG_WITH(mysqld-libs,
|
||||||
|
[ --with-mysqld-libs Extra libraries to link with for mysqld],
|
||||||
|
[MYSQLD_EXTRA_LIBS=$withval],
|
||||||
|
[MYSQLD_EXTRA_LIBS=])
|
||||||
|
AC_SUBST(MYSQLD_EXTRA_LIBS)
|
||||||
|
|
||||||
AC_ARG_WITH(lib-ccflags,
|
AC_ARG_WITH(lib-ccflags,
|
||||||
[ --with-lib-ccflags Extra CC options for libraries],
|
[ --with-lib-ccflags Extra CC options for libraries],
|
||||||
[LIB_EXTRA_CCFLAGS=$withval],
|
[LIB_EXTRA_CCFLAGS=$withval],
|
||||||
@ -1946,6 +1953,19 @@ else
|
|||||||
fi
|
fi
|
||||||
AC_SUBST(TERMCAP_LIB)
|
AC_SUBST(TERMCAP_LIB)
|
||||||
|
|
||||||
|
# Check if the termcap function 'tgoto' is already declared in
|
||||||
|
# system header files or if it need to be declared locally
|
||||||
|
AC_CHECK_DECLS(tgoto,,,[
|
||||||
|
#ifdef HAVE_CURSES_H
|
||||||
|
# include <curses.h>
|
||||||
|
#elif HAVE_NCURSES_H
|
||||||
|
# include <ncurses.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_TERM_H
|
||||||
|
# include <term.h>
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
|
||||||
LIBEDIT_LOBJECTS=""
|
LIBEDIT_LOBJECTS=""
|
||||||
AC_CHECK_FUNC(strunvis, ,[LIBEDIT_LOBJECTS="$LIBEDIT_LOBJECTS unvis.o"])
|
AC_CHECK_FUNC(strunvis, ,[LIBEDIT_LOBJECTS="$LIBEDIT_LOBJECTS unvis.o"])
|
||||||
AC_CHECK_FUNC(strvis, ,[LIBEDIT_LOBJECTS="$LIBEDIT_LOBJECTS vis.o"])
|
AC_CHECK_FUNC(strvis, ,[LIBEDIT_LOBJECTS="$LIBEDIT_LOBJECTS vis.o"])
|
||||||
|
@ -277,6 +277,8 @@ int SSL_session_reused(SSL*);
|
|||||||
int SSL_set_rfd(SSL*, int);
|
int SSL_set_rfd(SSL*, int);
|
||||||
int SSL_set_wfd(SSL*, int);
|
int SSL_set_wfd(SSL*, int);
|
||||||
void SSL_set_shutdown(SSL*, int);
|
void SSL_set_shutdown(SSL*, int);
|
||||||
|
void SSL_set_quiet_shutdown(SSL *ssl,int mode);
|
||||||
|
int SSL_get_quiet_shutdown(SSL *ssl);
|
||||||
|
|
||||||
int SSL_want_read(SSL*);
|
int SSL_want_read(SSL*);
|
||||||
int SSL_want_write(SSL*);
|
int SSL_want_write(SSL*);
|
||||||
|
@ -584,6 +584,7 @@ class SSL {
|
|||||||
Socket socket_; // socket wrapper
|
Socket socket_; // socket wrapper
|
||||||
Buffers buffers_; // buffered handshakes and data
|
Buffers buffers_; // buffered handshakes and data
|
||||||
Log log_; // logger
|
Log log_; // logger
|
||||||
|
bool quietShutdown_; // shutdown without handshakes
|
||||||
|
|
||||||
// optimization variables
|
// optimization variables
|
||||||
bool has_data_; // buffered data ready?
|
bool has_data_; // buffered data ready?
|
||||||
@ -610,6 +611,7 @@ public:
|
|||||||
Buffers& useBuffers();
|
Buffers& useBuffers();
|
||||||
|
|
||||||
bool HasData() const;
|
bool HasData() const;
|
||||||
|
bool GetQuietShutdown() const;
|
||||||
|
|
||||||
// sets
|
// sets
|
||||||
void set_pending(Cipher suite);
|
void set_pending(Cipher suite);
|
||||||
@ -621,6 +623,7 @@ public:
|
|||||||
void SetError(YasslError);
|
void SetError(YasslError);
|
||||||
int SetCompression();
|
int SetCompression();
|
||||||
void UnSetCompression();
|
void UnSetCompression();
|
||||||
|
void SetQuietShutdown(bool mode);
|
||||||
|
|
||||||
// helpers
|
// helpers
|
||||||
bool isTLS() const;
|
bool isTLS() const;
|
||||||
|
@ -411,8 +411,10 @@ int SSL_clear(SSL* ssl)
|
|||||||
|
|
||||||
int SSL_shutdown(SSL* ssl)
|
int SSL_shutdown(SSL* ssl)
|
||||||
{
|
{
|
||||||
Alert alert(warning, close_notify);
|
if (!ssl->GetQuietShutdown()) {
|
||||||
sendAlert(*ssl, alert);
|
Alert alert(warning, close_notify);
|
||||||
|
sendAlert(*ssl, alert);
|
||||||
|
}
|
||||||
ssl->useLog().ShowTCP(ssl->getSocket().get_fd(), true);
|
ssl->useLog().ShowTCP(ssl->getSocket().get_fd(), true);
|
||||||
|
|
||||||
GetErrors().Remove();
|
GetErrors().Remove();
|
||||||
@ -421,6 +423,18 @@ int SSL_shutdown(SSL* ssl)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SSL_set_quiet_shutdown(SSL *ssl,int mode)
|
||||||
|
{
|
||||||
|
ssl->SetQuietShutdown(mode != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SSL_get_quiet_shutdown(SSL *ssl)
|
||||||
|
{
|
||||||
|
return ssl->GetQuietShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* on by default but allow user to turn off */
|
/* on by default but allow user to turn off */
|
||||||
long SSL_CTX_set_session_cache_mode(SSL_CTX* ctx, long mode)
|
long SSL_CTX_set_session_cache_mode(SSL_CTX* ctx, long mode)
|
||||||
{
|
{
|
||||||
|
@ -291,7 +291,7 @@ const ClientKeyFactory& sslFactory::getClientKey() const
|
|||||||
SSL::SSL(SSL_CTX* ctx)
|
SSL::SSL(SSL_CTX* ctx)
|
||||||
: secure_(ctx->getMethod()->getVersion(), crypto_.use_random(),
|
: secure_(ctx->getMethod()->getVersion(), crypto_.use_random(),
|
||||||
ctx->getMethod()->getSide(), ctx->GetCiphers(), ctx,
|
ctx->getMethod()->getSide(), ctx->GetCiphers(), ctx,
|
||||||
ctx->GetDH_Parms().set_), has_data_(false)
|
ctx->GetDH_Parms().set_), quietShutdown_(false), has_data_(false)
|
||||||
{
|
{
|
||||||
if (int err = crypto_.get_random().GetError()) {
|
if (int err = crypto_.get_random().GetError()) {
|
||||||
SetError(YasslError(err));
|
SetError(YasslError(err));
|
||||||
@ -773,6 +773,12 @@ void SSL::SetError(YasslError ye)
|
|||||||
// TODO: add string here
|
// TODO: add string here
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set the quiet shutdown mode (close_nofiy not sent or received on shutdown)
|
||||||
|
void SSL::SetQuietShutdown(bool mode)
|
||||||
|
{
|
||||||
|
quietShutdown_ = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Buffers& SSL::useBuffers()
|
Buffers& SSL::useBuffers()
|
||||||
{
|
{
|
||||||
@ -1330,6 +1336,12 @@ YasslError SSL::GetError() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SSL::GetQuietShutdown() const
|
||||||
|
{
|
||||||
|
return quietShutdown_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SSL::GetMultiProtocol() const
|
bool SSL::GetMultiProtocol() const
|
||||||
{
|
{
|
||||||
return secure_.GetContext()->getMethod()->multipleProtocol();
|
return secure_.GetContext()->getMethod()->multipleProtocol();
|
||||||
|
@ -379,7 +379,13 @@ ulong hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
|
|||||||
|
|
||||||
ulong hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
|
ulong hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
|
||||||
{
|
{
|
||||||
register ulong nr=0;
|
/*
|
||||||
|
Note, if a key consists of a combination of numeric and
|
||||||
|
a text columns, it most likely won't work well.
|
||||||
|
Making text columns work with NEW_HASH_FUNCTION
|
||||||
|
needs also changes in strings/ctype-xxx.c.
|
||||||
|
*/
|
||||||
|
ulong nr= 1, nr2= 4;
|
||||||
HA_KEYSEG *seg,*endseg;
|
HA_KEYSEG *seg,*endseg;
|
||||||
|
|
||||||
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
||||||
@ -401,14 +407,15 @@ ulong hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
|
|||||||
}
|
}
|
||||||
if (seg->type == HA_KEYTYPE_TEXT)
|
if (seg->type == HA_KEYTYPE_TEXT)
|
||||||
{
|
{
|
||||||
seg->charset->hash_sort(seg->charset,pos,((uchar*)key)-pos,&nr,NULL);
|
seg->charset->coll->hash_sort(seg->charset, pos, ((uchar*)key)-pos,
|
||||||
|
&nr, &nr2);
|
||||||
}
|
}
|
||||||
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
||||||
{
|
{
|
||||||
uint pack_length= 2; /* Key packing is constant */
|
uint pack_length= 2; /* Key packing is constant */
|
||||||
uint length= uint2korr(pos);
|
uint length= uint2korr(pos);
|
||||||
seg->charset->hash_sort(seg->charset, pos+pack_length, length, &nr,
|
seg->charset->coll->hash_sort(seg->charset, pos+pack_length, length,
|
||||||
NULL);
|
&nr, &nr2);
|
||||||
key+= pack_length;
|
key+= pack_length;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -428,7 +435,7 @@ ulong hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
|
|||||||
|
|
||||||
ulong hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
|
ulong hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
|
||||||
{
|
{
|
||||||
register ulong nr=0;
|
ulong nr= 1, nr2= 4;
|
||||||
HA_KEYSEG *seg,*endseg;
|
HA_KEYSEG *seg,*endseg;
|
||||||
|
|
||||||
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
||||||
@ -444,14 +451,16 @@ ulong hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
|
|||||||
}
|
}
|
||||||
if (seg->type == HA_KEYTYPE_TEXT)
|
if (seg->type == HA_KEYTYPE_TEXT)
|
||||||
{
|
{
|
||||||
seg->charset->hash_sort(seg->charset,pos,((uchar*)key)-pos,&nr,NULL);
|
uint char_length= seg->length; /* TODO: fix to use my_charpos() */
|
||||||
|
seg->charset->coll->hash_sort(seg->charset, pos, char_length,
|
||||||
|
&nr, &nr2);
|
||||||
}
|
}
|
||||||
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
||||||
{
|
{
|
||||||
uint pack_length= seg->bit_start;
|
uint pack_length= seg->bit_start;
|
||||||
uint length= (pack_length == 1 ? (uint) *(uchar*) pos : uint2korr(pos));
|
uint length= (pack_length == 1 ? (uint) *(uchar*) pos : uint2korr(pos));
|
||||||
seg->charset->hash_sort(seg->charset, pos+pack_length,
|
seg->charset->coll->hash_sort(seg->charset, pos+pack_length,
|
||||||
length, &nr, NULL);
|
length, &nr, &nr2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -46,7 +46,6 @@ typedef struct st_key_cache
|
|||||||
my_bool key_cache_inited;
|
my_bool key_cache_inited;
|
||||||
my_bool resize_in_flush; /* true during flush of resize operation */
|
my_bool resize_in_flush; /* true during flush of resize operation */
|
||||||
my_bool can_be_used; /* usage of cache for read/write is allowed */
|
my_bool can_be_used; /* usage of cache for read/write is allowed */
|
||||||
uint key_cache_shift;
|
|
||||||
ulong key_cache_mem_size; /* specified size of the cache memory */
|
ulong key_cache_mem_size; /* specified size of the cache memory */
|
||||||
uint key_cache_block_size; /* size of the page buffer of a cache block */
|
uint key_cache_block_size; /* size of the page buffer of a cache block */
|
||||||
ulong min_warm_blocks; /* min number of warm blocks; */
|
ulong min_warm_blocks; /* min number of warm blocks; */
|
||||||
|
@ -281,10 +281,11 @@ extern CHARSET_INFO my_charset_tis620_thai_ci;
|
|||||||
extern CHARSET_INFO my_charset_tis620_bin;
|
extern CHARSET_INFO my_charset_tis620_bin;
|
||||||
extern CHARSET_INFO my_charset_ucs2_general_ci;
|
extern CHARSET_INFO my_charset_ucs2_general_ci;
|
||||||
extern CHARSET_INFO my_charset_ucs2_bin;
|
extern CHARSET_INFO my_charset_ucs2_bin;
|
||||||
extern CHARSET_INFO my_charset_ucs2_general_uca;
|
extern CHARSET_INFO my_charset_ucs2_unicode_ci;
|
||||||
extern CHARSET_INFO my_charset_ujis_japanese_ci;
|
extern CHARSET_INFO my_charset_ujis_japanese_ci;
|
||||||
extern CHARSET_INFO my_charset_ujis_bin;
|
extern CHARSET_INFO my_charset_ujis_bin;
|
||||||
extern CHARSET_INFO my_charset_utf8_general_ci;
|
extern CHARSET_INFO my_charset_utf8_general_ci;
|
||||||
|
extern CHARSET_INFO my_charset_utf8_unicode_ci;
|
||||||
extern CHARSET_INFO my_charset_utf8_bin;
|
extern CHARSET_INFO my_charset_utf8_bin;
|
||||||
extern CHARSET_INFO my_charset_cp1250_czech_ci;
|
extern CHARSET_INFO my_charset_cp1250_czech_ci;
|
||||||
|
|
||||||
|
@ -105,6 +105,9 @@ extern char *stpcpy(char *, const char *); /* For AIX with gcc 2.95.3 */
|
|||||||
extern char NEAR _dig_vec_upper[];
|
extern char NEAR _dig_vec_upper[];
|
||||||
extern char NEAR _dig_vec_lower[];
|
extern char NEAR _dig_vec_lower[];
|
||||||
|
|
||||||
|
/* Defined in strtod.c */
|
||||||
|
extern const double log_10[309];
|
||||||
|
|
||||||
#ifdef BAD_STRING_COMPILER
|
#ifdef BAD_STRING_COMPILER
|
||||||
#define strmov(A,B) (memccpy(A,B,0,INT_MAX)-1)
|
#define strmov(A,B) (memccpy(A,B,0,INT_MAX)-1)
|
||||||
#else
|
#else
|
||||||
|
@ -168,7 +168,12 @@ enum ha_extra_function {
|
|||||||
These flags are reset by the handler::extra(HA_EXTRA_RESET) call.
|
These flags are reset by the handler::extra(HA_EXTRA_RESET) call.
|
||||||
*/
|
*/
|
||||||
HA_EXTRA_DELETE_CANNOT_BATCH,
|
HA_EXTRA_DELETE_CANNOT_BATCH,
|
||||||
HA_EXTRA_UPDATE_CANNOT_BATCH
|
HA_EXTRA_UPDATE_CANNOT_BATCH,
|
||||||
|
/*
|
||||||
|
Inform handler that an "INSERT...ON DUPLICATE KEY UPDATE" will be
|
||||||
|
executed. This condition is unset by HA_EXTRA_NO_IGNORE_DUP_KEY.
|
||||||
|
*/
|
||||||
|
HA_EXTRA_INSERT_WITH_UPDATE
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The following is parameter to ha_panic() */
|
/* The following is parameter to ha_panic() */
|
||||||
|
@ -895,7 +895,12 @@ typedef unsigned long uint32; /* Short for unsigned integer >= 32 bits */
|
|||||||
typedef unsigned long ulong; /* Short for unsigned long */
|
typedef unsigned long ulong; /* Short for unsigned long */
|
||||||
#endif
|
#endif
|
||||||
#ifndef longlong_defined
|
#ifndef longlong_defined
|
||||||
#if defined(HAVE_LONG_LONG) && SIZEOF_LONG != 8
|
/*
|
||||||
|
Using [unsigned] long long is preferable as [u]longlong because we use
|
||||||
|
[unsigned] long long unconditionally in many places,
|
||||||
|
for example in constants with [U]LL suffix.
|
||||||
|
*/
|
||||||
|
#if defined(HAVE_LONG_LONG) && SIZEOF_LONG_LONG == 8
|
||||||
typedef unsigned long long int ulonglong; /* ulong or unsigned long long */
|
typedef unsigned long long int ulonglong; /* ulong or unsigned long long */
|
||||||
typedef long long int longlong;
|
typedef long long int longlong;
|
||||||
#else
|
#else
|
||||||
|
@ -345,6 +345,11 @@ my_bool net_write_command(NET *net,unsigned char command,
|
|||||||
int net_real_write(NET *net,const char *packet,unsigned long len);
|
int net_real_write(NET *net,const char *packet,unsigned long len);
|
||||||
unsigned long my_net_read(NET *net);
|
unsigned long my_net_read(NET *net);
|
||||||
|
|
||||||
|
#ifdef _global_h
|
||||||
|
void my_net_set_write_timeout(NET *net, uint timeout);
|
||||||
|
void my_net_set_read_timeout(NET *net, uint timeout);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The following function is not meant for normal usage
|
The following function is not meant for normal usage
|
||||||
Currently it's used internally by manager.c
|
Currently it's used internally by manager.c
|
||||||
|
@ -54,6 +54,11 @@ enum thr_lock_type { TL_IGNORE=-1,
|
|||||||
TL_WRITE_CONCURRENT_INSERT,
|
TL_WRITE_CONCURRENT_INSERT,
|
||||||
/* Write used by INSERT DELAYED. Allows READ locks */
|
/* Write used by INSERT DELAYED. Allows READ locks */
|
||||||
TL_WRITE_DELAYED,
|
TL_WRITE_DELAYED,
|
||||||
|
/*
|
||||||
|
parser only! Late bound low_priority flag.
|
||||||
|
At open_tables() becomes thd->update_lock_default.
|
||||||
|
*/
|
||||||
|
TL_WRITE_DEFAULT,
|
||||||
/* WRITE lock that has lower priority than TL_READ */
|
/* WRITE lock that has lower priority than TL_READ */
|
||||||
TL_WRITE_LOW_PRIORITY,
|
TL_WRITE_LOW_PRIORITY,
|
||||||
/* Normal WRITE lock */
|
/* Normal WRITE lock */
|
||||||
|
@ -88,7 +88,6 @@ my_bool vio_peer_addr(Vio* vio, char *buf, uint16 *port);
|
|||||||
/* Remotes in_addr */
|
/* Remotes in_addr */
|
||||||
void vio_in_addr(Vio *vio, struct in_addr *in);
|
void vio_in_addr(Vio *vio, struct in_addr *in);
|
||||||
my_bool vio_poll_read(Vio *vio,uint timeout);
|
my_bool vio_poll_read(Vio *vio,uint timeout);
|
||||||
void vio_timeout(Vio *vio,uint which, uint timeout);
|
|
||||||
|
|
||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
#include <openssl/opensslv.h>
|
#include <openssl/opensslv.h>
|
||||||
@ -101,7 +100,9 @@ void vio_timeout(Vio *vio,uint which, uint timeout);
|
|||||||
|
|
||||||
#define HEADER_DES_LOCL_H dummy_something
|
#define HEADER_DES_LOCL_H dummy_something
|
||||||
#define YASSL_MYSQL_COMPATIBLE
|
#define YASSL_MYSQL_COMPATIBLE
|
||||||
|
#ifndef YASSL_PREFIX
|
||||||
#define YASSL_PREFIX
|
#define YASSL_PREFIX
|
||||||
|
#endif
|
||||||
/* Set yaSSL to use same type as MySQL do for socket handles */
|
/* Set yaSSL to use same type as MySQL do for socket handles */
|
||||||
typedef my_socket YASSL_SOCKET_T;
|
typedef my_socket YASSL_SOCKET_T;
|
||||||
#define YASSL_SOCKET_T_DEFINED
|
#define YASSL_SOCKET_T_DEFINED
|
||||||
|
@ -2542,8 +2542,11 @@ btr_index_rec_validate(
|
|||||||
|
|
||||||
rec_get_nth_field(rec, offsets, i, &len);
|
rec_get_nth_field(rec, offsets, i, &len);
|
||||||
|
|
||||||
/* Note that prefix indexes are not fixed size even when
|
/* Note that if fixed_size != 0, it equals the
|
||||||
their type is CHAR. */
|
length of a fixed-size column in the clustered index.
|
||||||
|
A prefix index of the column is of fixed, but different
|
||||||
|
length. When fixed_size == 0, prefix_len is the maximum
|
||||||
|
length of the prefix index column. */
|
||||||
|
|
||||||
if ((dict_index_get_nth_field(index, i)->prefix_len == 0
|
if ((dict_index_get_nth_field(index, i)->prefix_len == 0
|
||||||
&& len != UNIV_SQL_NULL && fixed_size
|
&& len != UNIV_SQL_NULL && fixed_size
|
||||||
|
@ -1220,7 +1220,8 @@ loop:
|
|||||||
ut_ad(buf_validate());
|
ut_ad(buf_validate());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
ut_ad(block->buf_fix_count > 0);
|
/* This debug code has been upgraded to narrow down Bug# 26081 */
|
||||||
|
ut_a(block->buf_fix_count > 0);
|
||||||
ut_ad(block->state == BUF_BLOCK_FILE_PAGE);
|
ut_ad(block->state == BUF_BLOCK_FILE_PAGE);
|
||||||
|
|
||||||
if (mode == BUF_GET_NOWAIT) {
|
if (mode == BUF_GET_NOWAIT) {
|
||||||
@ -1238,6 +1239,13 @@ loop:
|
|||||||
if (!success) {
|
if (!success) {
|
||||||
mutex_enter(&block->mutex);
|
mutex_enter(&block->mutex);
|
||||||
|
|
||||||
|
/* This debug code has been added to narrow
|
||||||
|
down Bug# 26081 */
|
||||||
|
if (UNIV_UNLIKELY(block->buf_fix_count == 0)) {
|
||||||
|
buf_print_diagnostic(mtr, block);
|
||||||
|
ut_error;
|
||||||
|
}
|
||||||
|
|
||||||
block->buf_fix_count--;
|
block->buf_fix_count--;
|
||||||
|
|
||||||
mutex_exit(&block->mutex);
|
mutex_exit(&block->mutex);
|
||||||
@ -1362,7 +1370,14 @@ buf_page_optimistic_get_func(
|
|||||||
|
|
||||||
if (UNIV_UNLIKELY(!success)) {
|
if (UNIV_UNLIKELY(!success)) {
|
||||||
mutex_enter(&block->mutex);
|
mutex_enter(&block->mutex);
|
||||||
|
|
||||||
|
/* This debug code has been added to narrow
|
||||||
|
down Bug# 26081 */
|
||||||
|
if (UNIV_UNLIKELY(block->buf_fix_count == 0)) {
|
||||||
|
buf_print_diagnostic(mtr, block);
|
||||||
|
ut_error;
|
||||||
|
}
|
||||||
|
|
||||||
block->buf_fix_count--;
|
block->buf_fix_count--;
|
||||||
|
|
||||||
mutex_exit(&block->mutex);
|
mutex_exit(&block->mutex);
|
||||||
@ -1384,7 +1399,14 @@ buf_page_optimistic_get_func(
|
|||||||
}
|
}
|
||||||
|
|
||||||
mutex_enter(&block->mutex);
|
mutex_enter(&block->mutex);
|
||||||
|
|
||||||
|
/* This debug code has been added to narrow
|
||||||
|
down Bug# 26081 */
|
||||||
|
if (UNIV_UNLIKELY(block->buf_fix_count == 0)) {
|
||||||
|
buf_print_diagnostic(mtr, block);
|
||||||
|
ut_error;
|
||||||
|
}
|
||||||
|
|
||||||
block->buf_fix_count--;
|
block->buf_fix_count--;
|
||||||
|
|
||||||
mutex_exit(&block->mutex);
|
mutex_exit(&block->mutex);
|
||||||
@ -1404,7 +1426,10 @@ buf_page_optimistic_get_func(
|
|||||||
ut_ad(buf_validate());
|
ut_ad(buf_validate());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
ut_ad(block->buf_fix_count > 0);
|
/* This debug code has been upgraded from ut_ad() to narrow
|
||||||
|
down Bug# 26081 */
|
||||||
|
ut_a(block->buf_fix_count > 0);
|
||||||
|
|
||||||
ut_ad(block->state == BUF_BLOCK_FILE_PAGE);
|
ut_ad(block->state == BUF_BLOCK_FILE_PAGE);
|
||||||
|
|
||||||
#ifdef UNIV_DEBUG_FILE_ACCESSES
|
#ifdef UNIV_DEBUG_FILE_ACCESSES
|
||||||
@ -1493,7 +1518,14 @@ buf_page_get_known_nowait(
|
|||||||
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
mutex_enter(&block->mutex);
|
mutex_enter(&block->mutex);
|
||||||
|
|
||||||
|
/* This debug code has been added to narrow
|
||||||
|
down Bug# 26081 */
|
||||||
|
if (UNIV_UNLIKELY(block->buf_fix_count == 0)) {
|
||||||
|
buf_print_diagnostic(mtr, block);
|
||||||
|
ut_error;
|
||||||
|
}
|
||||||
|
|
||||||
block->buf_fix_count--;
|
block->buf_fix_count--;
|
||||||
|
|
||||||
mutex_exit(&block->mutex);
|
mutex_exit(&block->mutex);
|
||||||
@ -1514,7 +1546,8 @@ buf_page_get_known_nowait(
|
|||||||
ut_ad(buf_validate());
|
ut_ad(buf_validate());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
ut_ad(block->buf_fix_count > 0);
|
/* This debug code has been upgraded to narrow down Bug# 26081 */
|
||||||
|
ut_a(block->buf_fix_count > 0);
|
||||||
ut_ad(block->state == BUF_BLOCK_FILE_PAGE);
|
ut_ad(block->state == BUF_BLOCK_FILE_PAGE);
|
||||||
#ifdef UNIV_DEBUG_FILE_ACCESSES
|
#ifdef UNIV_DEBUG_FILE_ACCESSES
|
||||||
ut_a(block->file_page_was_freed == FALSE);
|
ut_a(block->file_page_was_freed == FALSE);
|
||||||
@ -2027,7 +2060,6 @@ buf_pool_invalidate(void)
|
|||||||
mutex_exit(&(buf_pool->mutex));
|
mutex_exit(&(buf_pool->mutex));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNIV_DEBUG
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Validates the buffer buf_pool data structure. */
|
Validates the buffer buf_pool data structure. */
|
||||||
|
|
||||||
@ -2227,7 +2259,6 @@ buf_print(void)
|
|||||||
|
|
||||||
ut_a(buf_validate());
|
ut_a(buf_validate());
|
||||||
}
|
}
|
||||||
#endif /* UNIV_DEBUG */
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Returns the number of latched pages in the buffer pool. */
|
Returns the number of latched pages in the buffer pool. */
|
||||||
@ -2483,3 +2514,64 @@ buf_get_free_list_len(void)
|
|||||||
|
|
||||||
return(len);
|
return(len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Print the block fields. */
|
||||||
|
|
||||||
|
void
|
||||||
|
buf_block_print(
|
||||||
|
/*============*/
|
||||||
|
const buf_block_t* block) /* in: block to print */
|
||||||
|
{
|
||||||
|
fprintf(stderr,
|
||||||
|
"BLOCK fields\nmagic_n: 0x%lx\n"
|
||||||
|
"state: %lu frame: 0x%lx space:offset: 0x%lx:0x%lx\n"
|
||||||
|
"hash value: 0x%lx check_index_page_at_flush: %ld\n"
|
||||||
|
"newest_modification %lu:%lu oldest_modification %lu:%lu\n"
|
||||||
|
"flush_type: %lu in_free_list: %ld in_LRU_list: %ld\n"
|
||||||
|
"LRU_position: %ld freed_page_clock: %lu old: %ld\n"
|
||||||
|
"accessed: %ld buf_fix_count: %lu io_fix: %ld "
|
||||||
|
"modify_clock: %lu:%lu\n"
|
||||||
|
"n_hash_helps: %lu n_fields: %ld n_bytes: %lu side: %lu\n"
|
||||||
|
"is_hashed: %lu n_pointers: %lu curr_n_fields: %lu\n"
|
||||||
|
"curr_n_bytes: %lu curr_side: %lu index name: %s\n"
|
||||||
|
"file_page_was_freed: %lu\n",
|
||||||
|
block->magic_n, block->state, (ulint) block->frame,
|
||||||
|
block->space, block->offset, block->lock_hash_val,
|
||||||
|
block->check_index_page_at_flush,
|
||||||
|
ut_dulint_get_high(block->newest_modification),
|
||||||
|
ut_dulint_get_low(block->newest_modification),
|
||||||
|
ut_dulint_get_high(block->oldest_modification),
|
||||||
|
ut_dulint_get_low(block->oldest_modification),
|
||||||
|
block->flush_type, block->in_free_list, block->in_LRU_list,
|
||||||
|
block->LRU_position, block->freed_page_clock,
|
||||||
|
block->old, block->accessed, block->buf_fix_count,
|
||||||
|
block->io_fix,
|
||||||
|
ut_dulint_get_high(block->modify_clock),
|
||||||
|
ut_dulint_get_low(block->modify_clock),
|
||||||
|
block->n_hash_helps, block->n_fields, block->n_bytes,
|
||||||
|
block->side, block->is_hashed, block->n_pointers,
|
||||||
|
block->curr_n_fields, block->curr_n_bytes,
|
||||||
|
block->curr_side, block->index->name,
|
||||||
|
block->file_page_was_freed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
Print some diagnostics related to the buffer pool.*/
|
||||||
|
|
||||||
|
void
|
||||||
|
buf_print_diagnostic(
|
||||||
|
/*=================*/
|
||||||
|
mtr_t* mtr, /* in: mtr to print */
|
||||||
|
const buf_block_t* block) /* in: block to print */
|
||||||
|
{
|
||||||
|
fprintf(stderr, "=== MTR ===\n");
|
||||||
|
mtr_print(mtr);
|
||||||
|
buf_LRU_print();
|
||||||
|
buf_print();
|
||||||
|
buf_LRU_validate();
|
||||||
|
buf_print_io(stderr);
|
||||||
|
fprintf(stderr, "=== BLOCK ===\n");
|
||||||
|
buf_block_print(block);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -945,7 +945,6 @@ buf_LRU_block_free_hashed_page(
|
|||||||
buf_LRU_block_free_non_file_page(block);
|
buf_LRU_block_free_non_file_page(block);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNIV_DEBUG
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Validates the LRU list. */
|
Validates the LRU list. */
|
||||||
|
|
||||||
@ -1076,4 +1075,3 @@ buf_LRU_print(void)
|
|||||||
|
|
||||||
mutex_exit(&(buf_pool->mutex));
|
mutex_exit(&(buf_pool->mutex));
|
||||||
}
|
}
|
||||||
#endif /* UNIV_DEBUG */
|
|
||||||
|
@ -1436,6 +1436,9 @@ ibuf_entry_build(
|
|||||||
*buf2++ = 0; /* write the compact format indicator */
|
*buf2++ = 0; /* write the compact format indicator */
|
||||||
}
|
}
|
||||||
for (i = 0; i < n_fields; i++) {
|
for (i = 0; i < n_fields; i++) {
|
||||||
|
ulint fixed_len;
|
||||||
|
const dict_field_t* ifield;
|
||||||
|
|
||||||
/* We add 4 below because we have the 4 extra fields at the
|
/* We add 4 below because we have the 4 extra fields at the
|
||||||
start of an ibuf record */
|
start of an ibuf record */
|
||||||
|
|
||||||
@ -1443,11 +1446,30 @@ ibuf_entry_build(
|
|||||||
entry_field = dtuple_get_nth_field(entry, i);
|
entry_field = dtuple_get_nth_field(entry, i);
|
||||||
dfield_copy(field, entry_field);
|
dfield_copy(field, entry_field);
|
||||||
|
|
||||||
|
ifield = dict_index_get_nth_field(index, i);
|
||||||
|
/* Prefix index columns of fixed-length columns are of
|
||||||
|
fixed length. However, in the function call below,
|
||||||
|
dfield_get_type(entry_field) contains the fixed length
|
||||||
|
of the column in the clustered index. Replace it with
|
||||||
|
the fixed length of the secondary index column. */
|
||||||
|
fixed_len = ifield->fixed_len;
|
||||||
|
|
||||||
|
#ifdef UNIV_DEBUG
|
||||||
|
if (fixed_len) {
|
||||||
|
/* dict_index_add_col() should guarantee these */
|
||||||
|
ut_ad(fixed_len <= (ulint) entry_field->type.len);
|
||||||
|
if (ifield->prefix_len) {
|
||||||
|
ut_ad(ifield->prefix_len == fixed_len);
|
||||||
|
} else {
|
||||||
|
ut_ad(fixed_len
|
||||||
|
== (ulint) entry_field->type.len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* UNIV_DEBUG */
|
||||||
|
|
||||||
dtype_new_store_for_order_and_null_size(
|
dtype_new_store_for_order_and_null_size(
|
||||||
buf2 + i * DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE,
|
buf2 + i * DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE,
|
||||||
dfield_get_type(entry_field),
|
dfield_get_type(entry_field), fixed_len);
|
||||||
dict_index_get_nth_field(index, i)
|
|
||||||
->prefix_len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Store the type info in buf2 to field 3 of tuple */
|
/* Store the type info in buf2 to field 3 of tuple */
|
||||||
|
@ -11,6 +11,15 @@ Created 11/5/1995 Heikki Tuuri
|
|||||||
#include "buf0rea.h"
|
#include "buf0rea.h"
|
||||||
#include "mtr0mtr.h"
|
#include "mtr0mtr.h"
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Print the mtr and block fields. */
|
||||||
|
|
||||||
|
void
|
||||||
|
buf_print_diagnostic(
|
||||||
|
/*=================*/
|
||||||
|
mtr_t* mtr, /* in: mtr to print */
|
||||||
|
const buf_block_t* block); /* in: block to print */
|
||||||
|
|
||||||
#ifdef UNIV_DEBUG
|
#ifdef UNIV_DEBUG
|
||||||
extern ulint buf_dbg_counter; /* This is used to insert validation
|
extern ulint buf_dbg_counter; /* This is used to insert validation
|
||||||
operations in execution in the
|
operations in execution in the
|
||||||
@ -618,12 +627,9 @@ buf_page_release(
|
|||||||
RW_NO_LATCH */
|
RW_NO_LATCH */
|
||||||
mtr_t* mtr) /* in: mtr */
|
mtr_t* mtr) /* in: mtr */
|
||||||
{
|
{
|
||||||
ulint buf_fix_count;
|
|
||||||
|
|
||||||
ut_ad(block);
|
ut_ad(block);
|
||||||
|
|
||||||
ut_a(block->state == BUF_BLOCK_FILE_PAGE);
|
ut_a(block->state == BUF_BLOCK_FILE_PAGE);
|
||||||
ut_a(block->buf_fix_count > 0);
|
|
||||||
|
|
||||||
if (rw_latch == RW_X_LATCH && mtr->modifications) {
|
if (rw_latch == RW_X_LATCH && mtr->modifications) {
|
||||||
mutex_enter(&buf_pool->mutex);
|
mutex_enter(&buf_pool->mutex);
|
||||||
@ -633,11 +639,16 @@ buf_page_release(
|
|||||||
|
|
||||||
mutex_enter(&block->mutex);
|
mutex_enter(&block->mutex);
|
||||||
|
|
||||||
|
/* This debug code has been added to narrow down Bug# 26081 */
|
||||||
|
if (UNIV_UNLIKELY(block->buf_fix_count == 0)) {
|
||||||
|
buf_print_diagnostic(mtr, block);
|
||||||
|
ut_error;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef UNIV_SYNC_DEBUG
|
#ifdef UNIV_SYNC_DEBUG
|
||||||
rw_lock_s_unlock(&(block->debug_latch));
|
rw_lock_s_unlock(&(block->debug_latch));
|
||||||
#endif
|
#endif
|
||||||
buf_fix_count = block->buf_fix_count;
|
--block->buf_fix_count;
|
||||||
block->buf_fix_count = buf_fix_count - 1;
|
|
||||||
|
|
||||||
mutex_exit(&block->mutex);
|
mutex_exit(&block->mutex);
|
||||||
|
|
||||||
|
@ -122,7 +122,6 @@ void
|
|||||||
buf_LRU_make_block_old(
|
buf_LRU_make_block_old(
|
||||||
/*===================*/
|
/*===================*/
|
||||||
buf_block_t* block); /* in: control block */
|
buf_block_t* block); /* in: control block */
|
||||||
#ifdef UNIV_DEBUG
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Validates the LRU list. */
|
Validates the LRU list. */
|
||||||
|
|
||||||
@ -135,7 +134,6 @@ Prints the LRU list. */
|
|||||||
void
|
void
|
||||||
buf_LRU_print(void);
|
buf_LRU_print(void);
|
||||||
/*===============*/
|
/*===============*/
|
||||||
#endif /* UNIV_DEBUG */
|
|
||||||
|
|
||||||
#ifndef UNIV_NONINL
|
#ifndef UNIV_NONINL
|
||||||
#include "buf0lru.ic"
|
#include "buf0lru.ic"
|
||||||
|
@ -84,6 +84,17 @@ dtype_t*
|
|||||||
dict_col_get_type(
|
dict_col_get_type(
|
||||||
/*==============*/
|
/*==============*/
|
||||||
dict_col_t* col);
|
dict_col_t* col);
|
||||||
|
#ifdef UNIV_DEBUG
|
||||||
|
/*************************************************************************
|
||||||
|
Assert that a column and a data type match. */
|
||||||
|
UNIV_INLINE
|
||||||
|
ibool
|
||||||
|
dict_col_type_assert_equal(
|
||||||
|
/*=======================*/
|
||||||
|
/* out: TRUE */
|
||||||
|
const dict_col_t* col, /* in: column */
|
||||||
|
const dtype_t* type); /* in: data type */
|
||||||
|
#endif /* UNIV_DEBUG */
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Gets the column number. */
|
Gets the column number. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
|
@ -23,6 +23,30 @@ dict_col_get_type(
|
|||||||
return(&col->type);
|
return(&col->type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef UNIV_DEBUG
|
||||||
|
/*************************************************************************
|
||||||
|
Assert that a column and a data type match. */
|
||||||
|
UNIV_INLINE
|
||||||
|
ibool
|
||||||
|
dict_col_type_assert_equal(
|
||||||
|
/*=======================*/
|
||||||
|
/* out: TRUE */
|
||||||
|
const dict_col_t* col, /* in: column */
|
||||||
|
const dtype_t* type) /* in: data type */
|
||||||
|
{
|
||||||
|
ut_ad(col);
|
||||||
|
ut_ad(type);
|
||||||
|
|
||||||
|
ut_ad(col->type.mtype == type->mtype);
|
||||||
|
ut_ad(col->type.prtype == type->prtype);
|
||||||
|
ut_ad(col->type.len == type->len);
|
||||||
|
ut_ad(col->type.mbminlen == type->mbminlen);
|
||||||
|
ut_ad(col->type.mbmaxlen == type->mbmaxlen);
|
||||||
|
|
||||||
|
return(TRUE);
|
||||||
|
}
|
||||||
|
#endif /* UNIV_DEBUG */
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Gets the column number. */
|
Gets the column number. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
|
@ -159,10 +159,13 @@ struct dict_col_struct{
|
|||||||
in some of the functions below */
|
in some of the functions below */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DICT_MAX_INDEX_COL_LEN is measured in bytes and is the max index column
|
/* DICT_MAX_INDEX_COL_LEN is measured in bytes and is the maximum
|
||||||
length + 1. Starting from 4.1.6, we set it to < 3 * 256, so that one can
|
indexed column length (or indexed prefix length). It is set to 3*256,
|
||||||
create a column prefix index on 255 characters of a TEXT field also in the
|
so that one can create a column prefix index on 256 characters of a
|
||||||
UTF-8 charset. In that charset, a character may take at most 3 bytes. */
|
TEXT or VARCHAR column also in the UTF-8 charset. In that charset,
|
||||||
|
a character may take at most 3 bytes.
|
||||||
|
This constant MUST NOT BE CHANGED, or the compatibility of InnoDB data
|
||||||
|
files would be at risk! */
|
||||||
|
|
||||||
#define DICT_MAX_INDEX_COL_LEN 768
|
#define DICT_MAX_INDEX_COL_LEN 768
|
||||||
|
|
||||||
|
@ -94,7 +94,8 @@ log. */
|
|||||||
#define OS_FILE_PATH_ERROR 74
|
#define OS_FILE_PATH_ERROR 74
|
||||||
#define OS_FILE_AIO_RESOURCES_RESERVED 75 /* wait for OS aio resources
|
#define OS_FILE_AIO_RESOURCES_RESERVED 75 /* wait for OS aio resources
|
||||||
to become available again */
|
to become available again */
|
||||||
#define OS_FILE_ERROR_NOT_SPECIFIED 76
|
#define OS_FILE_SHARING_VIOLATION 76
|
||||||
|
#define OS_FILE_ERROR_NOT_SPECIFIED 77
|
||||||
|
|
||||||
/* Types for aio operations */
|
/* Types for aio operations */
|
||||||
#define OS_FILE_READ 10
|
#define OS_FILE_READ 10
|
||||||
|
@ -604,7 +604,7 @@ struct trx_struct{
|
|||||||
NULL */
|
NULL */
|
||||||
ibool was_chosen_as_deadlock_victim;
|
ibool was_chosen_as_deadlock_victim;
|
||||||
/* when the transaction decides to wait
|
/* when the transaction decides to wait
|
||||||
for a lock, this it sets this to FALSE;
|
for a lock, it sets this to FALSE;
|
||||||
if another transaction chooses this
|
if another transaction chooses this
|
||||||
transaction as a victim in deadlock
|
transaction as a victim in deadlock
|
||||||
resolution, it sets this to TRUE */
|
resolution, it sets this to TRUE */
|
||||||
|
@ -4438,14 +4438,11 @@ lock_table_queue_validate(
|
|||||||
dict_table_t* table) /* in: table */
|
dict_table_t* table) /* in: table */
|
||||||
{
|
{
|
||||||
lock_t* lock;
|
lock_t* lock;
|
||||||
ibool is_waiting;
|
|
||||||
|
|
||||||
#ifdef UNIV_SYNC_DEBUG
|
#ifdef UNIV_SYNC_DEBUG
|
||||||
ut_ad(mutex_own(&kernel_mutex));
|
ut_ad(mutex_own(&kernel_mutex));
|
||||||
#endif /* UNIV_SYNC_DEBUG */
|
#endif /* UNIV_SYNC_DEBUG */
|
||||||
|
|
||||||
is_waiting = FALSE;
|
|
||||||
|
|
||||||
lock = UT_LIST_GET_FIRST(table->locks);
|
lock = UT_LIST_GET_FIRST(table->locks);
|
||||||
|
|
||||||
while (lock) {
|
while (lock) {
|
||||||
@ -4455,12 +4452,9 @@ lock_table_queue_validate(
|
|||||||
|
|
||||||
if (!lock_get_wait(lock)) {
|
if (!lock_get_wait(lock)) {
|
||||||
|
|
||||||
ut_a(!is_waiting);
|
|
||||||
|
|
||||||
ut_a(!lock_table_other_has_incompatible(lock->trx, 0,
|
ut_a(!lock_table_other_has_incompatible(lock->trx, 0,
|
||||||
table, lock_get_mode(lock)));
|
table, lock_get_mode(lock)));
|
||||||
} else {
|
} else {
|
||||||
is_waiting = TRUE;
|
|
||||||
|
|
||||||
ut_a(lock_table_has_to_wait_in_queue(lock));
|
ut_a(lock_table_has_to_wait_in_queue(lock));
|
||||||
}
|
}
|
||||||
|
@ -3061,9 +3061,22 @@ loop:
|
|||||||
|
|
||||||
mutex_enter(&kernel_mutex);
|
mutex_enter(&kernel_mutex);
|
||||||
|
|
||||||
/* Check that there are no longer transactions. We need this wait even
|
/* We need the monitor threads to stop before we proceed with a
|
||||||
for the 'very fast' shutdown, because the InnoDB layer may have
|
normal shutdown. In case of very fast shutdown, however, we can
|
||||||
committed or prepared transactions and we don't want to lose them. */
|
proceed without waiting for monitor threads. */
|
||||||
|
|
||||||
|
if (srv_fast_shutdown < 2
|
||||||
|
&& (srv_error_monitor_active
|
||||||
|
|| srv_lock_timeout_and_monitor_active)) {
|
||||||
|
|
||||||
|
mutex_exit(&kernel_mutex);
|
||||||
|
|
||||||
|
goto loop;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check that there are no longer transactions. We need this wait even
|
||||||
|
for the 'very fast' shutdown, because the InnoDB layer may have
|
||||||
|
committed or prepared transactions and we don't want to lose them. */
|
||||||
|
|
||||||
if (trx_n_mysql_transactions > 0
|
if (trx_n_mysql_transactions > 0
|
||||||
|| UT_LIST_GET_LEN(trx_sys->trx_list) > 0) {
|
|| UT_LIST_GET_LEN(trx_sys->trx_list) > 0) {
|
||||||
@ -3184,22 +3197,8 @@ loop:
|
|||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The lock timeout thread should now have exited */
|
|
||||||
|
|
||||||
if (srv_lock_timeout_and_monitor_active) {
|
|
||||||
|
|
||||||
goto loop;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We now let also the InnoDB error monitor thread to exit */
|
|
||||||
|
|
||||||
srv_shutdown_state = SRV_SHUTDOWN_LAST_PHASE;
|
srv_shutdown_state = SRV_SHUTDOWN_LAST_PHASE;
|
||||||
|
|
||||||
if (srv_error_monitor_active) {
|
|
||||||
|
|
||||||
goto loop;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make some checks that the server really is quiet */
|
/* Make some checks that the server really is quiet */
|
||||||
ut_a(srv_n_threads_active[SRV_MASTER] == 0);
|
ut_a(srv_n_threads_active[SRV_MASTER] == 0);
|
||||||
ut_a(buf_all_freed());
|
ut_a(buf_all_freed());
|
||||||
|
@ -326,7 +326,16 @@ mtr_print(
|
|||||||
mtr_t* mtr) /* in: mtr */
|
mtr_t* mtr) /* in: mtr */
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Mini-transaction handle: memo size %lu bytes log size %lu bytes\n",
|
"Mini-transaction handle: memo size %lu bytes log "
|
||||||
|
"size %lu bytes\n"
|
||||||
|
"state: %lu modifications: %lu n_lock_recs %lu\n"
|
||||||
|
"log_mode: %lu start_lsn: %lu:%lu end_lsn: %lu:%lu\n",
|
||||||
(ulong) dyn_array_get_data_size(&(mtr->memo)),
|
(ulong) dyn_array_get_data_size(&(mtr->memo)),
|
||||||
(ulong) dyn_array_get_data_size(&(mtr->log)));
|
(ulong) dyn_array_get_data_size(&(mtr->log)),
|
||||||
|
mtr->state, (ulint) mtr->modifications,
|
||||||
|
mtr->n_log_recs, mtr->log_mode,
|
||||||
|
ut_dulint_get_high(mtr->start_lsn),
|
||||||
|
ut_dulint_get_low(mtr->start_lsn),
|
||||||
|
ut_dulint_get_high(mtr->end_lsn),
|
||||||
|
ut_dulint_get_low(mtr->end_lsn));
|
||||||
}
|
}
|
||||||
|
@ -243,7 +243,13 @@ os_file_get_last_error(
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"InnoDB: The error means mysqld does not have the access rights to\n"
|
"InnoDB: The error means mysqld does not have the access rights to\n"
|
||||||
"InnoDB: the directory. It may also be you have created a subdirectory\n"
|
"InnoDB: the directory. It may also be you have created a subdirectory\n"
|
||||||
"InnoDB: of the same name as a data file.\n");
|
"InnoDB: of the same name as a data file.\n");
|
||||||
|
} else if (err == ERROR_SHARING_VIOLATION
|
||||||
|
|| err == ERROR_LOCK_VIOLATION) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: The error means that another program is using InnoDB's files.\n"
|
||||||
|
"InnoDB: This might be a backup or antivirus software or another instance\n"
|
||||||
|
"InnoDB: of MySQL. Please close it to get rid of this error.\n");
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"InnoDB: Some operating system error numbers are described at\n"
|
"InnoDB: Some operating system error numbers are described at\n"
|
||||||
@ -260,6 +266,9 @@ os_file_get_last_error(
|
|||||||
return(OS_FILE_DISK_FULL);
|
return(OS_FILE_DISK_FULL);
|
||||||
} else if (err == ERROR_FILE_EXISTS) {
|
} else if (err == ERROR_FILE_EXISTS) {
|
||||||
return(OS_FILE_ALREADY_EXISTS);
|
return(OS_FILE_ALREADY_EXISTS);
|
||||||
|
} else if (err == ERROR_SHARING_VIOLATION
|
||||||
|
|| err == ERROR_LOCK_VIOLATION) {
|
||||||
|
return(OS_FILE_SHARING_VIOLATION);
|
||||||
} else {
|
} else {
|
||||||
return(100 + err);
|
return(100 + err);
|
||||||
}
|
}
|
||||||
@ -369,6 +378,12 @@ os_file_handle_error_cond_exit(
|
|||||||
|| err == OS_FILE_PATH_ERROR) {
|
|| err == OS_FILE_PATH_ERROR) {
|
||||||
|
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
|
|
||||||
|
} else if (err == OS_FILE_SHARING_VIOLATION) {
|
||||||
|
|
||||||
|
os_thread_sleep(10000000); /* 10 sec */
|
||||||
|
return(TRUE);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (name) {
|
if (name) {
|
||||||
fprintf(stderr, "InnoDB: File name %s\n", name);
|
fprintf(stderr, "InnoDB: File name %s\n", name);
|
||||||
|
@ -462,7 +462,7 @@ rec_get_converted_size_new(
|
|||||||
case REC_STATUS_INFIMUM:
|
case REC_STATUS_INFIMUM:
|
||||||
case REC_STATUS_SUPREMUM:
|
case REC_STATUS_SUPREMUM:
|
||||||
/* infimum or supremum record, 8 bytes */
|
/* infimum or supremum record, 8 bytes */
|
||||||
return(size + 8); /* no extra data needed */
|
return(8); /* no extra data needed */
|
||||||
default:
|
default:
|
||||||
ut_a(0);
|
ut_a(0);
|
||||||
return(ULINT_UNDEFINED);
|
return(ULINT_UNDEFINED);
|
||||||
@ -473,23 +473,34 @@ rec_get_converted_size_new(
|
|||||||
ulint len = dtuple_get_nth_field(dtuple, i)->len;
|
ulint len = dtuple_get_nth_field(dtuple, i)->len;
|
||||||
field = dict_index_get_nth_field(index, i);
|
field = dict_index_get_nth_field(index, i);
|
||||||
type = dict_col_get_type(dict_field_get_col(field));
|
type = dict_col_get_type(dict_field_get_col(field));
|
||||||
ut_ad(len != UNIV_SQL_NULL ||
|
|
||||||
!(dtype_get_prtype(type) & DATA_NOT_NULL));
|
ut_ad(dict_col_type_assert_equal(
|
||||||
|
dict_field_get_col(field),
|
||||||
|
dfield_get_type(dtuple_get_nth_field(
|
||||||
|
dtuple, i))));
|
||||||
|
|
||||||
if (len == UNIV_SQL_NULL) {
|
if (len == UNIV_SQL_NULL) {
|
||||||
/* No length is stored for NULL fields. */
|
/* No length is stored for NULL fields. */
|
||||||
|
ut_ad(!(dtype_get_prtype(type) & DATA_NOT_NULL));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ut_ad(len <= dtype_get_len(type)
|
ut_ad(len <= dtype_get_len(type)
|
||||||
|| dtype_get_mtype(type) == DATA_BLOB);
|
|| dtype_get_mtype(type) == DATA_BLOB);
|
||||||
ut_ad(!field->fixed_len || len == field->fixed_len);
|
|
||||||
|
|
||||||
if (field->fixed_len) {
|
if (field->fixed_len) {
|
||||||
|
ut_ad(len == field->fixed_len);
|
||||||
|
/* dict_index_add_col() should guarantee this */
|
||||||
|
ut_ad(!field->prefix_len
|
||||||
|
|| field->fixed_len == field->prefix_len);
|
||||||
} else if (len < 128 || (dtype_get_len(type) < 256
|
} else if (len < 128 || (dtype_get_len(type) < 256
|
||||||
&& dtype_get_mtype(type) != DATA_BLOB)) {
|
&& dtype_get_mtype(type) != DATA_BLOB)) {
|
||||||
size++;
|
size++;
|
||||||
} else {
|
} else {
|
||||||
|
/* For variable-length columns, we look up the
|
||||||
|
maximum length from the column itself. If this
|
||||||
|
is a prefix index column shorter than 256 bytes,
|
||||||
|
this will waste one byte. */
|
||||||
size += 2;
|
size += 2;
|
||||||
}
|
}
|
||||||
size += len;
|
size += len;
|
||||||
@ -885,6 +896,11 @@ rec_convert_dtuple_to_rec_new(
|
|||||||
len = dfield_get_len(field);
|
len = dfield_get_len(field);
|
||||||
fixed_len = dict_index_get_nth_field(index, i)->fixed_len;
|
fixed_len = dict_index_get_nth_field(index, i)->fixed_len;
|
||||||
|
|
||||||
|
ut_ad(dict_col_type_assert_equal(
|
||||||
|
dict_field_get_col(dict_index_get_nth_field(
|
||||||
|
index, i)),
|
||||||
|
dfield_get_type(field)));
|
||||||
|
|
||||||
if (!(dtype_get_prtype(type) & DATA_NOT_NULL)) {
|
if (!(dtype_get_prtype(type) & DATA_NOT_NULL)) {
|
||||||
if (len == UNIV_SQL_NULL)
|
if (len == UNIV_SQL_NULL)
|
||||||
continue;
|
continue;
|
||||||
|
@ -3451,6 +3451,31 @@ shortcut_fails_too_big_rec:
|
|||||||
pcur, 0, &mtr);
|
pcur, 0, &mtr);
|
||||||
|
|
||||||
pcur->trx_if_known = trx;
|
pcur->trx_if_known = trx;
|
||||||
|
|
||||||
|
rec = btr_pcur_get_rec(pcur);
|
||||||
|
|
||||||
|
if (!moves_up
|
||||||
|
&& !page_rec_is_supremum(rec)
|
||||||
|
&& set_also_gap_locks
|
||||||
|
&& !srv_locks_unsafe_for_binlog
|
||||||
|
&& prebuilt->select_lock_type != LOCK_NONE) {
|
||||||
|
|
||||||
|
/* Try to place a gap lock on the next index record
|
||||||
|
to prevent phantoms in ORDER BY ... DESC queries */
|
||||||
|
|
||||||
|
offsets = rec_get_offsets(page_rec_get_next(rec),
|
||||||
|
index, offsets,
|
||||||
|
ULINT_UNDEFINED, &heap);
|
||||||
|
err = sel_set_rec_lock(page_rec_get_next(rec),
|
||||||
|
index, offsets,
|
||||||
|
prebuilt->select_lock_type,
|
||||||
|
LOCK_GAP, thr);
|
||||||
|
|
||||||
|
if (err != DB_SUCCESS) {
|
||||||
|
|
||||||
|
goto lock_wait_or_error;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mode == PAGE_CUR_G) {
|
if (mode == PAGE_CUR_G) {
|
||||||
btr_pcur_open_at_index_side(TRUE, index,
|
btr_pcur_open_at_index_side(TRUE, index,
|
||||||
|
@ -1037,7 +1037,7 @@ retry:
|
|||||||
if (!has_slept && !trx->has_search_latch
|
if (!has_slept && !trx->has_search_latch
|
||||||
&& NULL == UT_LIST_GET_FIRST(trx->trx_locks)) {
|
&& NULL == UT_LIST_GET_FIRST(trx->trx_locks)) {
|
||||||
|
|
||||||
has_slept = TRUE; /* We let is sleep only once to avoid
|
has_slept = TRUE; /* We let it sleep only once to avoid
|
||||||
starvation */
|
starvation */
|
||||||
|
|
||||||
srv_conc_n_waiting_threads++;
|
srv_conc_n_waiting_threads++;
|
||||||
@ -1858,6 +1858,7 @@ srv_lock_timeout_and_monitor_thread(
|
|||||||
double time_elapsed;
|
double time_elapsed;
|
||||||
time_t current_time;
|
time_t current_time;
|
||||||
time_t last_table_monitor_time;
|
time_t last_table_monitor_time;
|
||||||
|
time_t last_tablespace_monitor_time;
|
||||||
time_t last_monitor_time;
|
time_t last_monitor_time;
|
||||||
ibool some_waits;
|
ibool some_waits;
|
||||||
double wait_time;
|
double wait_time;
|
||||||
@ -1870,6 +1871,7 @@ srv_lock_timeout_and_monitor_thread(
|
|||||||
UT_NOT_USED(arg);
|
UT_NOT_USED(arg);
|
||||||
srv_last_monitor_time = time(NULL);
|
srv_last_monitor_time = time(NULL);
|
||||||
last_table_monitor_time = time(NULL);
|
last_table_monitor_time = time(NULL);
|
||||||
|
last_tablespace_monitor_time = time(NULL);
|
||||||
last_monitor_time = time(NULL);
|
last_monitor_time = time(NULL);
|
||||||
loop:
|
loop:
|
||||||
srv_lock_timeout_and_monitor_active = TRUE;
|
srv_lock_timeout_and_monitor_active = TRUE;
|
||||||
@ -1905,9 +1907,9 @@ loop:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (srv_print_innodb_tablespace_monitor
|
if (srv_print_innodb_tablespace_monitor
|
||||||
&& difftime(current_time, last_table_monitor_time) > 60) {
|
&& difftime(current_time, last_tablespace_monitor_time) > 60) {
|
||||||
|
|
||||||
last_table_monitor_time = time(NULL);
|
last_tablespace_monitor_time = time(NULL);
|
||||||
|
|
||||||
fputs("================================================\n",
|
fputs("================================================\n",
|
||||||
stderr);
|
stderr);
|
||||||
@ -2103,7 +2105,7 @@ loop:
|
|||||||
|
|
||||||
os_thread_sleep(2000000);
|
os_thread_sleep(2000000);
|
||||||
|
|
||||||
if (srv_shutdown_state < SRV_SHUTDOWN_LAST_PHASE) {
|
if (srv_shutdown_state < SRV_SHUTDOWN_CLEANUP) {
|
||||||
|
|
||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,10 @@ INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
|||||||
# storage does not work properly in DLLs.
|
# storage does not work properly in DLLs.
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||||
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||||
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||||
|
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||||
|
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||||
${CMAKE_SOURCE_DIR}/zlib
|
${CMAKE_SOURCE_DIR}/zlib
|
||||||
|
@ -67,8 +67,6 @@
|
|||||||
|
|
||||||
ulong net_buffer_length=8192;
|
ulong net_buffer_length=8192;
|
||||||
ulong max_allowed_packet= 1024L*1024L*1024L;
|
ulong max_allowed_packet= 1024L*1024L*1024L;
|
||||||
ulong net_read_timeout= CLIENT_NET_READ_TIMEOUT;
|
|
||||||
ulong net_write_timeout= CLIENT_NET_WRITE_TIMEOUT;
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
@ -170,8 +168,23 @@ int STDCALL mysql_server_init(int argc __attribute__((unused)),
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Free all memory and resources used by the client library
|
||||||
|
|
||||||
|
NOTES
|
||||||
|
When calling this there should not be any other threads using
|
||||||
|
the library.
|
||||||
|
|
||||||
|
To make things simpler when used with windows dll's (which calls this
|
||||||
|
function automaticly), it's safe to call this function multiple times.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
void STDCALL mysql_server_end()
|
void STDCALL mysql_server_end()
|
||||||
{
|
{
|
||||||
|
if (!mysql_client_init)
|
||||||
|
return;
|
||||||
|
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
end_embedded_server();
|
end_embedded_server();
|
||||||
#endif
|
#endif
|
||||||
@ -1528,8 +1541,8 @@ my_bool STDCALL mysql_embedded(void)
|
|||||||
void my_net_local_init(NET *net)
|
void my_net_local_init(NET *net)
|
||||||
{
|
{
|
||||||
net->max_packet= (uint) net_buffer_length;
|
net->max_packet= (uint) net_buffer_length;
|
||||||
net->read_timeout= (uint) net_read_timeout;
|
my_net_set_read_timeout(net, CLIENT_NET_READ_TIMEOUT);
|
||||||
net->write_timeout=(uint) net_write_timeout;
|
my_net_set_write_timeout(net, CLIENT_NET_WRITE_TIMEOUT);
|
||||||
net->retry_count= 1;
|
net->retry_count= 1;
|
||||||
net->max_packet_size= max(net_buffer_length, max_allowed_packet);
|
net->max_packet_size= max(net_buffer_length, max_allowed_packet);
|
||||||
}
|
}
|
||||||
@ -3665,33 +3678,38 @@ static void fetch_long_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
|
|||||||
case MYSQL_TYPE_FLOAT:
|
case MYSQL_TYPE_FLOAT:
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
We need to store data in the buffer before the truncation check to
|
We need to mark the local variable volatile to
|
||||||
workaround Intel FPU executive precision feature.
|
workaround Intel FPU executive precision feature.
|
||||||
(See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=323 for details)
|
(See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=323 for details)
|
||||||
AFAIU it does not guarantee to work.
|
|
||||||
*/
|
*/
|
||||||
float data;
|
volatile float data;
|
||||||
if (is_unsigned)
|
if (is_unsigned)
|
||||||
|
{
|
||||||
data= (float) ulonglong2double(value);
|
data= (float) ulonglong2double(value);
|
||||||
|
*param->error= ((ulonglong) value) != ((ulonglong) data);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
data= (float) value;
|
{
|
||||||
|
data= (float)value;
|
||||||
|
*param->error= value != ((longlong) data);
|
||||||
|
}
|
||||||
floatstore(buffer, data);
|
floatstore(buffer, data);
|
||||||
*param->error= is_unsigned ?
|
|
||||||
((ulonglong) value) != ((ulonglong) (*(float*) buffer)) :
|
|
||||||
((longlong) value) != ((longlong) (*(float*) buffer));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MYSQL_TYPE_DOUBLE:
|
case MYSQL_TYPE_DOUBLE:
|
||||||
{
|
{
|
||||||
double data;
|
volatile double data;
|
||||||
if (is_unsigned)
|
if (is_unsigned)
|
||||||
|
{
|
||||||
data= ulonglong2double(value);
|
data= ulonglong2double(value);
|
||||||
|
*param->error= ((ulonglong) value) != ((ulonglong) data);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
data= (double)value;
|
data= (double)value;
|
||||||
|
*param->error= value != ((longlong) data);
|
||||||
|
}
|
||||||
doublestore(buffer, data);
|
doublestore(buffer, data);
|
||||||
*param->error= is_unsigned ?
|
|
||||||
((ulonglong) value) != ((ulonglong) (*(double*) buffer)) :
|
|
||||||
((longlong) value) != ((longlong) (*(double*) buffer));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MYSQL_TYPE_TIME:
|
case MYSQL_TYPE_TIME:
|
||||||
|
@ -590,7 +590,7 @@ void *create_embedded_thd(int client_flag)
|
|||||||
thd->set_time();
|
thd->set_time();
|
||||||
thd->init_for_queries();
|
thd->init_for_queries();
|
||||||
thd->client_capabilities= client_flag;
|
thd->client_capabilities= client_flag;
|
||||||
thd->real_id= (pthread_t) thd;
|
thd->real_id= (pthread_t)thd->thread_id;
|
||||||
|
|
||||||
thd->db= NULL;
|
thd->db= NULL;
|
||||||
thd->db_length= 0;
|
thd->db_length= 0;
|
||||||
|
@ -29,8 +29,8 @@ EXPORTS
|
|||||||
my_print_variables
|
my_print_variables
|
||||||
my_realloc
|
my_realloc
|
||||||
my_strdup
|
my_strdup
|
||||||
my_thread_end
|
mysql_thread_end
|
||||||
my_thread_init
|
mysql_thread_init
|
||||||
myodbc_remove_escape
|
myodbc_remove_escape
|
||||||
mysql_affected_rows
|
mysql_affected_rows
|
||||||
mysql_autocommit
|
mysql_autocommit
|
||||||
|
@ -111,7 +111,7 @@ byte ft_get_word(CHARSET_INFO *cs, byte **start, byte *end,
|
|||||||
|
|
||||||
while (doc<end)
|
while (doc<end)
|
||||||
{
|
{
|
||||||
for (;doc<end;doc++)
|
for (; doc < end; doc+= mbl)
|
||||||
{
|
{
|
||||||
if (true_word_char(cs,*doc)) break;
|
if (true_word_char(cs,*doc)) break;
|
||||||
if (*doc == FTB_RQUOT && param->quot)
|
if (*doc == FTB_RQUOT && param->quot)
|
||||||
@ -120,6 +120,7 @@ byte ft_get_word(CHARSET_INFO *cs, byte **start, byte *end,
|
|||||||
*start=doc+1;
|
*start=doc+1;
|
||||||
return 3; /* FTB_RBR */
|
return 3; /* FTB_RBR */
|
||||||
}
|
}
|
||||||
|
mbl= my_mbcharlen(cs, *(uchar *)doc);
|
||||||
if (!param->quot)
|
if (!param->quot)
|
||||||
{
|
{
|
||||||
if (*doc == FTB_LBR || *doc == FTB_RBR || *doc == FTB_LQUOT)
|
if (*doc == FTB_LBR || *doc == FTB_RBR || *doc == FTB_LQUOT)
|
||||||
@ -187,10 +188,11 @@ byte ft_simple_get_word(CHARSET_INFO *cs, byte **start, const byte *end,
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
for (;; doc++)
|
for (;; doc+= mbl)
|
||||||
{
|
{
|
||||||
if (doc >= end) DBUG_RETURN(0);
|
if (doc >= end) DBUG_RETURN(0);
|
||||||
if (true_word_char(cs, *doc)) break;
|
if (true_word_char(cs, *doc)) break;
|
||||||
|
mbl= my_mbcharlen(cs, *(uchar *)doc);
|
||||||
}
|
}
|
||||||
|
|
||||||
mwc= length= 0;
|
mwc= length= 0;
|
||||||
|
@ -252,16 +252,16 @@ uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key, uchar *old,
|
|||||||
if (keyseg->flag & HA_SPACE_PACK)
|
if (keyseg->flag & HA_SPACE_PACK)
|
||||||
{
|
{
|
||||||
uchar *end=pos+length;
|
uchar *end=pos+length;
|
||||||
if (type != HA_KEYTYPE_NUM)
|
if (type == HA_KEYTYPE_NUM)
|
||||||
{
|
|
||||||
while (end > pos && end[-1] == ' ')
|
|
||||||
end--;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
while (pos < end && pos[0] == ' ')
|
while (pos < end && pos[0] == ' ')
|
||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
|
else if (type != HA_KEYTYPE_BINARY)
|
||||||
|
{
|
||||||
|
while (end > pos && end[-1] == ' ')
|
||||||
|
end--;
|
||||||
|
}
|
||||||
k_length-=length;
|
k_length-=length;
|
||||||
length=(uint) (end-pos);
|
length=(uint) (end-pos);
|
||||||
FIX_LENGTH(cs, pos, length, char_length);
|
FIX_LENGTH(cs, pos, length, char_length);
|
||||||
|
@ -225,7 +225,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
|
|||||||
|
|
||||||
key_parts+=fulltext_keys*FT_SEGS;
|
key_parts+=fulltext_keys*FT_SEGS;
|
||||||
if (share->base.max_key_length > MI_MAX_KEY_BUFF || keys > MI_MAX_KEY ||
|
if (share->base.max_key_length > MI_MAX_KEY_BUFF || keys > MI_MAX_KEY ||
|
||||||
key_parts >= MI_MAX_KEY * MI_MAX_KEY_SEG)
|
key_parts > MI_MAX_KEY * MI_MAX_KEY_SEG)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("error",("Wrong key info: Max_key_length: %d keys: %d key_parts: %d", share->base.max_key_length, keys, key_parts));
|
DBUG_PRINT("error",("Wrong key info: Max_key_length: %d keys: %d key_parts: %d", share->base.max_key_length, keys, key_parts));
|
||||||
my_errno=HA_ERR_UNSUPPORTED;
|
my_errno=HA_ERR_UNSUPPORTED;
|
||||||
|
@ -138,8 +138,9 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages,
|
|||||||
|
|
||||||
while (memavl >= MIN_SORT_MEMORY)
|
while (memavl >= MIN_SORT_MEMORY)
|
||||||
{
|
{
|
||||||
if ((my_off_t) (records+1)*(sort_length+sizeof(char*)) <=
|
if ((records < UINT_MAX32) &&
|
||||||
(my_off_t) memavl)
|
((my_off_t) (records + 1) *
|
||||||
|
(sort_length + sizeof(char*)) <= (my_off_t) memavl))
|
||||||
keys= records+1;
|
keys= records+1;
|
||||||
else
|
else
|
||||||
do
|
do
|
||||||
|
@ -29,4 +29,7 @@ extern pthread_mutex_t THR_LOCK_open;
|
|||||||
|
|
||||||
int _myrg_init_queue(MYRG_INFO *info,int inx,enum ha_rkey_function search_flag);
|
int _myrg_init_queue(MYRG_INFO *info,int inx,enum ha_rkey_function search_flag);
|
||||||
int _myrg_mi_read_record(MI_INFO *info, byte *buf);
|
int _myrg_mi_read_record(MI_INFO *info, byte *buf);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
#endif
|
||||||
|
void myrg_print_wrong_table(const char *table_name);
|
||||||
|
@ -90,6 +90,11 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
|
|||||||
if (!(isam=mi_open(buff,mode,(handle_locking?HA_OPEN_WAIT_IF_LOCKED:0))))
|
if (!(isam=mi_open(buff,mode,(handle_locking?HA_OPEN_WAIT_IF_LOCKED:0))))
|
||||||
{
|
{
|
||||||
my_errno= HA_ERR_WRONG_MRG_TABLE_DEF;
|
my_errno= HA_ERR_WRONG_MRG_TABLE_DEF;
|
||||||
|
if (handle_locking & HA_OPEN_FOR_REPAIR)
|
||||||
|
{
|
||||||
|
myrg_print_wrong_table(buff);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (!m_info) /* First file */
|
if (!m_info) /* First file */
|
||||||
@ -118,6 +123,11 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
|
|||||||
if (m_info->reclength != isam->s->base.reclength)
|
if (m_info->reclength != isam->s->base.reclength)
|
||||||
{
|
{
|
||||||
my_errno=HA_ERR_WRONG_MRG_TABLE_DEF;
|
my_errno=HA_ERR_WRONG_MRG_TABLE_DEF;
|
||||||
|
if (handle_locking & HA_OPEN_FOR_REPAIR)
|
||||||
|
{
|
||||||
|
myrg_print_wrong_table(buff);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
m_info->options|= isam->s->options;
|
m_info->options|= isam->s->options;
|
||||||
@ -131,6 +141,8 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking)
|
|||||||
m_info->tables);
|
m_info->tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (my_errno == HA_ERR_WRONG_MRG_TABLE_DEF)
|
||||||
|
goto err;
|
||||||
if (!m_info && !(m_info= (MYRG_INFO*) my_malloc(sizeof(MYRG_INFO),
|
if (!m_info && !(m_info= (MYRG_INFO*) my_malloc(sizeof(MYRG_INFO),
|
||||||
MYF(MY_WME | MY_ZEROFILL))))
|
MYF(MY_WME | MY_ZEROFILL))))
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -60,6 +60,7 @@ dist-hook:
|
|||||||
$(INSTALL_DATA) $(srcdir)/include/*.test $(distdir)/include
|
$(INSTALL_DATA) $(srcdir)/include/*.test $(distdir)/include
|
||||||
$(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r
|
$(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(distdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(distdir)/std_data
|
||||||
|
$(INSTALL_DATA) $(srcdir)/std_data/Index.xml $(distdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(distdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(distdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(distdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(distdir)/std_data
|
||||||
@ -94,6 +95,7 @@ install-data-local:
|
|||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(DESTDIR)$(testdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(DESTDIR)$(testdir)/std_data
|
||||||
|
$(INSTALL_DATA) $(srcdir)/std_data/Index.xml $(DESTDIR)$(testdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(DESTDIR)$(testdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.frm $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.frm $(DESTDIR)$(testdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
--source include/have_log_bin.inc
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
--source ./include/have_federated_db.inc
|
--source ./include/have_federated_db.inc
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
-- require r/have_outfile.require
|
-- require r/have_outfile.require
|
||||||
disable_query_log;
|
disable_query_log;
|
||||||
select load_file(concat(@tmpdir,"/outfile.test"));
|
select load_file(concat(@tmpdir,"/outfile.test"));
|
||||||
--exec rm $MYSQLTEST_VARDIR/tmp/outfile.test
|
--remove_file $MYSQLTEST_VARDIR/tmp/outfile.test
|
||||||
enable_query_log;
|
enable_query_log;
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
-- require r/is_debug_build.require
|
|
||||||
--disable_query_log
|
|
||||||
select instr(version(), "debug") > 0;
|
|
||||||
--enable_query_log
|
|
@ -1,3 +1,6 @@
|
|||||||
|
# Replication tests need binlog
|
||||||
|
source include/have_log_bin.inc;
|
||||||
|
|
||||||
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||||
connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||||
connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
|
connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
|
||||||
|
4
mysql-test/include/show_binlog_events.inc
Normal file
4
mysql-test/include/show_binlog_events.inc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
--let $binlog_start=98
|
||||||
|
--replace_column 5 #
|
||||||
|
--replace_regex /\/\* xid=.* \*\//\/* XID *\//
|
||||||
|
--eval show binlog events from $binlog_start
|
14
mysql-test/include/uses_vardir.inc
Normal file
14
mysql-test/include/uses_vardir.inc
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#
|
||||||
|
# Some tests uses LOAD DATA with a relative path
|
||||||
|
# and need to see for example ../std_data
|
||||||
|
#
|
||||||
|
# Also if an absolute path was used, the server might be started
|
||||||
|
# with --secure-file-priv and wouldn't be allowed to LOAD a file
|
||||||
|
# outside of it's vardir anyway
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
if (`select LOCATE('$MYSQLTEST_VARDIR', REPLACE(@@datadir, '\\\\', '/')) != 1`)
|
||||||
|
{
|
||||||
|
skip Need mysqld in MYSQLTEST_VARDIR;
|
||||||
|
}
|
33
mysql-test/include/wait_for_slave_io_to_stop.inc
Normal file
33
mysql-test/include/wait_for_slave_io_to_stop.inc
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
###################################################
|
||||||
|
#Author: Jeb
|
||||||
|
#Date: 2007-06-11
|
||||||
|
#Purpose: used for io errors on the slave. If Slave gets an io
|
||||||
|
# error, the io trhead should stop
|
||||||
|
#Details:
|
||||||
|
# 1) Fill in and setup variables
|
||||||
|
# 2) loop through looking for
|
||||||
|
# sql threads to stop
|
||||||
|
# 3) If loops too long die.
|
||||||
|
####################################################
|
||||||
|
connection slave;
|
||||||
|
let $my_show= SHOW SLAVE STATUS;
|
||||||
|
let $sql_running= Slave_IO_Running;
|
||||||
|
let $row_number= 1;
|
||||||
|
let $run= 1;
|
||||||
|
let $counter= 300;
|
||||||
|
|
||||||
|
while ($run)
|
||||||
|
{
|
||||||
|
let $io_result= query_get_value("SHOW SLAVE STATUS", Slave_IO_Running, $row_number);
|
||||||
|
if (`SELECT '$io_result' = 'No'`){
|
||||||
|
let $run= 0;
|
||||||
|
}
|
||||||
|
sleep 0.1;
|
||||||
|
if (!$counter){
|
||||||
|
--echo "Failed while waiting for slave IO thread to stop"
|
||||||
|
SHOW SLAVE STATUS;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
dec $counter;
|
||||||
|
}
|
||||||
|
|
26
mysql-test/include/wait_for_slave_param.inc
Normal file
26
mysql-test/include/wait_for_slave_param.inc
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# include/wait_for_slave_param.inc
|
||||||
|
#
|
||||||
|
# SUMMARY
|
||||||
|
#
|
||||||
|
# Waits until SHOW SLAVE STATUS has returned a spicified value.
|
||||||
|
#
|
||||||
|
# USAGE
|
||||||
|
#
|
||||||
|
# let $slave_param= Slave_SQL_Running;
|
||||||
|
# let $slave_param_value= No;
|
||||||
|
# --source include/slave_wait_param.inc
|
||||||
|
|
||||||
|
let $slave_wait_param_counter= 300;
|
||||||
|
let $slave_value= query_get_value("SHOW SLAVE STATUS", $slave_param, 1);
|
||||||
|
while (`select "$slave_value" != "$slave_param_value"`)
|
||||||
|
{
|
||||||
|
dec $slave_wait_param_counter;
|
||||||
|
if (!$slave_wait_param_counter)
|
||||||
|
{
|
||||||
|
--echo ERROR: failed while waiting for slave parameter $slave_param: $slave_param_value
|
||||||
|
query_vertical show slave status;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
sleep 0.1;
|
||||||
|
let $slave_value= query_get_value("SHOW SLAVE STATUS", $slave_param, 1);
|
||||||
|
}
|
30
mysql-test/include/wait_for_slave_sql_to_stop.inc
Normal file
30
mysql-test/include/wait_for_slave_sql_to_stop.inc
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
###################################################
|
||||||
|
#Author: Jeb
|
||||||
|
#Date: 2007-06-11
|
||||||
|
#Purpose: used for SQL errors on the slave. If Slave gets a sql
|
||||||
|
# error, the SQL trhead should stop
|
||||||
|
#Details:
|
||||||
|
# 1) Fill in and setup variables
|
||||||
|
# 2) loop through looking for
|
||||||
|
# sql threads to stop
|
||||||
|
# 3) If loops too long die.
|
||||||
|
####################################################
|
||||||
|
connection slave;
|
||||||
|
let $row_number= 1;
|
||||||
|
let $run= 1;
|
||||||
|
let $counter= 300;
|
||||||
|
|
||||||
|
while ($run)
|
||||||
|
{
|
||||||
|
let $sql_result= query_get_value("SHOW SLAVE STATUS", Slave_SQL_Running, $row_number);
|
||||||
|
if (`SELECT '$sql_result' = 'No'`){
|
||||||
|
let $run= 0;
|
||||||
|
}
|
||||||
|
sleep 0.1;
|
||||||
|
if (!$counter){
|
||||||
|
--echo "Failed while waiting for slave SQL thread to stop"
|
||||||
|
SHOW SLAVE STATUS;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
dec $counter;
|
||||||
|
}
|
35
mysql-test/include/wait_for_slave_to_start.inc
Normal file
35
mysql-test/include/wait_for_slave_to_start.inc
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
###################################################
|
||||||
|
#Author: Jeb
|
||||||
|
#Date: 2007-06-11
|
||||||
|
#Purpose: To wait a brief time for slave to start
|
||||||
|
#Details:
|
||||||
|
# 1) Fill in and setup variables
|
||||||
|
# 2) loop through looking for both
|
||||||
|
# io and sql threads to start
|
||||||
|
# 3) If loops too long die.
|
||||||
|
####################################################
|
||||||
|
connection slave;
|
||||||
|
let $row_number= 1;
|
||||||
|
let $run= 1;
|
||||||
|
let $counter= 300;
|
||||||
|
|
||||||
|
while ($run)
|
||||||
|
{
|
||||||
|
let $io_result= query_get_value("SHOW SLAVE STATUS", Slave_IO_Running, $row_number);
|
||||||
|
if (`SELECT '$io_result' = 'Yes'`){
|
||||||
|
|
||||||
|
let $sql_result= query_get_value("SHOW SLAVE STATUS", Slave_SQL_Running, $row_number);
|
||||||
|
if (`SELECT '$sql_result' = 'Yes'`){
|
||||||
|
let $run= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sleep 0.1;
|
||||||
|
if (!$counter){
|
||||||
|
--echo "Failed while waiting for slave to start"
|
||||||
|
SHOW SLAVE STATUS;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
dec $counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
37
mysql-test/include/wait_for_slave_to_stop.inc
Normal file
37
mysql-test/include/wait_for_slave_to_stop.inc
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
###################################################
|
||||||
|
#Author: Jeb
|
||||||
|
#Date: 2007-06-11
|
||||||
|
#Purpose: To replace the mysqltest.c executable
|
||||||
|
# wait_for_slave_to_stop function and
|
||||||
|
# return this to the test language.
|
||||||
|
#Details:
|
||||||
|
# 1) Fill in and setup variables
|
||||||
|
# 2) loop through looking for both
|
||||||
|
# io and sql threads to stop
|
||||||
|
# 3) If loops too long die.
|
||||||
|
####################################################
|
||||||
|
connection slave;
|
||||||
|
let $row_number= 1;
|
||||||
|
let $run= 1;
|
||||||
|
let $counter= 300;
|
||||||
|
|
||||||
|
while ($run)
|
||||||
|
{
|
||||||
|
let $io_result= query_get_value("SHOW SLAVE STATUS", Slave_IO_Running, $row_number);
|
||||||
|
if (`SELECT '$io_result' = 'No'`){
|
||||||
|
|
||||||
|
let $sql_result= query_get_value("SHOW SLAVE STATUS", Slave_SQL_Running, $row_number);
|
||||||
|
if (`SELECT '$sql_result' = 'No'`){
|
||||||
|
let $run= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sleep 0.1;
|
||||||
|
if (!$counter){
|
||||||
|
--echo "Failed while waiting for slave to stop"
|
||||||
|
SHOW SLAVE STATUS;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
dec $counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -596,6 +596,25 @@ sub collect_one_test_case($$$$$$$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $tinfo->{'need_binlog'} )
|
||||||
|
{
|
||||||
|
if (grep(/^--skip-log-bin/, @::opt_extra_mysqld_opt) )
|
||||||
|
{
|
||||||
|
$tinfo->{'skip'}= 1;
|
||||||
|
$tinfo->{'comment'}= "Test need binlog";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( $::mysql_version_id >= 50100 )
|
||||||
|
{
|
||||||
|
# Test does not need binlog, add --skip-binlog to
|
||||||
|
# the options used when starting it
|
||||||
|
push(@{$tinfo->{'master_opt'}}, "--skip-log-bin");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -608,6 +627,7 @@ our @tags=
|
|||||||
["include/have_binlog_format_row.inc", "binlog_format", "row"],
|
["include/have_binlog_format_row.inc", "binlog_format", "row"],
|
||||||
["include/have_binlog_format_statement.inc", "binlog_format", "stmt"],
|
["include/have_binlog_format_statement.inc", "binlog_format", "stmt"],
|
||||||
["include/have_binlog_format_mixed.inc", "binlog_format", "mixed"],
|
["include/have_binlog_format_mixed.inc", "binlog_format", "mixed"],
|
||||||
|
["include/have_log_bin.inc", "need_binlog", 1],
|
||||||
["include/big_test.inc", "big_test", 1],
|
["include/big_test.inc", "big_test", 1],
|
||||||
["include/have_debug.inc", "need_debug", 1],
|
["include/have_debug.inc", "need_debug", 1],
|
||||||
["include/have_ndb.inc", "ndb_test", 1],
|
["include/have_ndb.inc", "ndb_test", 1],
|
||||||
|
@ -142,6 +142,7 @@ sub spawn_impl ($$$$$$$) {
|
|||||||
|
|
||||||
if ( $pid )
|
if ( $pid )
|
||||||
{
|
{
|
||||||
|
select(STDOUT) if $::glob_win32_perl;
|
||||||
return spawn_parent_impl($pid,$mode,$path);
|
return spawn_parent_impl($pid,$mode,$path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -163,9 +164,6 @@ sub spawn_impl ($$$$$$$) {
|
|||||||
{
|
{
|
||||||
# Don't redirect stdout on ActiveState perl since this is
|
# Don't redirect stdout on ActiveState perl since this is
|
||||||
# just another thread in the same process.
|
# just another thread in the same process.
|
||||||
# Should be fixed so that the thread that is created with fork
|
|
||||||
# executes the exe in another process and wait's for it to return.
|
|
||||||
# In the meanwhile, we get all the output from mysqld's to screen
|
|
||||||
}
|
}
|
||||||
elsif ( ! open(STDOUT,$log_file_open_mode,$output) )
|
elsif ( ! open(STDOUT,$log_file_open_mode,$output) )
|
||||||
{
|
{
|
||||||
@ -175,7 +173,7 @@ sub spawn_impl ($$$$$$$) {
|
|||||||
|
|
||||||
if ( $error )
|
if ( $error )
|
||||||
{
|
{
|
||||||
if ( $output eq $error )
|
if ( !$::glob_win32_perl and $output eq $error )
|
||||||
{
|
{
|
||||||
if ( ! open(STDERR,">&STDOUT") )
|
if ( ! open(STDERR,">&STDOUT") )
|
||||||
{
|
{
|
||||||
@ -184,15 +182,7 @@ sub spawn_impl ($$$$$$$) {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( $::glob_win32_perl )
|
if ( ! open(STDERR,$log_file_open_mode,$error) )
|
||||||
{
|
|
||||||
# Don't redirect stdout on ActiveState perl since this is
|
|
||||||
# just another thread in the same process.
|
|
||||||
# Should be fixed so that the thread that is created with fork
|
|
||||||
# executes the exe in another process and wait's for it to return.
|
|
||||||
# In the meanwhile, we get all the output from mysqld's to screen
|
|
||||||
}
|
|
||||||
elsif ( ! open(STDERR,$log_file_open_mode,$error) )
|
|
||||||
{
|
{
|
||||||
mtr_child_error("can't redirect STDERR to \"$error\": $!");
|
mtr_child_error("can't redirect STDERR to \"$error\": $!");
|
||||||
}
|
}
|
||||||
@ -547,72 +537,92 @@ sub mtr_kill_leftovers () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Check that all processes in list are killed
|
|
||||||
# The argument is a list of 'ports', 'pids', 'pidfiles' and 'socketfiles'
|
|
||||||
# for which shutdown has been started. Make sure they all get killed
|
|
||||||
# in one way or the other.
|
|
||||||
#
|
#
|
||||||
# FIXME On Cygwin, and maybe some other platforms, $srv->{'pid'} and
|
# Check that all processes in "spec" are shutdown gracefully
|
||||||
# the pid in $srv->{'pidfile'} will not be the same PID. We need to try to kill
|
# else kill them off hard
|
||||||
# both I think.
|
#
|
||||||
|
|
||||||
sub mtr_check_stop_servers ($) {
|
sub mtr_check_stop_servers ($) {
|
||||||
my $spec= shift;
|
my $spec= shift;
|
||||||
|
|
||||||
# Return if no processes are defined
|
# Return if no processes are defined
|
||||||
return if ! @$spec;
|
return if ! @$spec;
|
||||||
|
|
||||||
#mtr_report("mtr_check_stop_servers");
|
mtr_verbose("mtr_check_stop_servers");
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# Wait until servers in "spec" has stopped listening
|
||||||
|
# to their ports or timeout occurs
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
mtr_ping_with_timeout(\@$spec);
|
mtr_ping_with_timeout(\@$spec);
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# We loop with waitpid() nonblocking to see how many of the ones we
|
# Use waitpid() nonblocking for a little while, to see how
|
||||||
# are to kill, actually got killed by mysqladmin or ndb_mgm
|
# many process's will exit sucessfully.
|
||||||
#
|
# This is the normal case.
|
||||||
# Note that we don't rely on this, the mysqld server might have stopped
|
|
||||||
# listening to the port, but still be alive. But it is a start.
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
my $wait_counter= 50; # Max number of times to redo the loop
|
||||||
foreach my $srv ( @$spec )
|
foreach my $srv ( @$spec )
|
||||||
{
|
{
|
||||||
|
my $pid= $srv->{'pid'};
|
||||||
my $ret_pid;
|
my $ret_pid;
|
||||||
if ( $srv->{'pid'} )
|
if ( $pid )
|
||||||
{
|
{
|
||||||
$ret_pid= waitpid($srv->{'pid'},&WNOHANG);
|
$ret_pid= waitpid($pid,&WNOHANG);
|
||||||
if ($ret_pid == $srv->{'pid'})
|
if ($ret_pid == $pid)
|
||||||
{
|
{
|
||||||
mtr_verbose("Caught exit of process $ret_pid");
|
mtr_verbose("Caught exit of process $ret_pid");
|
||||||
$srv->{'pid'}= 0;
|
$srv->{'pid'}= 0;
|
||||||
}
|
}
|
||||||
|
elsif ($ret_pid == 0)
|
||||||
|
{
|
||||||
|
mtr_verbose("Process $pid is still alive");
|
||||||
|
if ($wait_counter-- > 0)
|
||||||
|
{
|
||||||
|
# Give the processes more time to exit
|
||||||
|
select(undef, undef, undef, (0.1));
|
||||||
|
redo;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
# mtr_warning("caught exit of unknown child $ret_pid");
|
mtr_warning("caught exit of unknown child $ret_pid");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# We know the process was started from this file, so there is a PID
|
# The processes that haven't yet exited need to
|
||||||
# saved, or else we have nothing to do.
|
# be killed hard, put them in "kill_pids" hash
|
||||||
# Might be that is is recorded to be missing, but we failed to
|
|
||||||
# take away the PID file earlier, then we do it now.
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
my %kill_pids;
|
||||||
my %mysqld_pids;
|
|
||||||
|
|
||||||
foreach my $srv ( @$spec )
|
foreach my $srv ( @$spec )
|
||||||
{
|
{
|
||||||
if ( $srv->{'pid'} )
|
my $pid= $srv->{'pid'};
|
||||||
|
if ( $pid )
|
||||||
{
|
{
|
||||||
$mysqld_pids{$srv->{'pid'}}= 1;
|
# Server is still alive, put it in list to be hard killed
|
||||||
|
if ($::glob_win32_perl)
|
||||||
|
{
|
||||||
|
# Kill the real process if it's known
|
||||||
|
$pid= $srv->{'real_pid'} if ($srv->{'real_pid'});
|
||||||
|
}
|
||||||
|
$kill_pids{$pid}= 1;
|
||||||
|
|
||||||
|
# Write a message to the process's error log (if it has one)
|
||||||
|
# that it's being killed hard.
|
||||||
|
if ( defined $srv->{'errfile'} )
|
||||||
|
{
|
||||||
|
mtr_tofile($srv->{'errfile'}, "Note: Forcing kill of process $pid\n");
|
||||||
|
}
|
||||||
|
mtr_warning("Forcing kill of process $pid");
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
# Server is dead, we remove the pidfile if any
|
# Server is dead, remove the pidfile if it exists
|
||||||
# Race, could have been removed between I tested with -f
|
#
|
||||||
# and the unlink() below, so I better check again with -f
|
# Race, could have been removed between test with -f
|
||||||
|
# and the unlink() below, so better check again with -f
|
||||||
if ( -f $srv->{'pidfile'} and ! unlink($srv->{'pidfile'}) and
|
if ( -f $srv->{'pidfile'} and ! unlink($srv->{'pidfile'}) and
|
||||||
-f $srv->{'pidfile'} )
|
-f $srv->{'pidfile'} )
|
||||||
{
|
{
|
||||||
@ -621,69 +631,45 @@ sub mtr_check_stop_servers ($) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
if ( ! keys %kill_pids )
|
||||||
# If all the processes in list already have been killed,
|
|
||||||
# then we don't have to do anything.
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
|
|
||||||
if ( ! keys %mysqld_pids )
|
|
||||||
{
|
{
|
||||||
|
# All processes has exited gracefully
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
mtr_kill_processes(\%kill_pids);
|
||||||
# In mtr_mysqladmin_shutdown() we only waited for the mysqld servers
|
|
||||||
# not to listen to the port. But we are not sure we got them all
|
|
||||||
# killed. If we suspect it lives, try nice kill with SIG_TERM. Note
|
|
||||||
# that for true Win32 processes, kill(0,$pid) will not return 1.
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
|
|
||||||
start_reap_all(); # Avoid zombies
|
|
||||||
|
|
||||||
my @mysqld_pids= keys %mysqld_pids;
|
|
||||||
mtr_kill_processes(\@mysqld_pids);
|
|
||||||
|
|
||||||
stop_reap_all(); # Get into control again
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# Now, we check if all we can find using kill(0,$pid) are dead,
|
# All processes are killed, cleanup leftover files
|
||||||
# and just assume the rest are. We cleanup socket and PID files.
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
{
|
{
|
||||||
my $errors= 0;
|
my $errors= 0;
|
||||||
foreach my $srv ( @$spec )
|
foreach my $srv ( @$spec )
|
||||||
{
|
{
|
||||||
if ( $srv->{'pid'} )
|
if ( $srv->{'pid'} )
|
||||||
{
|
{
|
||||||
if ( kill(0,$srv->{'pid'}) )
|
# Server has been hard killed, clean it's resources
|
||||||
|
foreach my $file ($srv->{'pidfile'}, $srv->{'sockfile'})
|
||||||
{
|
{
|
||||||
# FIXME In Cygwin there seem to be some fast reuse
|
# Know it is dead so should be no race, careful anyway
|
||||||
# of PIDs, so dying may not be the right thing to do.
|
if ( defined $file and -f $file and ! unlink($file) and -f $file )
|
||||||
$errors++;
|
|
||||||
mtr_warning("can't kill process $srv->{'pid'}");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
# We managed to kill it at last
|
|
||||||
# FIXME In Cygwin, we will get here even if the process lives.
|
|
||||||
|
|
||||||
# Not needed as we know the process is dead, but to be safe
|
|
||||||
# we unlink and check success in two steps. We first unlink
|
|
||||||
# without checking the error code, and then check if the
|
|
||||||
# file still exists.
|
|
||||||
|
|
||||||
foreach my $file ($srv->{'pidfile'}, $srv->{'sockfile'})
|
|
||||||
{
|
{
|
||||||
# Know it is dead so should be no race, careful anyway
|
$errors++;
|
||||||
if ( defined $file and -f $file and ! unlink($file) and -f $file )
|
mtr_warning("couldn't delete $file");
|
||||||
{
|
}
|
||||||
$errors++;
|
}
|
||||||
mtr_warning("couldn't delete $file");
|
|
||||||
}
|
if ($::glob_win32_perl and $srv->{'real_pid'})
|
||||||
}
|
{
|
||||||
$srv->{'pid'}= 0;
|
# Wait for the pseudo pid - if the real_pid was known
|
||||||
}
|
# the pseudo pid has not been waited for yet, wai blocking
|
||||||
|
# since it's "such a simple program"
|
||||||
|
mtr_verbose("Wait for pseudo process $srv->{'pid'}");
|
||||||
|
my $ret_pid= waitpid($srv->{'pid'}, 0);
|
||||||
|
mtr_verbose("Pseudo process $ret_pid died");
|
||||||
|
}
|
||||||
|
|
||||||
|
$srv->{'pid'}= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( $errors )
|
if ( $errors )
|
||||||
@ -701,12 +687,9 @@ sub mtr_check_stop_servers ($) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# FIXME We just assume they are all dead, for Cygwin we are not
|
|
||||||
# really sure
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Wait for all the process in the list to terminate
|
# Wait for all the process in the list to terminate
|
||||||
sub mtr_wait_blocking($) {
|
sub mtr_wait_blocking($) {
|
||||||
my $admin_pids= shift;
|
my $admin_pids= shift;
|
||||||
@ -1063,7 +1046,7 @@ sub sleep_until_file_created ($$$) {
|
|||||||
{
|
{
|
||||||
if ( -r $pidfile )
|
if ( -r $pidfile )
|
||||||
{
|
{
|
||||||
return $pid;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check if it died after the fork() was successful
|
# Check if it died after the fork() was successful
|
||||||
@ -1095,9 +1078,9 @@ sub sleep_until_file_created ($$$) {
|
|||||||
sub mtr_kill_processes ($) {
|
sub mtr_kill_processes ($) {
|
||||||
my $pids = shift;
|
my $pids = shift;
|
||||||
|
|
||||||
mtr_verbose("mtr_kill_processes " . join(" ", @$pids));
|
mtr_verbose("mtr_kill_processes (" . join(" ", keys %{$pids}) . ")");
|
||||||
|
|
||||||
foreach my $pid (@$pids)
|
foreach my $pid (keys %{$pids})
|
||||||
{
|
{
|
||||||
|
|
||||||
if ($pid <= 0)
|
if ($pid <= 0)
|
||||||
@ -1106,11 +1089,26 @@ sub mtr_kill_processes ($) {
|
|||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $sig (15, 9)
|
my $signaled_procs= kill(9, $pid);
|
||||||
|
if ($signaled_procs == 0)
|
||||||
{
|
{
|
||||||
last if mtr_im_kill_process([ $pid ], $sig, 10, 1);
|
# No such process existed, assume it's killed
|
||||||
|
mtr_verbose("killed $pid(no such process)");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $ret_pid= waitpid($pid,0);
|
||||||
|
if ($ret_pid == $pid)
|
||||||
|
{
|
||||||
|
mtr_verbose("killed $pid(got the pid)");
|
||||||
|
}
|
||||||
|
elsif ($ret_pid == -1)
|
||||||
|
{
|
||||||
|
mtr_verbose("killed $pid(got -1)");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mtr_verbose("done killing processes");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -272,6 +272,7 @@ sub mtr_report_stats ($) {
|
|||||||
{
|
{
|
||||||
foreach my $errlog ( sort glob("$::opt_vardir/log/*.err") )
|
foreach my $errlog ( sort glob("$::opt_vardir/log/*.err") )
|
||||||
{
|
{
|
||||||
|
my $testname= "";
|
||||||
unless ( open(ERR, $errlog) )
|
unless ( open(ERR, $errlog) )
|
||||||
{
|
{
|
||||||
mtr_warning("can't read $errlog");
|
mtr_warning("can't read $errlog");
|
||||||
@ -287,10 +288,14 @@ sub mtr_report_stats ($) {
|
|||||||
{
|
{
|
||||||
next; # Skip these lines
|
next; # Skip these lines
|
||||||
}
|
}
|
||||||
|
if ( /CURRENT_TEST: (.*)/ )
|
||||||
|
{
|
||||||
|
$testname= $1;
|
||||||
|
}
|
||||||
if ( /$pattern/ )
|
if ( /$pattern/ )
|
||||||
{
|
{
|
||||||
$found_problems= 1;
|
$found_problems= 1;
|
||||||
print WARN $_;
|
print WARN basename($errlog) . ": $testname: $_";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,9 +97,14 @@ sub mtr_timer_start($$$) {
|
|||||||
# clearing the signal handler.
|
# clearing the signal handler.
|
||||||
$SIG{INT}= 'DEFAULT';
|
$SIG{INT}= 'DEFAULT';
|
||||||
|
|
||||||
|
$SIG{TERM}= sub {
|
||||||
|
mtr_verbose("timer woke up, exiting!");
|
||||||
|
exit(0);
|
||||||
|
};
|
||||||
|
|
||||||
$0= "mtr_timer(timers,$name,$duration)";
|
$0= "mtr_timer(timers,$name,$duration)";
|
||||||
mtr_verbose("timer child $name, sleep $duration");
|
|
||||||
sleep($duration);
|
sleep($duration);
|
||||||
|
mtr_verbose("timer expired after $duration seconds");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -118,7 +123,7 @@ sub mtr_timer_stop ($$) {
|
|||||||
|
|
||||||
# FIXME as Cygwin reuses pids fast, maybe check that is
|
# FIXME as Cygwin reuses pids fast, maybe check that is
|
||||||
# the expected process somehow?!
|
# the expected process somehow?!
|
||||||
kill(9, $tpid);
|
kill(15, $tpid);
|
||||||
|
|
||||||
# As the timers are so simple programs, we trust them to terminate,
|
# As the timers are so simple programs, we trust them to terminate,
|
||||||
# and use blocking wait for it. We wait just to avoid a zombie.
|
# and use blocking wait for it. We wait just to avoid a zombie.
|
||||||
|
@ -903,6 +903,9 @@ sub command_line_setup () {
|
|||||||
$opt_skip_ndbcluster= 1; # Turn off use of NDB cluster
|
$opt_skip_ndbcluster= 1; # Turn off use of NDB cluster
|
||||||
$opt_skip_ssl= 1; # Turn off use of SSL
|
$opt_skip_ssl= 1; # Turn off use of SSL
|
||||||
|
|
||||||
|
# Turn off use of bin log
|
||||||
|
push(@opt_extra_mysqld_opt, "--skip-log-bin");
|
||||||
|
|
||||||
if ( $opt_extern )
|
if ( $opt_extern )
|
||||||
{
|
{
|
||||||
mtr_error("Can't use --extern with --embedded-server");
|
mtr_error("Can't use --extern with --embedded-server");
|
||||||
@ -1784,6 +1787,17 @@ sub environment_setup () {
|
|||||||
split(':', $ENV{'DYLD_LIBRARY_PATH'}) : ());
|
split(':', $ENV{'DYLD_LIBRARY_PATH'}) : ());
|
||||||
mtr_debug("DYLD_LIBRARY_PATH: $ENV{'DYLD_LIBRARY_PATH'}");
|
mtr_debug("DYLD_LIBRARY_PATH: $ENV{'DYLD_LIBRARY_PATH'}");
|
||||||
|
|
||||||
|
# The environment variable used for shared libs on AIX
|
||||||
|
$ENV{'SHLIB_PATH'}= join(":", @ld_library_paths,
|
||||||
|
$ENV{'SHLIB_PATH'} ?
|
||||||
|
split(':', $ENV{'SHLIB_PATH'}) : ());
|
||||||
|
mtr_debug("SHLIB_PATH: $ENV{'SHLIB_PATH'}");
|
||||||
|
|
||||||
|
# The environment variable used for shared libs on hp-ux
|
||||||
|
$ENV{'LIBPATH'}= join(":", @ld_library_paths,
|
||||||
|
$ENV{'LIBPATH'} ?
|
||||||
|
split(':', $ENV{'LIBPATH'}) : ());
|
||||||
|
mtr_debug("LIBPATH: $ENV{'LIBPATH'}");
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Also command lines in .opt files may contain env vars
|
# Also command lines in .opt files may contain env vars
|
||||||
@ -1792,6 +1806,18 @@ sub environment_setup () {
|
|||||||
$ENV{'CHARSETSDIR'}= $path_charsetsdir;
|
$ENV{'CHARSETSDIR'}= $path_charsetsdir;
|
||||||
$ENV{'UMASK'}= "0660"; # The octal *string*
|
$ENV{'UMASK'}= "0660"; # The octal *string*
|
||||||
$ENV{'UMASK_DIR'}= "0770"; # The octal *string*
|
$ENV{'UMASK_DIR'}= "0770"; # The octal *string*
|
||||||
|
|
||||||
|
#
|
||||||
|
# MySQL tests can produce output in various character sets
|
||||||
|
# (especially, ctype_xxx.test). To avoid confusing Perl
|
||||||
|
# with output which is incompatible with the current locale
|
||||||
|
# settings, we reset the current values of LC_ALL and LC_CTYPE to "C".
|
||||||
|
# For details, please see
|
||||||
|
# Bug#27636 tests fails if LC_* variables set to *_*.UTF-8
|
||||||
|
#
|
||||||
|
$ENV{'LC_ALL'}= "C";
|
||||||
|
$ENV{'LC_CTYPE'}= "C";
|
||||||
|
|
||||||
$ENV{'LC_COLLATE'}= "C";
|
$ENV{'LC_COLLATE'}= "C";
|
||||||
$ENV{'USE_RUNNING_SERVER'}= $opt_extern;
|
$ENV{'USE_RUNNING_SERVER'}= $opt_extern;
|
||||||
$ENV{'MYSQL_TEST_DIR'}= $glob_mysql_test_dir;
|
$ENV{'MYSQL_TEST_DIR'}= $glob_mysql_test_dir;
|
||||||
@ -2307,16 +2333,23 @@ sub check_running_as_root () {
|
|||||||
close FILE;
|
close FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
chmod(oct("0755"), $test_file);
|
# Some filesystems( for example CIFS) allows reading a file
|
||||||
unlink($test_file);
|
# although mode was set to 0000, but in that case a stat on
|
||||||
|
# the file will not return 0000
|
||||||
|
my $file_mode= (stat($test_file))[2] & 07777;
|
||||||
|
|
||||||
$ENV{'MYSQL_TEST_ROOT'}= "NO";
|
$ENV{'MYSQL_TEST_ROOT'}= "NO";
|
||||||
if ($result eq "MySQL")
|
mtr_verbose("result: $result, file_mode: $file_mode");
|
||||||
|
if ($result eq "MySQL" && $file_mode == 0)
|
||||||
{
|
{
|
||||||
mtr_warning("running this script as _root_ will cause some " .
|
mtr_warning("running this script as _root_ will cause some " .
|
||||||
"tests to be skipped");
|
"tests to be skipped");
|
||||||
$ENV{'MYSQL_TEST_ROOT'}= "YES";
|
$ENV{'MYSQL_TEST_ROOT'}= "YES";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chmod(oct("0755"), $test_file);
|
||||||
|
unlink($test_file);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2546,10 +2579,19 @@ sub ndbcluster_wait_started($$){
|
|||||||
sub mysqld_wait_started($){
|
sub mysqld_wait_started($){
|
||||||
my $mysqld= shift;
|
my $mysqld= shift;
|
||||||
|
|
||||||
my $res= sleep_until_file_created($mysqld->{'path_pid'},
|
if (sleep_until_file_created($mysqld->{'path_pid'},
|
||||||
$mysqld->{'start_timeout'},
|
$mysqld->{'start_timeout'},
|
||||||
$mysqld->{'pid'});
|
$mysqld->{'pid'}) == 0)
|
||||||
return $res == 0;
|
{
|
||||||
|
# Failed to wait for pid file
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get the "real pid" of the process, it will be used for killing
|
||||||
|
# the process in ActiveState's perl on windows
|
||||||
|
$mysqld->{'real_pid'}= mtr_get_pid_from_file($mysqld->{'path_pid'});
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3285,9 +3327,12 @@ sub find_testcase_skipped_reason($)
|
|||||||
{
|
{
|
||||||
my ($tinfo)= @_;
|
my ($tinfo)= @_;
|
||||||
|
|
||||||
# Open mysqltest-time
|
# Set default message
|
||||||
my $F= IO::File->new($path_timefile) or
|
$tinfo->{'comment'}= "Detected by testcase(no log file)";
|
||||||
mtr_error("can't open file \"$path_timefile\": $!");
|
|
||||||
|
# Open mysqltest-time(the mysqltest log file)
|
||||||
|
my $F= IO::File->new($path_timefile)
|
||||||
|
or return;
|
||||||
my $reason;
|
my $reason;
|
||||||
|
|
||||||
while ( my $line= <$F> )
|
while ( my $line= <$F> )
|
||||||
@ -3340,8 +3385,8 @@ sub analyze_testcase_failure($)
|
|||||||
my ($tinfo)= @_;
|
my ($tinfo)= @_;
|
||||||
|
|
||||||
# Open mysqltest.log
|
# Open mysqltest.log
|
||||||
my $F= IO::File->new($path_timefile) or
|
my $F= IO::File->new($path_timefile)
|
||||||
mtr_error("can't open file \"$path_timefile\": $!");
|
or return;
|
||||||
|
|
||||||
while ( my $line= <$F> )
|
while ( my $line= <$F> )
|
||||||
{
|
{
|
||||||
@ -3600,6 +3645,9 @@ sub do_before_start_master ($) {
|
|||||||
|
|
||||||
# FIXME what about second master.....
|
# FIXME what about second master.....
|
||||||
|
|
||||||
|
# Don't delete anything if starting dirty
|
||||||
|
return if ($opt_start_dirty);
|
||||||
|
|
||||||
foreach my $bin ( glob("$opt_vardir/log/master*-bin*") )
|
foreach my $bin ( glob("$opt_vardir/log/master*-bin*") )
|
||||||
{
|
{
|
||||||
unlink($bin);
|
unlink($bin);
|
||||||
@ -3631,6 +3679,9 @@ sub do_before_start_slave ($) {
|
|||||||
my $tname= $tinfo->{'name'};
|
my $tname= $tinfo->{'name'};
|
||||||
my $init_script= $tinfo->{'master_sh'};
|
my $init_script= $tinfo->{'master_sh'};
|
||||||
|
|
||||||
|
# Don't delete anything if starting dirty
|
||||||
|
return if ($opt_start_dirty);
|
||||||
|
|
||||||
foreach my $bin ( glob("$opt_vardir/log/slave*-bin*") )
|
foreach my $bin ( glob("$opt_vardir/log/slave*-bin*") )
|
||||||
{
|
{
|
||||||
unlink($bin);
|
unlink($bin);
|
||||||
@ -3678,7 +3729,6 @@ sub mysqld_arguments ($$$$) {
|
|||||||
|
|
||||||
mtr_add_arg($args, "%s--no-defaults", $prefix);
|
mtr_add_arg($args, "%s--no-defaults", $prefix);
|
||||||
|
|
||||||
mtr_add_arg($args, "%s--console", $prefix);
|
|
||||||
mtr_add_arg($args, "%s--basedir=%s", $prefix, $path_my_basedir);
|
mtr_add_arg($args, "%s--basedir=%s", $prefix, $path_my_basedir);
|
||||||
mtr_add_arg($args, "%s--character-sets-dir=%s", $prefix, $path_charsetsdir);
|
mtr_add_arg($args, "%s--character-sets-dir=%s", $prefix, $path_charsetsdir);
|
||||||
|
|
||||||
@ -3740,8 +3790,7 @@ sub mysqld_arguments ($$$$) {
|
|||||||
"%s--log-slow-queries=%s-slow.log", $prefix, $log_base_path);
|
"%s--log-slow-queries=%s-slow.log", $prefix, $log_base_path);
|
||||||
|
|
||||||
# Check if "extra_opt" contains --skip-log-bin
|
# Check if "extra_opt" contains --skip-log-bin
|
||||||
my $skip_binlog= grep(/^--skip-log-bin/, @$extra_opt);
|
my $skip_binlog= grep(/^--skip-log-bin/, @$extra_opt, @opt_extra_mysqld_opt);
|
||||||
|
|
||||||
if ( $mysqld->{'type'} eq 'master' )
|
if ( $mysqld->{'type'} eq 'master' )
|
||||||
{
|
{
|
||||||
if (! ($opt_skip_master_binlog || $skip_binlog) )
|
if (! ($opt_skip_master_binlog || $skip_binlog) )
|
||||||
@ -4052,9 +4101,11 @@ sub stop_all_servers () {
|
|||||||
|
|
||||||
push(@kill_pids,{
|
push(@kill_pids,{
|
||||||
pid => $mysqld->{'pid'},
|
pid => $mysqld->{'pid'},
|
||||||
|
real_pid => $mysqld->{'real_pid'},
|
||||||
pidfile => $mysqld->{'path_pid'},
|
pidfile => $mysqld->{'path_pid'},
|
||||||
sockfile => $mysqld->{'path_sock'},
|
sockfile => $mysqld->{'path_sock'},
|
||||||
port => $mysqld->{'port'},
|
port => $mysqld->{'port'},
|
||||||
|
errfile => $mysqld->{'path_myerr'},
|
||||||
});
|
});
|
||||||
|
|
||||||
$mysqld->{'pid'}= 0; # Assume we are done with it
|
$mysqld->{'pid'}= 0; # Assume we are done with it
|
||||||
@ -4258,9 +4309,11 @@ sub run_testcase_stop_servers($$$) {
|
|||||||
|
|
||||||
push(@kill_pids,{
|
push(@kill_pids,{
|
||||||
pid => $mysqld->{'pid'},
|
pid => $mysqld->{'pid'},
|
||||||
|
real_pid => $mysqld->{'real_pid'},
|
||||||
pidfile => $mysqld->{'path_pid'},
|
pidfile => $mysqld->{'path_pid'},
|
||||||
sockfile => $mysqld->{'path_sock'},
|
sockfile => $mysqld->{'path_sock'},
|
||||||
port => $mysqld->{'port'},
|
port => $mysqld->{'port'},
|
||||||
|
errfile => $mysqld->{'path_myerr'},
|
||||||
});
|
});
|
||||||
|
|
||||||
$mysqld->{'pid'}= 0; # Assume we are done with it
|
$mysqld->{'pid'}= 0; # Assume we are done with it
|
||||||
@ -4308,9 +4361,11 @@ sub run_testcase_stop_servers($$$) {
|
|||||||
|
|
||||||
push(@kill_pids,{
|
push(@kill_pids,{
|
||||||
pid => $mysqld->{'pid'},
|
pid => $mysqld->{'pid'},
|
||||||
|
real_pid => $mysqld->{'real_pid'},
|
||||||
pidfile => $mysqld->{'path_pid'},
|
pidfile => $mysqld->{'path_pid'},
|
||||||
sockfile => $mysqld->{'path_sock'},
|
sockfile => $mysqld->{'path_sock'},
|
||||||
port => $mysqld->{'port'},
|
port => $mysqld->{'port'},
|
||||||
|
errfile => $mysqld->{'path_myerr'},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
@ -4731,12 +4786,10 @@ sub run_mysqltest ($) {
|
|||||||
mtr_add_arg($args, "%s", $_) for @args_saved;
|
mtr_add_arg($args, "%s", $_) for @args_saved;
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_add_arg($args, "--test-file");
|
mtr_add_arg($args, "--test-file=%s", $tinfo->{'path'});
|
||||||
mtr_add_arg($args, $tinfo->{'path'});
|
|
||||||
|
|
||||||
if ( defined $tinfo->{'result_file'} ) {
|
if ( defined $tinfo->{'result_file'} ) {
|
||||||
mtr_add_arg($args, "--result-file");
|
mtr_add_arg($args, "--result-file=%s", $tinfo->{'result_file'});
|
||||||
mtr_add_arg($args, $tinfo->{'result_file'});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $opt_record )
|
if ( $opt_record )
|
||||||
|
@ -884,3 +884,22 @@ id
|
|||||||
50
|
50
|
||||||
51
|
51
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set @orig_sql_mode = @@sql_mode;
|
||||||
|
set sql_mode="no_zero_date";
|
||||||
|
create table t1(f1 int);
|
||||||
|
alter table t1 add column f2 datetime not null, add column f21 date not null;
|
||||||
|
insert into t1 values(1,'2000-01-01','2000-01-01');
|
||||||
|
alter table t1 add column f3 datetime not null;
|
||||||
|
ERROR 22007: Incorrect datetime value: '0000-00-00 00:00:00' for column 'f3' at row 1
|
||||||
|
alter table t1 add column f3 date not null;
|
||||||
|
ERROR 22007: Incorrect date value: '0000-00-00' for column 'f3' at row 1
|
||||||
|
alter table t1 add column f4 datetime not null default '2002-02-02',
|
||||||
|
add column f41 date not null;
|
||||||
|
ERROR 22007: Incorrect date value: '0000-00-00' for column 'f41' at row 1
|
||||||
|
alter table t1 add column f4 datetime not null default '2002-02-02',
|
||||||
|
add column f41 date not null default '2002-02-02';
|
||||||
|
select * from t1;
|
||||||
|
f1 f2 f21 f4 f41
|
||||||
|
1 2000-01-01 00:00:00 2000-01-01 2002-02-02 00:00:00 2002-02-02
|
||||||
|
drop table t1;
|
||||||
|
set sql_mode= @orig_sql_mode;
|
||||||
|
@ -39,10 +39,10 @@ t2 CREATE TABLE `t2` (
|
|||||||
`Field_name` varbinary(255) NOT NULL default '',
|
`Field_name` varbinary(255) NOT NULL default '',
|
||||||
`Min_value` varbinary(255) default NULL,
|
`Min_value` varbinary(255) default NULL,
|
||||||
`Max_value` varbinary(255) default NULL,
|
`Max_value` varbinary(255) default NULL,
|
||||||
`Min_length` int(11) NOT NULL default '0',
|
`Min_length` bigint(11) NOT NULL default '0',
|
||||||
`Max_length` int(11) NOT NULL default '0',
|
`Max_length` bigint(11) NOT NULL default '0',
|
||||||
`Empties_or_zeros` int(11) NOT NULL default '0',
|
`Empties_or_zeros` bigint(11) NOT NULL default '0',
|
||||||
`Nulls` int(11) NOT NULL default '0',
|
`Nulls` bigint(11) NOT NULL default '0',
|
||||||
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
||||||
`Std` varbinary(255) default NULL,
|
`Std` varbinary(255) default NULL,
|
||||||
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
||||||
@ -58,10 +58,10 @@ t2 CREATE TABLE `t2` (
|
|||||||
`Field_name` varbinary(255) NOT NULL default '',
|
`Field_name` varbinary(255) NOT NULL default '',
|
||||||
`Min_value` varbinary(255) default NULL,
|
`Min_value` varbinary(255) default NULL,
|
||||||
`Max_value` varbinary(255) default NULL,
|
`Max_value` varbinary(255) default NULL,
|
||||||
`Min_length` int(11) NOT NULL default '0',
|
`Min_length` bigint(11) NOT NULL default '0',
|
||||||
`Max_length` int(11) NOT NULL default '0',
|
`Max_length` bigint(11) NOT NULL default '0',
|
||||||
`Empties_or_zeros` int(11) NOT NULL default '0',
|
`Empties_or_zeros` bigint(11) NOT NULL default '0',
|
||||||
`Nulls` int(11) NOT NULL default '0',
|
`Nulls` bigint(11) NOT NULL default '0',
|
||||||
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
||||||
`Std` varbinary(255) default NULL,
|
`Std` varbinary(255) default NULL,
|
||||||
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
||||||
@ -81,10 +81,10 @@ t2 CREATE TABLE `t2` (
|
|||||||
`Field_name` varbinary(255) NOT NULL default '',
|
`Field_name` varbinary(255) NOT NULL default '',
|
||||||
`Min_value` varbinary(255) default NULL,
|
`Min_value` varbinary(255) default NULL,
|
||||||
`Max_value` varbinary(255) default NULL,
|
`Max_value` varbinary(255) default NULL,
|
||||||
`Min_length` int(11) NOT NULL default '0',
|
`Min_length` bigint(11) NOT NULL default '0',
|
||||||
`Max_length` int(11) NOT NULL default '0',
|
`Max_length` bigint(11) NOT NULL default '0',
|
||||||
`Empties_or_zeros` int(11) NOT NULL default '0',
|
`Empties_or_zeros` bigint(11) NOT NULL default '0',
|
||||||
`Nulls` int(11) NOT NULL default '0',
|
`Nulls` bigint(11) NOT NULL default '0',
|
||||||
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
`Avg_value_or_avg_length` varbinary(255) NOT NULL default '',
|
||||||
`Std` varbinary(255) default NULL,
|
`Std` varbinary(255) default NULL,
|
||||||
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
`Optimal_fieldtype` varbinary(64) NOT NULL default ''
|
||||||
|
19
mysql-test/r/archive-big.result
Normal file
19
mysql-test/r/archive-big.result
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE t1(a BLOB) ENGINE=ARCHIVE;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
@ -12364,3 +12364,10 @@ select * from t1;
|
|||||||
i
|
i
|
||||||
1
|
1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(a longblob) engine=archive;
|
||||||
|
insert into t1 set a='';
|
||||||
|
insert into t1 set a='a';
|
||||||
|
check table t1 extended;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
drop table t1;
|
||||||
|
@ -232,7 +232,7 @@ a b
|
|||||||
delete from t1 where a=0;
|
delete from t1 where a=0;
|
||||||
update t1 set a=NULL where b=6;
|
update t1 set a=NULL where b=6;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 4
|
Warning 1048 Column 'a' cannot be null
|
||||||
update t1 set a=300 where b=7;
|
update t1 set a=300 where b=7;
|
||||||
SET SQL_MODE='';
|
SET SQL_MODE='';
|
||||||
insert into t1(a,b)values(NULL,8);
|
insert into t1(a,b)values(NULL,8);
|
||||||
@ -274,7 +274,7 @@ a b
|
|||||||
delete from t1 where a=0;
|
delete from t1 where a=0;
|
||||||
update t1 set a=NULL where b=13;
|
update t1 set a=NULL where b=13;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 9
|
Warning 1048 Column 'a' cannot be null
|
||||||
update t1 set a=500 where b=14;
|
update t1 set a=500 where b=14;
|
||||||
select * from t1 order by b;
|
select * from t1 order by b;
|
||||||
a b
|
a b
|
||||||
|
@ -4,18 +4,16 @@ create table t4(n int);
|
|||||||
backup table t4 to '../bogus';
|
backup table t4 to '../bogus';
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t4 backup error Failed copying .frm file (errno: X)
|
test.t4 backup error Failed copying .frm file (errno: X)
|
||||||
|
test.t4 backup Error Can't create/write to file 'MYSQLTEST_VARDIR/bogus/t4.frm' (Errcode: X)
|
||||||
test.t4 backup status Operation failed
|
test.t4 backup status Operation failed
|
||||||
Warnings:
|
|
||||||
Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/bogus/t4.frm' (Errcode: X)
|
|
||||||
backup table t4 to '../tmp';
|
backup table t4 to '../tmp';
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t4 backup status OK
|
test.t4 backup status OK
|
||||||
backup table t4 to '../tmp';
|
backup table t4 to '../tmp';
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t4 backup error Failed copying .frm file (errno: X)
|
test.t4 backup error Failed copying .frm file (errno: X)
|
||||||
|
test.t4 backup Error Can't create/write to file 'MYSQLTEST_VARDIR/tmp/t4.frm' (Errcode: X)
|
||||||
test.t4 backup status Operation failed
|
test.t4 backup status Operation failed
|
||||||
Warnings:
|
|
||||||
Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/tmp/t4.frm' (Errcode: X)
|
|
||||||
drop table t4;
|
drop table t4;
|
||||||
restore table t4 from '../tmp';
|
restore table t4 from '../tmp';
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
|
@ -362,3 +362,29 @@ cast(-19999999999999999999 as signed)
|
|||||||
-9223372036854775808
|
-9223372036854775808
|
||||||
Warnings:
|
Warnings:
|
||||||
Error 1292 Truncated incorrect DECIMAL value: ''
|
Error 1292 Truncated incorrect DECIMAL value: ''
|
||||||
|
select -9223372036854775808;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def -9223372036854775808 8 20 20 N 32897 0 63
|
||||||
|
-9223372036854775808
|
||||||
|
-9223372036854775808
|
||||||
|
select -(9223372036854775808);
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def -(9223372036854775808) 8 20 20 N 32897 0 63
|
||||||
|
-(9223372036854775808)
|
||||||
|
-9223372036854775808
|
||||||
|
select -((9223372036854775808));
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def -((9223372036854775808)) 8 20 20 N 32897 0 63
|
||||||
|
-((9223372036854775808))
|
||||||
|
-9223372036854775808
|
||||||
|
select -(-(9223372036854775808));
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def -(-(9223372036854775808)) 246 21 19 N 129 0 63
|
||||||
|
-(-(9223372036854775808))
|
||||||
|
9223372036854775808
|
||||||
|
select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
|
||||||
|
--9223372036854775808 ---9223372036854775808 ----9223372036854775808
|
||||||
|
9223372036854775808 -9223372036854775808 9223372036854775808
|
||||||
|
select -(-9223372036854775808), -(-(-9223372036854775808));
|
||||||
|
-(-9223372036854775808) -(-(-9223372036854775808))
|
||||||
|
9223372036854775808 -9223372036854775808
|
||||||
|
@ -160,3 +160,41 @@ hex(col1)
|
|||||||
62000000000000000000
|
62000000000000000000
|
||||||
62200000000000000000
|
62200000000000000000
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a binary(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
|
||||||
|
index idx(a)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 SET a=unhex('1F9480179366F2BF567E1C4B964C1EF029087575');
|
||||||
|
INSERT INTO t1 SET a=unhex('1F9480179366F2BF567E1C4B964C1EF029082020');
|
||||||
|
INSERT INTO t1 SET a=unhex('1F9480179366F2BF567E1C4B964C1EF029080707');
|
||||||
|
SELECT hex(a) FROM t1 order by a;
|
||||||
|
hex(a)
|
||||||
|
1F9480179366F2BF567E1C4B964C1EF029080707
|
||||||
|
1F9480179366F2BF567E1C4B964C1EF029082020
|
||||||
|
1F9480179366F2BF567E1C4B964C1EF029087575
|
||||||
|
EXPLAIN SELECT hex(a) FROM t1 order by a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index NULL idx 20 NULL 3 Using index
|
||||||
|
SELECT hex(a) from t1 WHERE a=unhex('1F9480179366F2BF567E1C4B964C1EF029082020');
|
||||||
|
hex(a)
|
||||||
|
1F9480179366F2BF567E1C4B964C1EF029082020
|
||||||
|
EXPLAIN
|
||||||
|
SELECT hex(a) from t1 WHERE a=unhex('1F9480179366F2BF567E1C4B964C1EF029082020');
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref idx idx 20 const 1 Using where; Using index
|
||||||
|
SELECT hex(a) from t1 WHERE a=unhex('1F9480179366F2BF567E1C4B964C1EF02908');
|
||||||
|
hex(a)
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id numeric(20) NOT NULL,
|
||||||
|
lang varchar(8) NOT NULL,
|
||||||
|
msg varchar(32) NOT NULL,
|
||||||
|
PRIMARY KEY (id,lang)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES (33, 'en', 'zzzzzzz');
|
||||||
|
INSERT INTO t1 VALUES (31, 'en', 'xxxxxxx');
|
||||||
|
INSERT INTO t1 VALUES (32, 'en', 'yyyyyyy');
|
||||||
|
SELECT * FROM t1 WHERE id=32;
|
||||||
|
id lang msg
|
||||||
|
32 en yyyyyyy
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
reset master;
|
reset master;
|
||||||
create table t1 (a int) engine=bdb;
|
create table t1 (a int) engine=innodb;
|
||||||
create table t2 (a int) engine=innodb;
|
create table t2 (a int) engine=innodb;
|
||||||
begin;
|
begin;
|
||||||
insert t1 values (5);
|
insert t1 values (5);
|
||||||
@ -10,14 +10,14 @@ insert t2 values (5);
|
|||||||
commit;
|
commit;
|
||||||
show binlog events from 98;
|
show binlog events from 98;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query 1 # use `test`; create table t1 (a int) engine=bdb
|
master-bin.000001 # Query 1 # use `test`; create table t1 (a int) engine=innodb
|
||||||
master-bin.000001 # Query 1 # use `test`; create table t2 (a int) engine=innodb
|
master-bin.000001 # Query 1 # use `test`; create table t2 (a int) engine=innodb
|
||||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 # Query 1 # use `test`; insert t1 values (5)
|
master-bin.000001 # Query 1 # use `test`; insert t1 values (5)
|
||||||
master-bin.000001 # Query 1 # use `test`; COMMIT
|
master-bin.000001 # Xid 1 # COMMIT /* XID */
|
||||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 # Query 1 # use `test`; insert t2 values (5)
|
master-bin.000001 # Query 1 # use `test`; insert t2 values (5)
|
||||||
master-bin.000001 # Xid 1 # COMMIT /* xid=12 */
|
master-bin.000001 # Xid 1 # COMMIT /* XID */
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
reset master;
|
reset master;
|
||||||
create table t1 (n int) engine=innodb;
|
create table t1 (n int) engine=innodb;
|
||||||
@ -128,8 +128,443 @@ master-bin.000001 # Query 1 # use `test`; insert into t1 values(4 + 4)
|
|||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(3 + 4)
|
master-bin.000001 # Query 1 # use `test`; insert into t1 values(3 + 4)
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(2 + 4)
|
master-bin.000001 # Query 1 # use `test`; insert into t1 values(2 + 4)
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(1 + 4)
|
master-bin.000001 # Query 1 # use `test`; insert into t1 values(1 + 4)
|
||||||
master-bin.000001 # Xid 1 # COMMIT /* xid=19 */
|
master-bin.000001 # Xid 1 # COMMIT /* XID */
|
||||||
master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
|
master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
|
||||||
show binlog events in 'master-bin.000002' from 98;
|
show binlog events in 'master-bin.000002' from 98;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000002 # Query 1 # use `test`; drop table t1
|
master-bin.000002 # Query 1 # use `test`; drop table t1
|
||||||
|
set @ac = @@autocommit;
|
||||||
|
set autocommit= 0;
|
||||||
|
reset master;
|
||||||
|
create table t1(n int) engine=innodb;
|
||||||
|
begin;
|
||||||
|
insert into t1 values (1);
|
||||||
|
insert into t1 values (2);
|
||||||
|
insert into t1 values (3);
|
||||||
|
commit;
|
||||||
|
drop table t1;
|
||||||
|
show binlog events from 0;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 4 Format_desc 1 98 Server version, Binlog ver: 4
|
||||||
|
master-bin.000001 98 Query 1 197 use `test`; create table t1(n int) engine=innodb
|
||||||
|
master-bin.000001 197 Query 1 265 use `test`; BEGIN
|
||||||
|
master-bin.000001 265 Query 1 353 use `test`; insert into t1 values (1)
|
||||||
|
master-bin.000001 353 Query 1 441 use `test`; insert into t1 values (2)
|
||||||
|
master-bin.000001 441 Query 1 529 use `test`; insert into t1 values (3)
|
||||||
|
master-bin.000001 529 Xid 1 556 COMMIT /* XID */
|
||||||
|
master-bin.000001 556 Query 1 632 use `test`; drop table t1
|
||||||
|
set @bcs = @@binlog_cache_size;
|
||||||
|
set global binlog_cache_size=4096;
|
||||||
|
reset master;
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
show binlog events from 0;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 4 Format_desc 1 98 Server version, Binlog ver: 4
|
||||||
|
master-bin.000001 98 Query 1 198 use `test`; create table t1 (a int) engine=innodb
|
||||||
|
master-bin.000001 198 Query 1 266 use `test`; BEGIN
|
||||||
|
master-bin.000001 266 Query 1 357 use `test`; insert into t1 values( 400 )
|
||||||
|
master-bin.000001 357 Query 1 448 use `test`; insert into t1 values( 399 )
|
||||||
|
master-bin.000001 448 Query 1 539 use `test`; insert into t1 values( 398 )
|
||||||
|
master-bin.000001 539 Query 1 630 use `test`; insert into t1 values( 397 )
|
||||||
|
master-bin.000001 630 Query 1 721 use `test`; insert into t1 values( 396 )
|
||||||
|
master-bin.000001 721 Query 1 812 use `test`; insert into t1 values( 395 )
|
||||||
|
master-bin.000001 812 Query 1 903 use `test`; insert into t1 values( 394 )
|
||||||
|
master-bin.000001 903 Query 1 994 use `test`; insert into t1 values( 393 )
|
||||||
|
master-bin.000001 994 Query 1 1085 use `test`; insert into t1 values( 392 )
|
||||||
|
master-bin.000001 1085 Query 1 1176 use `test`; insert into t1 values( 391 )
|
||||||
|
master-bin.000001 1176 Query 1 1267 use `test`; insert into t1 values( 390 )
|
||||||
|
master-bin.000001 1267 Query 1 1358 use `test`; insert into t1 values( 389 )
|
||||||
|
master-bin.000001 1358 Query 1 1449 use `test`; insert into t1 values( 388 )
|
||||||
|
master-bin.000001 1449 Query 1 1540 use `test`; insert into t1 values( 387 )
|
||||||
|
master-bin.000001 1540 Query 1 1631 use `test`; insert into t1 values( 386 )
|
||||||
|
master-bin.000001 1631 Query 1 1722 use `test`; insert into t1 values( 385 )
|
||||||
|
master-bin.000001 1722 Query 1 1813 use `test`; insert into t1 values( 384 )
|
||||||
|
master-bin.000001 1813 Query 1 1904 use `test`; insert into t1 values( 383 )
|
||||||
|
master-bin.000001 1904 Query 1 1995 use `test`; insert into t1 values( 382 )
|
||||||
|
master-bin.000001 1995 Query 1 2086 use `test`; insert into t1 values( 381 )
|
||||||
|
master-bin.000001 2086 Query 1 2177 use `test`; insert into t1 values( 380 )
|
||||||
|
master-bin.000001 2177 Query 1 2268 use `test`; insert into t1 values( 379 )
|
||||||
|
master-bin.000001 2268 Query 1 2359 use `test`; insert into t1 values( 378 )
|
||||||
|
master-bin.000001 2359 Query 1 2450 use `test`; insert into t1 values( 377 )
|
||||||
|
master-bin.000001 2450 Query 1 2541 use `test`; insert into t1 values( 376 )
|
||||||
|
master-bin.000001 2541 Query 1 2632 use `test`; insert into t1 values( 375 )
|
||||||
|
master-bin.000001 2632 Query 1 2723 use `test`; insert into t1 values( 374 )
|
||||||
|
master-bin.000001 2723 Query 1 2814 use `test`; insert into t1 values( 373 )
|
||||||
|
master-bin.000001 2814 Query 1 2905 use `test`; insert into t1 values( 372 )
|
||||||
|
master-bin.000001 2905 Query 1 2996 use `test`; insert into t1 values( 371 )
|
||||||
|
master-bin.000001 2996 Query 1 3087 use `test`; insert into t1 values( 370 )
|
||||||
|
master-bin.000001 3087 Query 1 3178 use `test`; insert into t1 values( 369 )
|
||||||
|
master-bin.000001 3178 Query 1 3269 use `test`; insert into t1 values( 368 )
|
||||||
|
master-bin.000001 3269 Query 1 3360 use `test`; insert into t1 values( 367 )
|
||||||
|
master-bin.000001 3360 Query 1 3451 use `test`; insert into t1 values( 366 )
|
||||||
|
master-bin.000001 3451 Query 1 3542 use `test`; insert into t1 values( 365 )
|
||||||
|
master-bin.000001 3542 Query 1 3633 use `test`; insert into t1 values( 364 )
|
||||||
|
master-bin.000001 3633 Query 1 3724 use `test`; insert into t1 values( 363 )
|
||||||
|
master-bin.000001 3724 Query 1 3815 use `test`; insert into t1 values( 362 )
|
||||||
|
master-bin.000001 3815 Query 1 3906 use `test`; insert into t1 values( 361 )
|
||||||
|
master-bin.000001 3906 Query 1 3997 use `test`; insert into t1 values( 360 )
|
||||||
|
master-bin.000001 3997 Query 1 4088 use `test`; insert into t1 values( 359 )
|
||||||
|
master-bin.000001 4088 Query 1 4179 use `test`; insert into t1 values( 358 )
|
||||||
|
master-bin.000001 4179 Query 1 4270 use `test`; insert into t1 values( 357 )
|
||||||
|
master-bin.000001 4270 Query 1 4361 use `test`; insert into t1 values( 356 )
|
||||||
|
master-bin.000001 4361 Query 1 4452 use `test`; insert into t1 values( 355 )
|
||||||
|
master-bin.000001 4452 Query 1 4543 use `test`; insert into t1 values( 354 )
|
||||||
|
master-bin.000001 4543 Query 1 4634 use `test`; insert into t1 values( 353 )
|
||||||
|
master-bin.000001 4634 Query 1 4725 use `test`; insert into t1 values( 352 )
|
||||||
|
master-bin.000001 4725 Query 1 4816 use `test`; insert into t1 values( 351 )
|
||||||
|
master-bin.000001 4816 Query 1 4907 use `test`; insert into t1 values( 350 )
|
||||||
|
master-bin.000001 4907 Query 1 4998 use `test`; insert into t1 values( 349 )
|
||||||
|
master-bin.000001 4998 Query 1 5089 use `test`; insert into t1 values( 348 )
|
||||||
|
master-bin.000001 5089 Query 1 5180 use `test`; insert into t1 values( 347 )
|
||||||
|
master-bin.000001 5180 Query 1 5271 use `test`; insert into t1 values( 346 )
|
||||||
|
master-bin.000001 5271 Query 1 5362 use `test`; insert into t1 values( 345 )
|
||||||
|
master-bin.000001 5362 Query 1 5453 use `test`; insert into t1 values( 344 )
|
||||||
|
master-bin.000001 5453 Query 1 5544 use `test`; insert into t1 values( 343 )
|
||||||
|
master-bin.000001 5544 Query 1 5635 use `test`; insert into t1 values( 342 )
|
||||||
|
master-bin.000001 5635 Query 1 5726 use `test`; insert into t1 values( 341 )
|
||||||
|
master-bin.000001 5726 Query 1 5817 use `test`; insert into t1 values( 340 )
|
||||||
|
master-bin.000001 5817 Query 1 5908 use `test`; insert into t1 values( 339 )
|
||||||
|
master-bin.000001 5908 Query 1 5999 use `test`; insert into t1 values( 338 )
|
||||||
|
master-bin.000001 5999 Query 1 6090 use `test`; insert into t1 values( 337 )
|
||||||
|
master-bin.000001 6090 Query 1 6181 use `test`; insert into t1 values( 336 )
|
||||||
|
master-bin.000001 6181 Query 1 6272 use `test`; insert into t1 values( 335 )
|
||||||
|
master-bin.000001 6272 Query 1 6363 use `test`; insert into t1 values( 334 )
|
||||||
|
master-bin.000001 6363 Query 1 6454 use `test`; insert into t1 values( 333 )
|
||||||
|
master-bin.000001 6454 Query 1 6545 use `test`; insert into t1 values( 332 )
|
||||||
|
master-bin.000001 6545 Query 1 6636 use `test`; insert into t1 values( 331 )
|
||||||
|
master-bin.000001 6636 Query 1 6727 use `test`; insert into t1 values( 330 )
|
||||||
|
master-bin.000001 6727 Query 1 6818 use `test`; insert into t1 values( 329 )
|
||||||
|
master-bin.000001 6818 Query 1 6909 use `test`; insert into t1 values( 328 )
|
||||||
|
master-bin.000001 6909 Query 1 7000 use `test`; insert into t1 values( 327 )
|
||||||
|
master-bin.000001 7000 Query 1 7091 use `test`; insert into t1 values( 326 )
|
||||||
|
master-bin.000001 7091 Query 1 7182 use `test`; insert into t1 values( 325 )
|
||||||
|
master-bin.000001 7182 Query 1 7273 use `test`; insert into t1 values( 324 )
|
||||||
|
master-bin.000001 7273 Query 1 7364 use `test`; insert into t1 values( 323 )
|
||||||
|
master-bin.000001 7364 Query 1 7455 use `test`; insert into t1 values( 322 )
|
||||||
|
master-bin.000001 7455 Query 1 7546 use `test`; insert into t1 values( 321 )
|
||||||
|
master-bin.000001 7546 Query 1 7637 use `test`; insert into t1 values( 320 )
|
||||||
|
master-bin.000001 7637 Query 1 7728 use `test`; insert into t1 values( 319 )
|
||||||
|
master-bin.000001 7728 Query 1 7819 use `test`; insert into t1 values( 318 )
|
||||||
|
master-bin.000001 7819 Query 1 7910 use `test`; insert into t1 values( 317 )
|
||||||
|
master-bin.000001 7910 Query 1 8001 use `test`; insert into t1 values( 316 )
|
||||||
|
master-bin.000001 8001 Query 1 8092 use `test`; insert into t1 values( 315 )
|
||||||
|
master-bin.000001 8092 Query 1 8183 use `test`; insert into t1 values( 314 )
|
||||||
|
master-bin.000001 8183 Query 1 8274 use `test`; insert into t1 values( 313 )
|
||||||
|
master-bin.000001 8274 Query 1 8365 use `test`; insert into t1 values( 312 )
|
||||||
|
master-bin.000001 8365 Query 1 8456 use `test`; insert into t1 values( 311 )
|
||||||
|
master-bin.000001 8456 Query 1 8547 use `test`; insert into t1 values( 310 )
|
||||||
|
master-bin.000001 8547 Query 1 8638 use `test`; insert into t1 values( 309 )
|
||||||
|
master-bin.000001 8638 Query 1 8729 use `test`; insert into t1 values( 308 )
|
||||||
|
master-bin.000001 8729 Query 1 8820 use `test`; insert into t1 values( 307 )
|
||||||
|
master-bin.000001 8820 Query 1 8911 use `test`; insert into t1 values( 306 )
|
||||||
|
master-bin.000001 8911 Query 1 9002 use `test`; insert into t1 values( 305 )
|
||||||
|
master-bin.000001 9002 Query 1 9093 use `test`; insert into t1 values( 304 )
|
||||||
|
master-bin.000001 9093 Query 1 9184 use `test`; insert into t1 values( 303 )
|
||||||
|
master-bin.000001 9184 Query 1 9275 use `test`; insert into t1 values( 302 )
|
||||||
|
master-bin.000001 9275 Query 1 9366 use `test`; insert into t1 values( 301 )
|
||||||
|
master-bin.000001 9366 Query 1 9457 use `test`; insert into t1 values( 300 )
|
||||||
|
master-bin.000001 9457 Query 1 9548 use `test`; insert into t1 values( 299 )
|
||||||
|
master-bin.000001 9548 Query 1 9639 use `test`; insert into t1 values( 298 )
|
||||||
|
master-bin.000001 9639 Query 1 9730 use `test`; insert into t1 values( 297 )
|
||||||
|
master-bin.000001 9730 Query 1 9821 use `test`; insert into t1 values( 296 )
|
||||||
|
master-bin.000001 9821 Query 1 9912 use `test`; insert into t1 values( 295 )
|
||||||
|
master-bin.000001 9912 Query 1 10003 use `test`; insert into t1 values( 294 )
|
||||||
|
master-bin.000001 10003 Query 1 10094 use `test`; insert into t1 values( 293 )
|
||||||
|
master-bin.000001 10094 Query 1 10185 use `test`; insert into t1 values( 292 )
|
||||||
|
master-bin.000001 10185 Query 1 10276 use `test`; insert into t1 values( 291 )
|
||||||
|
master-bin.000001 10276 Query 1 10367 use `test`; insert into t1 values( 290 )
|
||||||
|
master-bin.000001 10367 Query 1 10458 use `test`; insert into t1 values( 289 )
|
||||||
|
master-bin.000001 10458 Query 1 10549 use `test`; insert into t1 values( 288 )
|
||||||
|
master-bin.000001 10549 Query 1 10640 use `test`; insert into t1 values( 287 )
|
||||||
|
master-bin.000001 10640 Query 1 10731 use `test`; insert into t1 values( 286 )
|
||||||
|
master-bin.000001 10731 Query 1 10822 use `test`; insert into t1 values( 285 )
|
||||||
|
master-bin.000001 10822 Query 1 10913 use `test`; insert into t1 values( 284 )
|
||||||
|
master-bin.000001 10913 Query 1 11004 use `test`; insert into t1 values( 283 )
|
||||||
|
master-bin.000001 11004 Query 1 11095 use `test`; insert into t1 values( 282 )
|
||||||
|
master-bin.000001 11095 Query 1 11186 use `test`; insert into t1 values( 281 )
|
||||||
|
master-bin.000001 11186 Query 1 11277 use `test`; insert into t1 values( 280 )
|
||||||
|
master-bin.000001 11277 Query 1 11368 use `test`; insert into t1 values( 279 )
|
||||||
|
master-bin.000001 11368 Query 1 11459 use `test`; insert into t1 values( 278 )
|
||||||
|
master-bin.000001 11459 Query 1 11550 use `test`; insert into t1 values( 277 )
|
||||||
|
master-bin.000001 11550 Query 1 11641 use `test`; insert into t1 values( 276 )
|
||||||
|
master-bin.000001 11641 Query 1 11732 use `test`; insert into t1 values( 275 )
|
||||||
|
master-bin.000001 11732 Query 1 11823 use `test`; insert into t1 values( 274 )
|
||||||
|
master-bin.000001 11823 Query 1 11914 use `test`; insert into t1 values( 273 )
|
||||||
|
master-bin.000001 11914 Query 1 12005 use `test`; insert into t1 values( 272 )
|
||||||
|
master-bin.000001 12005 Query 1 12096 use `test`; insert into t1 values( 271 )
|
||||||
|
master-bin.000001 12096 Query 1 12187 use `test`; insert into t1 values( 270 )
|
||||||
|
master-bin.000001 12187 Query 1 12278 use `test`; insert into t1 values( 269 )
|
||||||
|
master-bin.000001 12278 Query 1 12369 use `test`; insert into t1 values( 268 )
|
||||||
|
master-bin.000001 12369 Query 1 12460 use `test`; insert into t1 values( 267 )
|
||||||
|
master-bin.000001 12460 Query 1 12551 use `test`; insert into t1 values( 266 )
|
||||||
|
master-bin.000001 12551 Query 1 12642 use `test`; insert into t1 values( 265 )
|
||||||
|
master-bin.000001 12642 Query 1 12733 use `test`; insert into t1 values( 264 )
|
||||||
|
master-bin.000001 12733 Query 1 12824 use `test`; insert into t1 values( 263 )
|
||||||
|
master-bin.000001 12824 Query 1 12915 use `test`; insert into t1 values( 262 )
|
||||||
|
master-bin.000001 12915 Query 1 13006 use `test`; insert into t1 values( 261 )
|
||||||
|
master-bin.000001 13006 Query 1 13097 use `test`; insert into t1 values( 260 )
|
||||||
|
master-bin.000001 13097 Query 1 13188 use `test`; insert into t1 values( 259 )
|
||||||
|
master-bin.000001 13188 Query 1 13279 use `test`; insert into t1 values( 258 )
|
||||||
|
master-bin.000001 13279 Query 1 13370 use `test`; insert into t1 values( 257 )
|
||||||
|
master-bin.000001 13370 Query 1 13461 use `test`; insert into t1 values( 256 )
|
||||||
|
master-bin.000001 13461 Query 1 13552 use `test`; insert into t1 values( 255 )
|
||||||
|
master-bin.000001 13552 Query 1 13643 use `test`; insert into t1 values( 254 )
|
||||||
|
master-bin.000001 13643 Query 1 13734 use `test`; insert into t1 values( 253 )
|
||||||
|
master-bin.000001 13734 Query 1 13825 use `test`; insert into t1 values( 252 )
|
||||||
|
master-bin.000001 13825 Query 1 13916 use `test`; insert into t1 values( 251 )
|
||||||
|
master-bin.000001 13916 Query 1 14007 use `test`; insert into t1 values( 250 )
|
||||||
|
master-bin.000001 14007 Query 1 14098 use `test`; insert into t1 values( 249 )
|
||||||
|
master-bin.000001 14098 Query 1 14189 use `test`; insert into t1 values( 248 )
|
||||||
|
master-bin.000001 14189 Query 1 14280 use `test`; insert into t1 values( 247 )
|
||||||
|
master-bin.000001 14280 Query 1 14371 use `test`; insert into t1 values( 246 )
|
||||||
|
master-bin.000001 14371 Query 1 14462 use `test`; insert into t1 values( 245 )
|
||||||
|
master-bin.000001 14462 Query 1 14553 use `test`; insert into t1 values( 244 )
|
||||||
|
master-bin.000001 14553 Query 1 14644 use `test`; insert into t1 values( 243 )
|
||||||
|
master-bin.000001 14644 Query 1 14735 use `test`; insert into t1 values( 242 )
|
||||||
|
master-bin.000001 14735 Query 1 14826 use `test`; insert into t1 values( 241 )
|
||||||
|
master-bin.000001 14826 Query 1 14917 use `test`; insert into t1 values( 240 )
|
||||||
|
master-bin.000001 14917 Query 1 15008 use `test`; insert into t1 values( 239 )
|
||||||
|
master-bin.000001 15008 Query 1 15099 use `test`; insert into t1 values( 238 )
|
||||||
|
master-bin.000001 15099 Query 1 15190 use `test`; insert into t1 values( 237 )
|
||||||
|
master-bin.000001 15190 Query 1 15281 use `test`; insert into t1 values( 236 )
|
||||||
|
master-bin.000001 15281 Query 1 15372 use `test`; insert into t1 values( 235 )
|
||||||
|
master-bin.000001 15372 Query 1 15463 use `test`; insert into t1 values( 234 )
|
||||||
|
master-bin.000001 15463 Query 1 15554 use `test`; insert into t1 values( 233 )
|
||||||
|
master-bin.000001 15554 Query 1 15645 use `test`; insert into t1 values( 232 )
|
||||||
|
master-bin.000001 15645 Query 1 15736 use `test`; insert into t1 values( 231 )
|
||||||
|
master-bin.000001 15736 Query 1 15827 use `test`; insert into t1 values( 230 )
|
||||||
|
master-bin.000001 15827 Query 1 15918 use `test`; insert into t1 values( 229 )
|
||||||
|
master-bin.000001 15918 Query 1 16009 use `test`; insert into t1 values( 228 )
|
||||||
|
master-bin.000001 16009 Query 1 16100 use `test`; insert into t1 values( 227 )
|
||||||
|
master-bin.000001 16100 Query 1 16191 use `test`; insert into t1 values( 226 )
|
||||||
|
master-bin.000001 16191 Query 1 16282 use `test`; insert into t1 values( 225 )
|
||||||
|
master-bin.000001 16282 Query 1 16373 use `test`; insert into t1 values( 224 )
|
||||||
|
master-bin.000001 16373 Query 1 16464 use `test`; insert into t1 values( 223 )
|
||||||
|
master-bin.000001 16464 Query 1 16555 use `test`; insert into t1 values( 222 )
|
||||||
|
master-bin.000001 16555 Query 1 16646 use `test`; insert into t1 values( 221 )
|
||||||
|
master-bin.000001 16646 Query 1 16737 use `test`; insert into t1 values( 220 )
|
||||||
|
master-bin.000001 16737 Query 1 16828 use `test`; insert into t1 values( 219 )
|
||||||
|
master-bin.000001 16828 Query 1 16919 use `test`; insert into t1 values( 218 )
|
||||||
|
master-bin.000001 16919 Query 1 17010 use `test`; insert into t1 values( 217 )
|
||||||
|
master-bin.000001 17010 Query 1 17101 use `test`; insert into t1 values( 216 )
|
||||||
|
master-bin.000001 17101 Query 1 17192 use `test`; insert into t1 values( 215 )
|
||||||
|
master-bin.000001 17192 Query 1 17283 use `test`; insert into t1 values( 214 )
|
||||||
|
master-bin.000001 17283 Query 1 17374 use `test`; insert into t1 values( 213 )
|
||||||
|
master-bin.000001 17374 Query 1 17465 use `test`; insert into t1 values( 212 )
|
||||||
|
master-bin.000001 17465 Query 1 17556 use `test`; insert into t1 values( 211 )
|
||||||
|
master-bin.000001 17556 Query 1 17647 use `test`; insert into t1 values( 210 )
|
||||||
|
master-bin.000001 17647 Query 1 17738 use `test`; insert into t1 values( 209 )
|
||||||
|
master-bin.000001 17738 Query 1 17829 use `test`; insert into t1 values( 208 )
|
||||||
|
master-bin.000001 17829 Query 1 17920 use `test`; insert into t1 values( 207 )
|
||||||
|
master-bin.000001 17920 Query 1 18011 use `test`; insert into t1 values( 206 )
|
||||||
|
master-bin.000001 18011 Query 1 18102 use `test`; insert into t1 values( 205 )
|
||||||
|
master-bin.000001 18102 Query 1 18193 use `test`; insert into t1 values( 204 )
|
||||||
|
master-bin.000001 18193 Query 1 18284 use `test`; insert into t1 values( 203 )
|
||||||
|
master-bin.000001 18284 Query 1 18375 use `test`; insert into t1 values( 202 )
|
||||||
|
master-bin.000001 18375 Query 1 18466 use `test`; insert into t1 values( 201 )
|
||||||
|
master-bin.000001 18466 Query 1 18557 use `test`; insert into t1 values( 200 )
|
||||||
|
master-bin.000001 18557 Query 1 18648 use `test`; insert into t1 values( 199 )
|
||||||
|
master-bin.000001 18648 Query 1 18739 use `test`; insert into t1 values( 198 )
|
||||||
|
master-bin.000001 18739 Query 1 18830 use `test`; insert into t1 values( 197 )
|
||||||
|
master-bin.000001 18830 Query 1 18921 use `test`; insert into t1 values( 196 )
|
||||||
|
master-bin.000001 18921 Query 1 19012 use `test`; insert into t1 values( 195 )
|
||||||
|
master-bin.000001 19012 Query 1 19103 use `test`; insert into t1 values( 194 )
|
||||||
|
master-bin.000001 19103 Query 1 19194 use `test`; insert into t1 values( 193 )
|
||||||
|
master-bin.000001 19194 Query 1 19285 use `test`; insert into t1 values( 192 )
|
||||||
|
master-bin.000001 19285 Query 1 19376 use `test`; insert into t1 values( 191 )
|
||||||
|
master-bin.000001 19376 Query 1 19467 use `test`; insert into t1 values( 190 )
|
||||||
|
master-bin.000001 19467 Query 1 19558 use `test`; insert into t1 values( 189 )
|
||||||
|
master-bin.000001 19558 Query 1 19649 use `test`; insert into t1 values( 188 )
|
||||||
|
master-bin.000001 19649 Query 1 19740 use `test`; insert into t1 values( 187 )
|
||||||
|
master-bin.000001 19740 Query 1 19831 use `test`; insert into t1 values( 186 )
|
||||||
|
master-bin.000001 19831 Query 1 19922 use `test`; insert into t1 values( 185 )
|
||||||
|
master-bin.000001 19922 Query 1 20013 use `test`; insert into t1 values( 184 )
|
||||||
|
master-bin.000001 20013 Query 1 20104 use `test`; insert into t1 values( 183 )
|
||||||
|
master-bin.000001 20104 Query 1 20195 use `test`; insert into t1 values( 182 )
|
||||||
|
master-bin.000001 20195 Query 1 20286 use `test`; insert into t1 values( 181 )
|
||||||
|
master-bin.000001 20286 Query 1 20377 use `test`; insert into t1 values( 180 )
|
||||||
|
master-bin.000001 20377 Query 1 20468 use `test`; insert into t1 values( 179 )
|
||||||
|
master-bin.000001 20468 Query 1 20559 use `test`; insert into t1 values( 178 )
|
||||||
|
master-bin.000001 20559 Query 1 20650 use `test`; insert into t1 values( 177 )
|
||||||
|
master-bin.000001 20650 Query 1 20741 use `test`; insert into t1 values( 176 )
|
||||||
|
master-bin.000001 20741 Query 1 20832 use `test`; insert into t1 values( 175 )
|
||||||
|
master-bin.000001 20832 Query 1 20923 use `test`; insert into t1 values( 174 )
|
||||||
|
master-bin.000001 20923 Query 1 21014 use `test`; insert into t1 values( 173 )
|
||||||
|
master-bin.000001 21014 Query 1 21105 use `test`; insert into t1 values( 172 )
|
||||||
|
master-bin.000001 21105 Query 1 21196 use `test`; insert into t1 values( 171 )
|
||||||
|
master-bin.000001 21196 Query 1 21287 use `test`; insert into t1 values( 170 )
|
||||||
|
master-bin.000001 21287 Query 1 21378 use `test`; insert into t1 values( 169 )
|
||||||
|
master-bin.000001 21378 Query 1 21469 use `test`; insert into t1 values( 168 )
|
||||||
|
master-bin.000001 21469 Query 1 21560 use `test`; insert into t1 values( 167 )
|
||||||
|
master-bin.000001 21560 Query 1 21651 use `test`; insert into t1 values( 166 )
|
||||||
|
master-bin.000001 21651 Query 1 21742 use `test`; insert into t1 values( 165 )
|
||||||
|
master-bin.000001 21742 Query 1 21833 use `test`; insert into t1 values( 164 )
|
||||||
|
master-bin.000001 21833 Query 1 21924 use `test`; insert into t1 values( 163 )
|
||||||
|
master-bin.000001 21924 Query 1 22015 use `test`; insert into t1 values( 162 )
|
||||||
|
master-bin.000001 22015 Query 1 22106 use `test`; insert into t1 values( 161 )
|
||||||
|
master-bin.000001 22106 Query 1 22197 use `test`; insert into t1 values( 160 )
|
||||||
|
master-bin.000001 22197 Query 1 22288 use `test`; insert into t1 values( 159 )
|
||||||
|
master-bin.000001 22288 Query 1 22379 use `test`; insert into t1 values( 158 )
|
||||||
|
master-bin.000001 22379 Query 1 22470 use `test`; insert into t1 values( 157 )
|
||||||
|
master-bin.000001 22470 Query 1 22561 use `test`; insert into t1 values( 156 )
|
||||||
|
master-bin.000001 22561 Query 1 22652 use `test`; insert into t1 values( 155 )
|
||||||
|
master-bin.000001 22652 Query 1 22743 use `test`; insert into t1 values( 154 )
|
||||||
|
master-bin.000001 22743 Query 1 22834 use `test`; insert into t1 values( 153 )
|
||||||
|
master-bin.000001 22834 Query 1 22925 use `test`; insert into t1 values( 152 )
|
||||||
|
master-bin.000001 22925 Query 1 23016 use `test`; insert into t1 values( 151 )
|
||||||
|
master-bin.000001 23016 Query 1 23107 use `test`; insert into t1 values( 150 )
|
||||||
|
master-bin.000001 23107 Query 1 23198 use `test`; insert into t1 values( 149 )
|
||||||
|
master-bin.000001 23198 Query 1 23289 use `test`; insert into t1 values( 148 )
|
||||||
|
master-bin.000001 23289 Query 1 23380 use `test`; insert into t1 values( 147 )
|
||||||
|
master-bin.000001 23380 Query 1 23471 use `test`; insert into t1 values( 146 )
|
||||||
|
master-bin.000001 23471 Query 1 23562 use `test`; insert into t1 values( 145 )
|
||||||
|
master-bin.000001 23562 Query 1 23653 use `test`; insert into t1 values( 144 )
|
||||||
|
master-bin.000001 23653 Query 1 23744 use `test`; insert into t1 values( 143 )
|
||||||
|
master-bin.000001 23744 Query 1 23835 use `test`; insert into t1 values( 142 )
|
||||||
|
master-bin.000001 23835 Query 1 23926 use `test`; insert into t1 values( 141 )
|
||||||
|
master-bin.000001 23926 Query 1 24017 use `test`; insert into t1 values( 140 )
|
||||||
|
master-bin.000001 24017 Query 1 24108 use `test`; insert into t1 values( 139 )
|
||||||
|
master-bin.000001 24108 Query 1 24199 use `test`; insert into t1 values( 138 )
|
||||||
|
master-bin.000001 24199 Query 1 24290 use `test`; insert into t1 values( 137 )
|
||||||
|
master-bin.000001 24290 Query 1 24381 use `test`; insert into t1 values( 136 )
|
||||||
|
master-bin.000001 24381 Query 1 24472 use `test`; insert into t1 values( 135 )
|
||||||
|
master-bin.000001 24472 Query 1 24563 use `test`; insert into t1 values( 134 )
|
||||||
|
master-bin.000001 24563 Query 1 24654 use `test`; insert into t1 values( 133 )
|
||||||
|
master-bin.000001 24654 Query 1 24745 use `test`; insert into t1 values( 132 )
|
||||||
|
master-bin.000001 24745 Query 1 24836 use `test`; insert into t1 values( 131 )
|
||||||
|
master-bin.000001 24836 Query 1 24927 use `test`; insert into t1 values( 130 )
|
||||||
|
master-bin.000001 24927 Query 1 25018 use `test`; insert into t1 values( 129 )
|
||||||
|
master-bin.000001 25018 Query 1 25109 use `test`; insert into t1 values( 128 )
|
||||||
|
master-bin.000001 25109 Query 1 25200 use `test`; insert into t1 values( 127 )
|
||||||
|
master-bin.000001 25200 Query 1 25291 use `test`; insert into t1 values( 126 )
|
||||||
|
master-bin.000001 25291 Query 1 25382 use `test`; insert into t1 values( 125 )
|
||||||
|
master-bin.000001 25382 Query 1 25473 use `test`; insert into t1 values( 124 )
|
||||||
|
master-bin.000001 25473 Query 1 25564 use `test`; insert into t1 values( 123 )
|
||||||
|
master-bin.000001 25564 Query 1 25655 use `test`; insert into t1 values( 122 )
|
||||||
|
master-bin.000001 25655 Query 1 25746 use `test`; insert into t1 values( 121 )
|
||||||
|
master-bin.000001 25746 Query 1 25837 use `test`; insert into t1 values( 120 )
|
||||||
|
master-bin.000001 25837 Query 1 25928 use `test`; insert into t1 values( 119 )
|
||||||
|
master-bin.000001 25928 Query 1 26019 use `test`; insert into t1 values( 118 )
|
||||||
|
master-bin.000001 26019 Query 1 26110 use `test`; insert into t1 values( 117 )
|
||||||
|
master-bin.000001 26110 Query 1 26201 use `test`; insert into t1 values( 116 )
|
||||||
|
master-bin.000001 26201 Query 1 26292 use `test`; insert into t1 values( 115 )
|
||||||
|
master-bin.000001 26292 Query 1 26383 use `test`; insert into t1 values( 114 )
|
||||||
|
master-bin.000001 26383 Query 1 26474 use `test`; insert into t1 values( 113 )
|
||||||
|
master-bin.000001 26474 Query 1 26565 use `test`; insert into t1 values( 112 )
|
||||||
|
master-bin.000001 26565 Query 1 26656 use `test`; insert into t1 values( 111 )
|
||||||
|
master-bin.000001 26656 Query 1 26747 use `test`; insert into t1 values( 110 )
|
||||||
|
master-bin.000001 26747 Query 1 26838 use `test`; insert into t1 values( 109 )
|
||||||
|
master-bin.000001 26838 Query 1 26929 use `test`; insert into t1 values( 108 )
|
||||||
|
master-bin.000001 26929 Query 1 27020 use `test`; insert into t1 values( 107 )
|
||||||
|
master-bin.000001 27020 Query 1 27111 use `test`; insert into t1 values( 106 )
|
||||||
|
master-bin.000001 27111 Query 1 27202 use `test`; insert into t1 values( 105 )
|
||||||
|
master-bin.000001 27202 Query 1 27293 use `test`; insert into t1 values( 104 )
|
||||||
|
master-bin.000001 27293 Query 1 27384 use `test`; insert into t1 values( 103 )
|
||||||
|
master-bin.000001 27384 Query 1 27475 use `test`; insert into t1 values( 102 )
|
||||||
|
master-bin.000001 27475 Query 1 27566 use `test`; insert into t1 values( 101 )
|
||||||
|
master-bin.000001 27566 Query 1 27657 use `test`; insert into t1 values( 100 )
|
||||||
|
master-bin.000001 27657 Query 1 27747 use `test`; insert into t1 values( 99 )
|
||||||
|
master-bin.000001 27747 Query 1 27837 use `test`; insert into t1 values( 98 )
|
||||||
|
master-bin.000001 27837 Query 1 27927 use `test`; insert into t1 values( 97 )
|
||||||
|
master-bin.000001 27927 Query 1 28017 use `test`; insert into t1 values( 96 )
|
||||||
|
master-bin.000001 28017 Query 1 28107 use `test`; insert into t1 values( 95 )
|
||||||
|
master-bin.000001 28107 Query 1 28197 use `test`; insert into t1 values( 94 )
|
||||||
|
master-bin.000001 28197 Query 1 28287 use `test`; insert into t1 values( 93 )
|
||||||
|
master-bin.000001 28287 Query 1 28377 use `test`; insert into t1 values( 92 )
|
||||||
|
master-bin.000001 28377 Query 1 28467 use `test`; insert into t1 values( 91 )
|
||||||
|
master-bin.000001 28467 Query 1 28557 use `test`; insert into t1 values( 90 )
|
||||||
|
master-bin.000001 28557 Query 1 28647 use `test`; insert into t1 values( 89 )
|
||||||
|
master-bin.000001 28647 Query 1 28737 use `test`; insert into t1 values( 88 )
|
||||||
|
master-bin.000001 28737 Query 1 28827 use `test`; insert into t1 values( 87 )
|
||||||
|
master-bin.000001 28827 Query 1 28917 use `test`; insert into t1 values( 86 )
|
||||||
|
master-bin.000001 28917 Query 1 29007 use `test`; insert into t1 values( 85 )
|
||||||
|
master-bin.000001 29007 Query 1 29097 use `test`; insert into t1 values( 84 )
|
||||||
|
master-bin.000001 29097 Query 1 29187 use `test`; insert into t1 values( 83 )
|
||||||
|
master-bin.000001 29187 Query 1 29277 use `test`; insert into t1 values( 82 )
|
||||||
|
master-bin.000001 29277 Query 1 29367 use `test`; insert into t1 values( 81 )
|
||||||
|
master-bin.000001 29367 Query 1 29457 use `test`; insert into t1 values( 80 )
|
||||||
|
master-bin.000001 29457 Query 1 29547 use `test`; insert into t1 values( 79 )
|
||||||
|
master-bin.000001 29547 Query 1 29637 use `test`; insert into t1 values( 78 )
|
||||||
|
master-bin.000001 29637 Query 1 29727 use `test`; insert into t1 values( 77 )
|
||||||
|
master-bin.000001 29727 Query 1 29817 use `test`; insert into t1 values( 76 )
|
||||||
|
master-bin.000001 29817 Query 1 29907 use `test`; insert into t1 values( 75 )
|
||||||
|
master-bin.000001 29907 Query 1 29997 use `test`; insert into t1 values( 74 )
|
||||||
|
master-bin.000001 29997 Query 1 30087 use `test`; insert into t1 values( 73 )
|
||||||
|
master-bin.000001 30087 Query 1 30177 use `test`; insert into t1 values( 72 )
|
||||||
|
master-bin.000001 30177 Query 1 30267 use `test`; insert into t1 values( 71 )
|
||||||
|
master-bin.000001 30267 Query 1 30357 use `test`; insert into t1 values( 70 )
|
||||||
|
master-bin.000001 30357 Query 1 30447 use `test`; insert into t1 values( 69 )
|
||||||
|
master-bin.000001 30447 Query 1 30537 use `test`; insert into t1 values( 68 )
|
||||||
|
master-bin.000001 30537 Query 1 30627 use `test`; insert into t1 values( 67 )
|
||||||
|
master-bin.000001 30627 Query 1 30717 use `test`; insert into t1 values( 66 )
|
||||||
|
master-bin.000001 30717 Query 1 30807 use `test`; insert into t1 values( 65 )
|
||||||
|
master-bin.000001 30807 Query 1 30897 use `test`; insert into t1 values( 64 )
|
||||||
|
master-bin.000001 30897 Query 1 30987 use `test`; insert into t1 values( 63 )
|
||||||
|
master-bin.000001 30987 Query 1 31077 use `test`; insert into t1 values( 62 )
|
||||||
|
master-bin.000001 31077 Query 1 31167 use `test`; insert into t1 values( 61 )
|
||||||
|
master-bin.000001 31167 Query 1 31257 use `test`; insert into t1 values( 60 )
|
||||||
|
master-bin.000001 31257 Query 1 31347 use `test`; insert into t1 values( 59 )
|
||||||
|
master-bin.000001 31347 Query 1 31437 use `test`; insert into t1 values( 58 )
|
||||||
|
master-bin.000001 31437 Query 1 31527 use `test`; insert into t1 values( 57 )
|
||||||
|
master-bin.000001 31527 Query 1 31617 use `test`; insert into t1 values( 56 )
|
||||||
|
master-bin.000001 31617 Query 1 31707 use `test`; insert into t1 values( 55 )
|
||||||
|
master-bin.000001 31707 Query 1 31797 use `test`; insert into t1 values( 54 )
|
||||||
|
master-bin.000001 31797 Query 1 31887 use `test`; insert into t1 values( 53 )
|
||||||
|
master-bin.000001 31887 Query 1 31977 use `test`; insert into t1 values( 52 )
|
||||||
|
master-bin.000001 31977 Query 1 32067 use `test`; insert into t1 values( 51 )
|
||||||
|
master-bin.000001 32067 Query 1 32157 use `test`; insert into t1 values( 50 )
|
||||||
|
master-bin.000001 32157 Query 1 32247 use `test`; insert into t1 values( 49 )
|
||||||
|
master-bin.000001 32247 Query 1 32337 use `test`; insert into t1 values( 48 )
|
||||||
|
master-bin.000001 32337 Query 1 32427 use `test`; insert into t1 values( 47 )
|
||||||
|
master-bin.000001 32427 Query 1 32517 use `test`; insert into t1 values( 46 )
|
||||||
|
master-bin.000001 32517 Query 1 32607 use `test`; insert into t1 values( 45 )
|
||||||
|
master-bin.000001 32607 Query 1 32697 use `test`; insert into t1 values( 44 )
|
||||||
|
master-bin.000001 32697 Query 1 32787 use `test`; insert into t1 values( 43 )
|
||||||
|
master-bin.000001 32787 Query 1 32877 use `test`; insert into t1 values( 42 )
|
||||||
|
master-bin.000001 32877 Query 1 32967 use `test`; insert into t1 values( 41 )
|
||||||
|
master-bin.000001 32967 Query 1 33057 use `test`; insert into t1 values( 40 )
|
||||||
|
master-bin.000001 33057 Query 1 33147 use `test`; insert into t1 values( 39 )
|
||||||
|
master-bin.000001 33147 Query 1 33237 use `test`; insert into t1 values( 38 )
|
||||||
|
master-bin.000001 33237 Query 1 33327 use `test`; insert into t1 values( 37 )
|
||||||
|
master-bin.000001 33327 Query 1 33417 use `test`; insert into t1 values( 36 )
|
||||||
|
master-bin.000001 33417 Query 1 33507 use `test`; insert into t1 values( 35 )
|
||||||
|
master-bin.000001 33507 Query 1 33597 use `test`; insert into t1 values( 34 )
|
||||||
|
master-bin.000001 33597 Query 1 33687 use `test`; insert into t1 values( 33 )
|
||||||
|
master-bin.000001 33687 Query 1 33777 use `test`; insert into t1 values( 32 )
|
||||||
|
master-bin.000001 33777 Query 1 33867 use `test`; insert into t1 values( 31 )
|
||||||
|
master-bin.000001 33867 Query 1 33957 use `test`; insert into t1 values( 30 )
|
||||||
|
master-bin.000001 33957 Query 1 34047 use `test`; insert into t1 values( 29 )
|
||||||
|
master-bin.000001 34047 Query 1 34137 use `test`; insert into t1 values( 28 )
|
||||||
|
master-bin.000001 34137 Query 1 34227 use `test`; insert into t1 values( 27 )
|
||||||
|
master-bin.000001 34227 Query 1 34317 use `test`; insert into t1 values( 26 )
|
||||||
|
master-bin.000001 34317 Query 1 34407 use `test`; insert into t1 values( 25 )
|
||||||
|
master-bin.000001 34407 Query 1 34497 use `test`; insert into t1 values( 24 )
|
||||||
|
master-bin.000001 34497 Query 1 34587 use `test`; insert into t1 values( 23 )
|
||||||
|
master-bin.000001 34587 Query 1 34677 use `test`; insert into t1 values( 22 )
|
||||||
|
master-bin.000001 34677 Query 1 34767 use `test`; insert into t1 values( 21 )
|
||||||
|
master-bin.000001 34767 Query 1 34857 use `test`; insert into t1 values( 20 )
|
||||||
|
master-bin.000001 34857 Query 1 34947 use `test`; insert into t1 values( 19 )
|
||||||
|
master-bin.000001 34947 Query 1 35037 use `test`; insert into t1 values( 18 )
|
||||||
|
master-bin.000001 35037 Query 1 35127 use `test`; insert into t1 values( 17 )
|
||||||
|
master-bin.000001 35127 Query 1 35217 use `test`; insert into t1 values( 16 )
|
||||||
|
master-bin.000001 35217 Query 1 35307 use `test`; insert into t1 values( 15 )
|
||||||
|
master-bin.000001 35307 Query 1 35397 use `test`; insert into t1 values( 14 )
|
||||||
|
master-bin.000001 35397 Query 1 35487 use `test`; insert into t1 values( 13 )
|
||||||
|
master-bin.000001 35487 Query 1 35577 use `test`; insert into t1 values( 12 )
|
||||||
|
master-bin.000001 35577 Query 1 35667 use `test`; insert into t1 values( 11 )
|
||||||
|
master-bin.000001 35667 Query 1 35757 use `test`; insert into t1 values( 10 )
|
||||||
|
master-bin.000001 35757 Query 1 35846 use `test`; insert into t1 values( 9 )
|
||||||
|
master-bin.000001 35846 Query 1 35935 use `test`; insert into t1 values( 8 )
|
||||||
|
master-bin.000001 35935 Query 1 36024 use `test`; insert into t1 values( 7 )
|
||||||
|
master-bin.000001 36024 Query 1 36113 use `test`; insert into t1 values( 6 )
|
||||||
|
master-bin.000001 36113 Query 1 36202 use `test`; insert into t1 values( 5 )
|
||||||
|
master-bin.000001 36202 Query 1 36291 use `test`; insert into t1 values( 4 )
|
||||||
|
master-bin.000001 36291 Query 1 36380 use `test`; insert into t1 values( 3 )
|
||||||
|
master-bin.000001 36380 Query 1 36469 use `test`; insert into t1 values( 2 )
|
||||||
|
master-bin.000001 36469 Query 1 36558 use `test`; insert into t1 values( 1 )
|
||||||
|
master-bin.000001 36558 Xid 1 36585 COMMIT /* XID */
|
||||||
|
master-bin.000001 36585 Rotate 1 36629 master-bin.000002;pos=4
|
||||||
|
drop table t1;
|
||||||
|
set global binlog_cache_size=@bcs;
|
||||||
|
set session autocommit = @ac;
|
||||||
|
End of 5.0 tests
|
||||||
|
23
mysql-test/r/binlog_innodb.result
Normal file
23
mysql-test/r/binlog_innodb.result
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
show status like "binlog_cache_use";
|
||||||
|
Variable_name Value
|
||||||
|
Binlog_cache_use 0
|
||||||
|
show status like "binlog_cache_disk_use";
|
||||||
|
Variable_name Value
|
||||||
|
Binlog_cache_disk_use 0
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
show status like "binlog_cache_use";
|
||||||
|
Variable_name Value
|
||||||
|
Binlog_cache_use 1
|
||||||
|
show status like "binlog_cache_disk_use";
|
||||||
|
Variable_name Value
|
||||||
|
Binlog_cache_disk_use 1
|
||||||
|
begin;
|
||||||
|
delete from t1;
|
||||||
|
commit;
|
||||||
|
show status like "binlog_cache_use";
|
||||||
|
Variable_name Value
|
||||||
|
Binlog_cache_use 2
|
||||||
|
show status like "binlog_cache_disk_use";
|
||||||
|
Variable_name Value
|
||||||
|
Binlog_cache_disk_use 1
|
||||||
|
drop table t1;
|
12
mysql-test/r/binlog_killed.result
Normal file
12
mysql-test/r/binlog_killed.result
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
create table t1 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB;
|
||||||
|
create table t2 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=MyISAM;
|
||||||
|
create table t3 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB;
|
||||||
|
select get_lock("a", 20);
|
||||||
|
get_lock("a", 20)
|
||||||
|
1
|
||||||
|
reset master;
|
||||||
|
insert into t2 values (null, null), (null, get_lock("a", 10));
|
||||||
|
select @result /* must be zero either way */;
|
||||||
|
@result
|
||||||
|
0
|
||||||
|
drop table t1,t2,t3;
|
@ -13,7 +13,7 @@ Warnings:
|
|||||||
Note 1050 Table 't1' already exists
|
Note 1050 Table 't1' already exists
|
||||||
insert into t1 values (""),(null);
|
insert into t1 values (""),(null);
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'b' at row 2
|
Warning 1048 Column 'b' cannot be null
|
||||||
select * from t1;
|
select * from t1;
|
||||||
b
|
b
|
||||||
|
|
||||||
@ -865,4 +865,642 @@ unlock tables;
|
|||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
create table t1 (upgrade int);
|
create table t1 (upgrade int);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
|
c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int,
|
||||||
|
c9 int, c10 int, c11 int, c12 int, c13 int, c14 int, c15 int, c16 int,
|
||||||
|
key a001_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a002_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a003_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a004_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a005_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a006_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a007_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a008_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a009_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a010_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a011_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a012_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a013_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a014_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a015_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a016_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a017_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a018_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a019_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a020_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a021_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a022_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a023_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a024_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a025_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a026_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a027_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a028_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a029_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a030_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a031_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a032_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a033_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a034_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a035_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a036_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a037_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a038_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a039_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a040_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a041_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a042_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a043_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a044_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a045_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a046_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a047_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a048_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a049_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a050_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a051_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a052_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a053_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a054_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a055_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a056_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a057_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a058_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a059_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a060_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a061_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a062_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a063_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
key a064_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16)
|
||||||
|
);
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) default NULL,
|
||||||
|
`c2` int(11) default NULL,
|
||||||
|
`c3` int(11) default NULL,
|
||||||
|
`c4` int(11) default NULL,
|
||||||
|
`c5` int(11) default NULL,
|
||||||
|
`c6` int(11) default NULL,
|
||||||
|
`c7` int(11) default NULL,
|
||||||
|
`c8` int(11) default NULL,
|
||||||
|
`c9` int(11) default NULL,
|
||||||
|
`c10` int(11) default NULL,
|
||||||
|
`c11` int(11) default NULL,
|
||||||
|
`c12` int(11) default NULL,
|
||||||
|
`c13` int(11) default NULL,
|
||||||
|
`c14` int(11) default NULL,
|
||||||
|
`c15` int(11) default NULL,
|
||||||
|
`c16` int(11) default NULL,
|
||||||
|
KEY `a001_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a002_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a003_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a004_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a005_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a006_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a007_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a008_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a009_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a010_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a011_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a012_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a013_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a014_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a015_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a016_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a017_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a018_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a019_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a020_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a021_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a022_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a023_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a024_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a025_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a026_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a027_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a028_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a029_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a030_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a031_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a032_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a033_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a034_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a035_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a036_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a037_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a038_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a039_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a040_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a041_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a042_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a043_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a044_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a045_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a046_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a047_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a048_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a049_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a050_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a051_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a052_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a053_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a054_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a055_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a056_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a057_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a058_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a059_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a060_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a061_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a062_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a063_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a064_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
flush tables;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) default NULL,
|
||||||
|
`c2` int(11) default NULL,
|
||||||
|
`c3` int(11) default NULL,
|
||||||
|
`c4` int(11) default NULL,
|
||||||
|
`c5` int(11) default NULL,
|
||||||
|
`c6` int(11) default NULL,
|
||||||
|
`c7` int(11) default NULL,
|
||||||
|
`c8` int(11) default NULL,
|
||||||
|
`c9` int(11) default NULL,
|
||||||
|
`c10` int(11) default NULL,
|
||||||
|
`c11` int(11) default NULL,
|
||||||
|
`c12` int(11) default NULL,
|
||||||
|
`c13` int(11) default NULL,
|
||||||
|
`c14` int(11) default NULL,
|
||||||
|
`c15` int(11) default NULL,
|
||||||
|
`c16` int(11) default NULL,
|
||||||
|
KEY `a001_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a002_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a003_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a004_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a005_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a006_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a007_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a008_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a009_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a010_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a011_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a012_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a013_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a014_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a015_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a016_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a017_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a018_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a019_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a020_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a021_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a022_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a023_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a024_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a025_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a026_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a027_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a028_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a029_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a030_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a031_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a032_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a033_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a034_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a035_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a036_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a037_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a038_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a039_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a040_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a041_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a042_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a043_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a044_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a045_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a046_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a047_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a048_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a049_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a050_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a051_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a052_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a053_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a054_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a055_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a056_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a057_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a058_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a059_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a060_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a061_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a062_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a063_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a064_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int,
|
||||||
|
c8 int, c9 int, c10 int, c11 int, c12 int, c13 int, c14 int, c15 int, c16 int);
|
||||||
|
alter table t1
|
||||||
|
add key a001_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a002_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a003_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a004_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a005_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a006_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a007_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a008_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a009_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a010_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a011_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a012_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a013_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a014_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a015_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a016_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a017_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a018_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a019_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a020_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a021_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a022_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a023_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a024_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a025_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a026_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a027_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a028_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a029_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a030_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a031_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a032_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a033_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a034_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a035_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a036_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a037_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a038_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a039_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a040_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a041_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a042_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a043_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a044_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a045_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a046_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a047_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a048_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a049_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a050_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a051_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a052_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a053_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a054_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a055_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a056_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a057_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a058_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a059_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a060_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a061_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a062_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a063_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16),
|
||||||
|
add key a064_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16);
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) default NULL,
|
||||||
|
`c2` int(11) default NULL,
|
||||||
|
`c3` int(11) default NULL,
|
||||||
|
`c4` int(11) default NULL,
|
||||||
|
`c5` int(11) default NULL,
|
||||||
|
`c6` int(11) default NULL,
|
||||||
|
`c7` int(11) default NULL,
|
||||||
|
`c8` int(11) default NULL,
|
||||||
|
`c9` int(11) default NULL,
|
||||||
|
`c10` int(11) default NULL,
|
||||||
|
`c11` int(11) default NULL,
|
||||||
|
`c12` int(11) default NULL,
|
||||||
|
`c13` int(11) default NULL,
|
||||||
|
`c14` int(11) default NULL,
|
||||||
|
`c15` int(11) default NULL,
|
||||||
|
`c16` int(11) default NULL,
|
||||||
|
KEY `a001_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a002_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a003_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a004_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a005_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a006_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a007_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a008_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a009_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a010_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a011_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a012_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a013_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a014_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a015_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a016_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a017_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a018_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a019_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a020_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a021_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a022_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a023_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a024_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a025_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a026_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a027_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a028_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a029_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a030_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a031_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a032_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a033_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a034_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a035_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a036_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a037_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a038_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a039_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a040_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a041_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a042_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a043_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a044_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a045_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a046_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a047_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a048_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a049_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a050_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a051_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a052_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a053_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a054_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a055_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a056_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a057_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a058_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a059_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a060_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a061_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a062_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a063_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a064_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
flush tables;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) default NULL,
|
||||||
|
`c2` int(11) default NULL,
|
||||||
|
`c3` int(11) default NULL,
|
||||||
|
`c4` int(11) default NULL,
|
||||||
|
`c5` int(11) default NULL,
|
||||||
|
`c6` int(11) default NULL,
|
||||||
|
`c7` int(11) default NULL,
|
||||||
|
`c8` int(11) default NULL,
|
||||||
|
`c9` int(11) default NULL,
|
||||||
|
`c10` int(11) default NULL,
|
||||||
|
`c11` int(11) default NULL,
|
||||||
|
`c12` int(11) default NULL,
|
||||||
|
`c13` int(11) default NULL,
|
||||||
|
`c14` int(11) default NULL,
|
||||||
|
`c15` int(11) default NULL,
|
||||||
|
`c16` int(11) default NULL,
|
||||||
|
KEY `a001_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a002_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a003_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a004_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a005_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a006_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a007_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a008_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a009_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a010_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a011_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a012_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a013_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a014_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a015_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a016_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a017_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a018_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a019_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a020_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a021_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a022_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a023_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a024_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a025_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a026_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a027_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a028_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a029_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a030_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a031_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a032_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a033_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a034_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a035_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a036_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a037_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a038_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a039_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a040_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a041_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a042_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a043_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a044_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a045_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a046_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a047_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a048_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a049_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a050_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a051_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a052_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a053_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a054_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a055_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a056_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a057_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a058_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a059_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a060_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a061_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a062_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a063_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`),
|
||||||
|
KEY `a064_long_123456789_123456789_123456789_123456789_123456789_1234` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`,`c7`,`c8`,`c9`,`c10`,`c11`,`c12`,`c13`,`c14`,`c15`,`c16`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
alter table t1 add key
|
||||||
|
a065_long_123456789_123456789_123456789_123456789_123456789_1234 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16);
|
||||||
|
ERROR 42000: Too many keys specified; max 64 keys allowed
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int,
|
||||||
|
c8 int, c9 int, c10 int, c11 int, c12 int, c13 int, c14 int, c15 int,
|
||||||
|
c16 int, c17 int);
|
||||||
|
alter table t1 add key i1 (
|
||||||
|
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16, c17);
|
||||||
|
ERROR 42000: Too many key parts specified; max 16 parts allowed
|
||||||
|
alter table t1 add key
|
||||||
|
a001_long_123456789_123456789_123456789_123456789_123456789_12345 (c1);
|
||||||
|
ERROR 42000: Identifier name 'a001_long_123456789_123456789_123456789_123456789_123456789_12345' is too long
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) default NULL,
|
||||||
|
`c2` int(11) default NULL,
|
||||||
|
`c3` int(11) default NULL,
|
||||||
|
`c4` int(11) default NULL,
|
||||||
|
`c5` int(11) default NULL,
|
||||||
|
`c6` int(11) default NULL,
|
||||||
|
`c7` int(11) default NULL,
|
||||||
|
`c8` int(11) default NULL,
|
||||||
|
`c9` int(11) default NULL,
|
||||||
|
`c10` int(11) default NULL,
|
||||||
|
`c11` int(11) default NULL,
|
||||||
|
`c12` int(11) default NULL,
|
||||||
|
`c13` int(11) default NULL,
|
||||||
|
`c14` int(11) default NULL,
|
||||||
|
`c15` int(11) default NULL,
|
||||||
|
`c16` int(11) default NULL,
|
||||||
|
`c17` int(11) default NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -5009,3 +5009,24 @@ select * from bug15205;
|
|||||||
val
|
val
|
||||||
drop table bug15205;
|
drop table bug15205;
|
||||||
drop table bug15205_2;
|
drop table bug15205_2;
|
||||||
|
set names latin1;
|
||||||
|
create table t1 (
|
||||||
|
c varchar(1),
|
||||||
|
name varchar(64)
|
||||||
|
) character set latin1 engine=csv;
|
||||||
|
insert into t1 values (0xC0,'LATIN CAPITAL LETTER A WITH GRAVE');
|
||||||
|
insert into t1 values (0xE0,'LATIN SMALL LETTER A WITH GRAVE');
|
||||||
|
insert into t1 values (0xEE,'LATIN SMALL LETTER I WITH CIRCUMFLEX');
|
||||||
|
insert into t1 values (0xFE,'LATIN SMALL LETTER THORN');
|
||||||
|
insert into t1 values (0xF7,'DIVISION SIGN');
|
||||||
|
insert into t1 values (0xFF,'LATIN SMALL LETTER Y WITH DIAERESIS');
|
||||||
|
select hex(c), c, name from t1 order by 1;
|
||||||
|
hex(c) c name
|
||||||
|
C0 À LATIN CAPITAL LETTER A WITH GRAVE
|
||||||
|
E0 à LATIN SMALL LETTER A WITH GRAVE
|
||||||
|
EE î LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||||
|
F7 ÷ DIVISION SIGN
|
||||||
|
FE þ LATIN SMALL LETTER THORN
|
||||||
|
FF ÿ LATIN SMALL LETTER Y WITH DIAERESIS
|
||||||
|
drop table t1;
|
||||||
|
End of 5.0 tests
|
||||||
|
@ -192,3 +192,16 @@ drop table t1;
|
|||||||
select hex(convert(_big5 0xC84041 using ucs2));
|
select hex(convert(_big5 0xC84041 using ucs2));
|
||||||
hex(convert(_big5 0xC84041 using ucs2))
|
hex(convert(_big5 0xC84041 using ucs2))
|
||||||
003F0041
|
003F0041
|
||||||
|
End of 4.1 tests
|
||||||
|
create table t1 (a blob);
|
||||||
|
insert into t1 values (0xEE00);
|
||||||
|
delete from t1;
|
||||||
|
select hex(load_file('test/t1.txt'));
|
||||||
|
hex(load_file('test/t1.txt'))
|
||||||
|
5CEE5C300A
|
||||||
|
load data infile 't1.txt' into table t1;
|
||||||
|
select hex(a) from t1;
|
||||||
|
hex(a)
|
||||||
|
EE00
|
||||||
|
drop table t1;
|
||||||
|
End of 5.0 tests
|
||||||
|
@ -595,3 +595,11 @@ EXPLAIN SELECT * FROM t1 WHERE s2 LIKE 'a' COLLATE latin1_german1_ci;
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL s2 NULL NULL NULL 10 Using where
|
1 SIMPLE t1 ALL s2 NULL NULL NULL 10 Using where
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
create table t1(f1 varchar(10) character set latin2 collate latin2_hungarian_ci, key(f1));
|
||||||
|
insert into t1 set f1=0x3F3F9DC73F;
|
||||||
|
insert into t1 set f1=0x3F3F1E563F;
|
||||||
|
insert into t1 set f1=0x3F3F;
|
||||||
|
check table t1 extended;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
drop table t1;
|
||||||
|
@ -9,8 +9,7 @@ EXECUTE stmt1 USING @var1;
|
|||||||
SHOW BINLOG EVENTS FROM 98;
|
SHOW BINLOG EVENTS FROM 98;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 98 Query 1 188 use `test`; CREATE TABLE t1(f1 blob)
|
master-bin.000001 98 Query 1 188 use `test`; CREATE TABLE t1(f1 blob)
|
||||||
master-bin.000001 188 User var 1 227 @`var1`=_binary 0x8300 COLLATE binary
|
master-bin.000001 188 Query 1 283 use `test`; INSERT INTO t1 VALUES(0x8300)
|
||||||
master-bin.000001 227 Query 1 323 use `test`; INSERT INTO t1 VALUES(@'var1')
|
|
||||||
SELECT HEX(f1) FROM t1;
|
SELECT HEX(f1) FROM t1;
|
||||||
HEX(f1)
|
HEX(f1)
|
||||||
8300
|
8300
|
||||||
@ -30,17 +29,17 @@ HEX(s1) HEX(s2) d
|
|||||||
466F6F2773206120426172 ED40ED41ED42 47.93
|
466F6F2773206120426172 ED40ED41ED42 47.93
|
||||||
DROP PROCEDURE bug18293|
|
DROP PROCEDURE bug18293|
|
||||||
DROP TABLE t4|
|
DROP TABLE t4|
|
||||||
SHOW BINLOG EVENTS FROM 402|
|
SHOW BINLOG EVENTS FROM 362|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 402 Query 1 568 use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
|
master-bin.000001 362 Query 1 528 use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
|
||||||
s2 CHAR(50) CHARACTER SET cp932,
|
s2 CHAR(50) CHARACTER SET cp932,
|
||||||
d DECIMAL(10,2))
|
d DECIMAL(10,2))
|
||||||
master-bin.000001 568 Query 1 816 use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE bug18293 (IN ins1 CHAR(50),
|
master-bin.000001 528 Query 1 776 use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE bug18293 (IN ins1 CHAR(50),
|
||||||
IN ins2 CHAR(50) CHARACTER SET cp932,
|
IN ins2 CHAR(50) CHARACTER SET cp932,
|
||||||
IN ind DECIMAL(10,2))
|
IN ind DECIMAL(10,2))
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO t4 VALUES (ins1, ins2, ind);
|
INSERT INTO t4 VALUES (ins1, ins2, ind);
|
||||||
END
|
END
|
||||||
master-bin.000001 816 Query 1 1035 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93))
|
master-bin.000001 776 Query 1 995 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93))
|
||||||
master-bin.000001 1035 Query 1 1124 use `test`; DROP PROCEDURE bug18293
|
master-bin.000001 995 Query 1 1084 use `test`; DROP PROCEDURE bug18293
|
||||||
master-bin.000001 1124 Query 1 1203 use `test`; DROP TABLE t4
|
master-bin.000001 1084 Query 1 1163 use `test`; DROP TABLE t4
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
drop table if exists t1;
|
|
||||||
set names cp932;
|
|
||||||
set character_set_database = cp932;
|
|
||||||
RESET MASTER;
|
|
||||||
CREATE TABLE t1(f1 blob);
|
|
||||||
PREPARE stmt1 FROM 'INSERT INTO t1 VALUES(?)';
|
|
||||||
SET @var1= x'8300';
|
|
||||||
EXECUTE stmt1 USING @var1;
|
|
||||||
SHOW BINLOG EVENTS FROM 98;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 98 Query 1 188 use `test`; CREATE TABLE t1(f1 blob)
|
|
||||||
master-bin.000001 188 User var 1 227 @`var1`=_binary 0x8300 COLLATE binary
|
|
||||||
master-bin.000001 227 Query 1 323 use `test`; INSERT INTO t1 VALUES(@'var1')
|
|
||||||
SELECT HEX(f1) FROM t1;
|
|
||||||
HEX(f1)
|
|
||||||
8300
|
|
||||||
DROP table t1;
|
|
296
mysql-test/r/ctype_ldml.result
Normal file
296
mysql-test/r/ctype_ldml.result
Normal file
@ -0,0 +1,296 @@
|
|||||||
|
drop table if exists t1;
|
||||||
|
set names utf8;
|
||||||
|
show variables like 'character_sets_dir%';
|
||||||
|
Variable_name Value
|
||||||
|
character_sets_dir MYSQL_TEST_DIR/std_data/
|
||||||
|
show collation like 'utf8_test_ci';
|
||||||
|
Collation Charset Id Default Compiled Sortlen
|
||||||
|
utf8_test_ci utf8 240 8
|
||||||
|
create table t1 (c1 char(1) character set utf8 collate utf8_test_ci);
|
||||||
|
insert into t1 values ('a');
|
||||||
|
select * from t1 where c1='b';
|
||||||
|
c1
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
|
show collation like 'ucs2_test_ci';
|
||||||
|
Collation Charset Id Default Compiled Sortlen
|
||||||
|
ucs2_test_ci ucs2 241 8
|
||||||
|
create table t1 (c1 char(1) character set ucs2 collate ucs2_test_ci);
|
||||||
|
insert into t1 values ('a');
|
||||||
|
select * from t1 where c1='b';
|
||||||
|
c1
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
|
show collation like 'ucs2_vn_ci';
|
||||||
|
Collation Charset Id Default Compiled Sortlen
|
||||||
|
ucs2_vn_ci ucs2 242 8
|
||||||
|
create table t1 (c1 char(1) character set ucs2 collate ucs2_vn_ci);
|
||||||
|
insert into t1 values (0x0061),(0x0041),(0x00E0),(0x00C0),(0x1EA3),(0x1EA2),
|
||||||
|
(0x00E3),(0x00C3),(0x00E1),(0x00C1),(0x1EA1),(0x1EA0);
|
||||||
|
insert into t1 values (0x0103),(0x0102),(0x1EB1),(0x1EB0),(0x1EB3),(0x1EB2),
|
||||||
|
(0x1EB5),(0x1EB4),(0x1EAF),(0x1EAE),(0x1EB7),(0x1EB6);
|
||||||
|
insert into t1 values (0x00E2),(0x00C2),(0x1EA7),(0x1EA6),(0x1EA9),(0x1EA8),
|
||||||
|
(0x1EAB),(0x1EAA),(0x1EA5),(0x1EA4),(0x1EAD),(0x1EAC);
|
||||||
|
insert into t1 values ('b'),('B'),('c'),('C');
|
||||||
|
insert into t1 values ('d'),('D'),(0x0111),(0x0110);
|
||||||
|
insert into t1 values (0x0065),(0x0045),(0x00E8),(0x00C8),(0x1EBB),(0x1EBA),
|
||||||
|
(0x1EBD),(0x1EBC),(0x00E9),(0x00C9),(0x1EB9),(0x1EB8);
|
||||||
|
insert into t1 values (0x00EA),(0x00CA),(0x1EC1),(0x1EC0),(0x1EC3),(0x1EC2),
|
||||||
|
(0x1EC5),(0x1EC4),(0x1EBF),(0x1EBE),(0x1EC7),(0x1EC6);
|
||||||
|
insert into t1 values ('g'),('G'),('h'),('H');
|
||||||
|
insert into t1 values (0x0069),(0x0049),(0x00EC),(0x00CC),(0x1EC9),(0x1EC8),
|
||||||
|
(0x0129),(0x0128),(0x00ED),(0x00CD),(0x1ECB),(0x1ECA);
|
||||||
|
insert into t1 values ('k'),('K'),('l'),('L'),('m'),('M');
|
||||||
|
insert into t1 values (0x006F),(0x004F),(0x00F2),(0x00D2),(0x1ECF),(0x1ECE),
|
||||||
|
(0x00F5),(0x00D5),(0x00F3),(0x00D3),(0x1ECD),(0x1ECC);
|
||||||
|
insert into t1 values (0x00F4),(0x00D4),(0x1ED3),(0x1ED2),(0x1ED5),(0x1ED4),
|
||||||
|
(0x1ED7),(0x1ED6),(0x1ED1),(0x1ED0),(0x1ED9),(0x1ED8);
|
||||||
|
insert into t1 values (0x01A1),(0x01A0),(0x1EDD),(0x1EDC),(0x1EDF),(0x1EDE),
|
||||||
|
(0x1EE1),(0x1EE0),(0x1EDB),(0x1EDA),(0x1EE3),(0x1EE2);
|
||||||
|
insert into t1 values ('p'),('P'),('q'),('Q'),('r'),('R'),('s'),('S'),('t'),('T');
|
||||||
|
insert into t1 values (0x0075),(0x0055),(0x00F9),(0x00D9),(0x1EE7),(0x1EE6),
|
||||||
|
(0x0169),(0x0168),(0x00FA),(0x00DA),(0x1EE5),(0x1EE4);
|
||||||
|
insert into t1 values (0x01B0),(0x01AF),(0x1EEB),(0x1EEA),(0x1EED),(0x1EEC),
|
||||||
|
(0x1EEF),(0x1EEE),(0x1EE9),(0x1EE8),(0x1EF1),(0x1EF0);
|
||||||
|
insert into t1 values ('v'),('V'),('x'),('X');
|
||||||
|
insert into t1 values (0x0079),(0x0059),(0x1EF3),(0x1EF2),(0x1EF7),(0x1EF6),
|
||||||
|
(0x1EF9),(0x1EF8),(0x00FD),(0x00DD),(0x1EF5),(0x1EF4);
|
||||||
|
select hex(c1) as h, c1 from t1 order by c1, h;
|
||||||
|
h c1
|
||||||
|
0041 A
|
||||||
|
0061 a
|
||||||
|
00C0 À
|
||||||
|
00C1 Á
|
||||||
|
00C3 Ã
|
||||||
|
00E0 à
|
||||||
|
00E1 á
|
||||||
|
00E3 ã
|
||||||
|
1EA0 Ạ
|
||||||
|
1EA1 ạ
|
||||||
|
1EA2 Ả
|
||||||
|
1EA3 ả
|
||||||
|
0102 Ă
|
||||||
|
0103 ă
|
||||||
|
1EAE Ắ
|
||||||
|
1EAF ắ
|
||||||
|
1EB0 Ằ
|
||||||
|
1EB1 ằ
|
||||||
|
1EB2 Ẳ
|
||||||
|
1EB3 ẳ
|
||||||
|
1EB4 Ẵ
|
||||||
|
1EB5 ẵ
|
||||||
|
1EB6 Ặ
|
||||||
|
1EB7 ặ
|
||||||
|
00C2 Â
|
||||||
|
00E2 â
|
||||||
|
1EA4 Ấ
|
||||||
|
1EA5 ấ
|
||||||
|
1EA6 Ầ
|
||||||
|
1EA7 ầ
|
||||||
|
1EA8 Ẩ
|
||||||
|
1EA9 ẩ
|
||||||
|
1EAA Ẫ
|
||||||
|
1EAB ẫ
|
||||||
|
1EAC Ậ
|
||||||
|
1EAD ậ
|
||||||
|
0042 B
|
||||||
|
0062 b
|
||||||
|
0043 C
|
||||||
|
0063 c
|
||||||
|
0044 D
|
||||||
|
0064 d
|
||||||
|
0110 Đ
|
||||||
|
0111 đ
|
||||||
|
0045 E
|
||||||
|
0065 e
|
||||||
|
00C8 È
|
||||||
|
00C9 É
|
||||||
|
00E8 è
|
||||||
|
00E9 é
|
||||||
|
1EB8 Ẹ
|
||||||
|
1EB9 ẹ
|
||||||
|
1EBA Ẻ
|
||||||
|
1EBB ẻ
|
||||||
|
1EBC Ẽ
|
||||||
|
1EBD ẽ
|
||||||
|
00CA Ê
|
||||||
|
00EA ê
|
||||||
|
1EBE Ế
|
||||||
|
1EBF ế
|
||||||
|
1EC0 Ề
|
||||||
|
1EC1 ề
|
||||||
|
1EC2 Ể
|
||||||
|
1EC3 ể
|
||||||
|
1EC4 Ễ
|
||||||
|
1EC5 ễ
|
||||||
|
1EC6 Ệ
|
||||||
|
1EC7 ệ
|
||||||
|
0047 G
|
||||||
|
0067 g
|
||||||
|
0048 H
|
||||||
|
0068 h
|
||||||
|
0049 I
|
||||||
|
0069 i
|
||||||
|
00CC Ì
|
||||||
|
00CD Í
|
||||||
|
00EC ì
|
||||||
|
00ED í
|
||||||
|
0128 Ĩ
|
||||||
|
0129 ĩ
|
||||||
|
1EC8 Ỉ
|
||||||
|
1EC9 ỉ
|
||||||
|
1ECA Ị
|
||||||
|
1ECB ị
|
||||||
|
004B K
|
||||||
|
006B k
|
||||||
|
004C L
|
||||||
|
006C l
|
||||||
|
004D M
|
||||||
|
006D m
|
||||||
|
004F O
|
||||||
|
006F o
|
||||||
|
00D2 Ò
|
||||||
|
00D3 Ó
|
||||||
|
00D5 Õ
|
||||||
|
00F2 ò
|
||||||
|
00F3 ó
|
||||||
|
00F5 õ
|
||||||
|
1ECC Ọ
|
||||||
|
1ECD ọ
|
||||||
|
1ECE Ỏ
|
||||||
|
1ECF ỏ
|
||||||
|
00D4 Ô
|
||||||
|
00F4 ô
|
||||||
|
1ED0 Ố
|
||||||
|
1ED1 ố
|
||||||
|
1ED2 Ồ
|
||||||
|
1ED3 ồ
|
||||||
|
1ED4 Ổ
|
||||||
|
1ED5 ổ
|
||||||
|
1ED6 Ỗ
|
||||||
|
1ED7 ỗ
|
||||||
|
1ED8 Ộ
|
||||||
|
1ED9 ộ
|
||||||
|
01A0 Ơ
|
||||||
|
01A1 ơ
|
||||||
|
1EDA Ớ
|
||||||
|
1EDB ớ
|
||||||
|
1EDC Ờ
|
||||||
|
1EDD ờ
|
||||||
|
1EDE Ở
|
||||||
|
1EDF ở
|
||||||
|
1EE0 Ỡ
|
||||||
|
1EE1 ỡ
|
||||||
|
1EE2 Ợ
|
||||||
|
1EE3 ợ
|
||||||
|
0050 P
|
||||||
|
0070 p
|
||||||
|
0051 Q
|
||||||
|
0071 q
|
||||||
|
0052 R
|
||||||
|
0072 r
|
||||||
|
0053 S
|
||||||
|
0073 s
|
||||||
|
0054 T
|
||||||
|
0074 t
|
||||||
|
0055 U
|
||||||
|
0075 u
|
||||||
|
00D9 Ù
|
||||||
|
00DA Ú
|
||||||
|
00F9 ù
|
||||||
|
00FA ú
|
||||||
|
0168 Ũ
|
||||||
|
0169 ũ
|
||||||
|
1EE4 Ụ
|
||||||
|
1EE5 ụ
|
||||||
|
1EE6 Ủ
|
||||||
|
1EE7 ủ
|
||||||
|
01AF Ư
|
||||||
|
01B0 ư
|
||||||
|
1EE8 Ứ
|
||||||
|
1EE9 ứ
|
||||||
|
1EEA Ừ
|
||||||
|
1EEB ừ
|
||||||
|
1EEC Ử
|
||||||
|
1EED ử
|
||||||
|
1EEE Ữ
|
||||||
|
1EEF ữ
|
||||||
|
1EF0 Ự
|
||||||
|
1EF1 ự
|
||||||
|
0056 V
|
||||||
|
0076 v
|
||||||
|
0058 X
|
||||||
|
0078 x
|
||||||
|
0059 Y
|
||||||
|
0079 y
|
||||||
|
00DD Ý
|
||||||
|
00FD ý
|
||||||
|
1EF2 Ỳ
|
||||||
|
1EF3 ỳ
|
||||||
|
1EF4 Ỵ
|
||||||
|
1EF5 ỵ
|
||||||
|
1EF6 Ỷ
|
||||||
|
1EF7 ỷ
|
||||||
|
1EF8 Ỹ
|
||||||
|
1EF9 ỹ
|
||||||
|
select group_concat(hex(c1) order by hex(c1)) from t1 group by c1;
|
||||||
|
group_concat(hex(c1) order by hex(c1))
|
||||||
|
0041,0061,00C0,00C1,00C3,00E0,00E1,00E3,1EA0,1EA1,1EA2,1EA3
|
||||||
|
0102,0103,1EAE,1EAF,1EB0,1EB1,1EB2,1EB3,1EB4,1EB5,1EB6,1EB7
|
||||||
|
00C2,00E2,1EA4,1EA5,1EA6,1EA7,1EA8,1EA9,1EAA,1EAB,1EAC,1EAD
|
||||||
|
0042,0062
|
||||||
|
0043,0063
|
||||||
|
0044,0064
|
||||||
|
0110,0111
|
||||||
|
0045,0065,00C8,00C9,00E8,00E9,1EB8,1EB9,1EBA,1EBB,1EBC,1EBD
|
||||||
|
00CA,00EA,1EBE,1EBF,1EC0,1EC1,1EC2,1EC3,1EC4,1EC5,1EC6,1EC7
|
||||||
|
0047,0067
|
||||||
|
0048,0068
|
||||||
|
0049,0069,00CC,00CD,00EC,00ED,0128,0129,1EC8,1EC9,1ECA,1ECB
|
||||||
|
004B,006B
|
||||||
|
004C,006C
|
||||||
|
004D,006D
|
||||||
|
004F,006F,00D2,00D3,00D5,00F2,00F3,00F5,1ECC,1ECD,1ECE,1ECF
|
||||||
|
00D4,00F4,1ED0,1ED1,1ED2,1ED3,1ED4,1ED5,1ED6,1ED7,1ED8,1ED9
|
||||||
|
01A0,01A1,1EDA,1EDB,1EDC,1EDD,1EDE,1EDF,1EE0,1EE1,1EE2,1EE3
|
||||||
|
0050,0070
|
||||||
|
0051,0071
|
||||||
|
0052,0072
|
||||||
|
0053,0073
|
||||||
|
0054,0074
|
||||||
|
0055,0075,00D9,00DA,00F9,00FA,0168,0169,1EE4,1EE5,1EE6,1EE7
|
||||||
|
01AF,01B0,1EE8,1EE9,1EEA,1EEB,1EEC,1EED,1EEE,1EEF,1EF0,1EF1
|
||||||
|
0056,0076
|
||||||
|
0058,0078
|
||||||
|
0059,0079,00DD,00FD,1EF2,1EF3,1EF4,1EF5,1EF6,1EF7,1EF8,1EF9
|
||||||
|
select group_concat(c1 order by hex(c1) SEPARATOR '') from t1 group by c1;
|
||||||
|
group_concat(c1 order by hex(c1) SEPARATOR '')
|
||||||
|
AaÀÁÃàáãẠạẢả
|
||||||
|
ĂăẮắẰằẲẳẴẵẶặ
|
||||||
|
ÂâẤấẦầẨẩẪẫẬậ
|
||||||
|
Bb
|
||||||
|
Cc
|
||||||
|
Dd
|
||||||
|
Đđ
|
||||||
|
EeÈÉèéẸẹẺẻẼẽ
|
||||||
|
ÊêẾếỀềỂểỄễỆệ
|
||||||
|
Gg
|
||||||
|
Hh
|
||||||
|
IiÌÍìíĨĩỈỉỊị
|
||||||
|
Kk
|
||||||
|
Ll
|
||||||
|
Mm
|
||||||
|
OoÒÓÕòóõỌọỎỏ
|
||||||
|
ÔôỐốỒồỔổỖỗỘộ
|
||||||
|
ƠơỚớỜờỞởỠỡỢợ
|
||||||
|
Pp
|
||||||
|
Qq
|
||||||
|
Rr
|
||||||
|
Ss
|
||||||
|
Tt
|
||||||
|
UuÙÚùúŨũỤụỦủ
|
||||||
|
ƯưỨứỪừỬửỮữỰự
|
||||||
|
Vv
|
||||||
|
Xx
|
||||||
|
YyÝýỲỳỴỵỶỷỸỹ
|
||||||
|
drop table t1;
|
@ -2663,3 +2663,95 @@ COUNT(*) c1
|
|||||||
1
|
1
|
||||||
1 a
|
1 a
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
|
set names utf8;
|
||||||
|
create table t1 (
|
||||||
|
a varchar(255),
|
||||||
|
key a(a)
|
||||||
|
) character set utf8 collate utf8_danish_ci;
|
||||||
|
insert into t1 values ('åaaaa'),('ååaaa'),('aaaaa');
|
||||||
|
select a as like_a from t1 where a like 'a%';
|
||||||
|
like_a
|
||||||
|
aaaaa
|
||||||
|
select a as like_aa from t1 where a like 'aa%';
|
||||||
|
like_aa
|
||||||
|
aaaaa
|
||||||
|
select a as like_aaa from t1 where a like 'aaa%';
|
||||||
|
like_aaa
|
||||||
|
aaaaa
|
||||||
|
select a as like_aaaa from t1 where a like 'aaaa%';
|
||||||
|
like_aaaa
|
||||||
|
aaaaa
|
||||||
|
select a as like_aaaaa from t1 where a like 'aaaaa%';
|
||||||
|
like_aaaaa
|
||||||
|
aaaaa
|
||||||
|
alter table t1 convert to character set ucs2 collate ucs2_danish_ci;
|
||||||
|
select a as like_a from t1 where a like 'a%';
|
||||||
|
like_a
|
||||||
|
aaaaa
|
||||||
|
select a as like_aa from t1 where a like 'aa%';
|
||||||
|
like_aa
|
||||||
|
aaaaa
|
||||||
|
select a as like_aaa from t1 where a like 'aaa%';
|
||||||
|
like_aaa
|
||||||
|
aaaaa
|
||||||
|
select a as like_aaaa from t1 where a like 'aaaa%';
|
||||||
|
like_aaaa
|
||||||
|
aaaaa
|
||||||
|
select a as like_aaaaa from t1 where a like 'aaaaa%';
|
||||||
|
like_aaaaa
|
||||||
|
aaaaa
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
|
a varchar(255),
|
||||||
|
key(a)
|
||||||
|
) character set utf8 collate utf8_spanish2_ci;
|
||||||
|
insert into t1 values ('aaaaa'),('lllll'),('zzzzz');
|
||||||
|
select a as like_l from t1 where a like 'l%';
|
||||||
|
like_l
|
||||||
|
lllll
|
||||||
|
select a as like_ll from t1 where a like 'll%';
|
||||||
|
like_ll
|
||||||
|
lllll
|
||||||
|
select a as like_lll from t1 where a like 'lll%';
|
||||||
|
like_lll
|
||||||
|
lllll
|
||||||
|
select a as like_llll from t1 where a like 'llll%';
|
||||||
|
like_llll
|
||||||
|
lllll
|
||||||
|
select a as like_lllll from t1 where a like 'lllll%';
|
||||||
|
like_lllll
|
||||||
|
lllll
|
||||||
|
alter table t1 convert to character set ucs2 collate ucs2_spanish2_ci;
|
||||||
|
select a as like_l from t1 where a like 'l%';
|
||||||
|
like_l
|
||||||
|
lllll
|
||||||
|
select a as like_ll from t1 where a like 'll%';
|
||||||
|
like_ll
|
||||||
|
lllll
|
||||||
|
select a as like_lll from t1 where a like 'lll%';
|
||||||
|
like_lll
|
||||||
|
lllll
|
||||||
|
select a as like_llll from t1 where a like 'llll%';
|
||||||
|
like_llll
|
||||||
|
lllll
|
||||||
|
select a as like_lllll from t1 where a like 'lllll%';
|
||||||
|
like_lllll
|
||||||
|
lllll
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
|
a varchar(255),
|
||||||
|
key a(a)
|
||||||
|
) character set utf8 collate utf8_czech_ci;
|
||||||
|
insert into t1 values
|
||||||
|
('b'),('c'),('d'),('e'),('f'),('g'),('h'),('ch'),('i'),('j');
|
||||||
|
select * from t1 where a like 'c%';
|
||||||
|
a
|
||||||
|
c
|
||||||
|
ch
|
||||||
|
alter table t1 convert to character set ucs2 collate ucs2_czech_ci;
|
||||||
|
select * from t1 where a like 'c%';
|
||||||
|
a
|
||||||
|
c
|
||||||
|
ch
|
||||||
|
drop table t1;
|
||||||
|
End for 5.0 tests
|
||||||
|
@ -865,4 +865,25 @@ blob 65535 65535
|
|||||||
text 65535 65535
|
text 65535 65535
|
||||||
text 65535 32767
|
text 65535 32767
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a char(1) character set ucs2);
|
||||||
|
insert into t1 values ('a'),('b'),('c');
|
||||||
|
select hex(group_concat(a)) from t1;
|
||||||
|
hex(group_concat(a))
|
||||||
|
0061002C0062002C0063
|
||||||
|
select collation(group_concat(a)) from t1;
|
||||||
|
collation(group_concat(a))
|
||||||
|
ucs2_general_ci
|
||||||
|
drop table t1;
|
||||||
|
set names latin1;
|
||||||
|
create table t1 (a char(1) character set latin1);
|
||||||
|
insert into t1 values ('a'),('b'),('c');
|
||||||
|
set character_set_connection=ucs2;
|
||||||
|
select hex(group_concat(a separator ',')) from t1;
|
||||||
|
hex(group_concat(a separator ','))
|
||||||
|
612C622C63
|
||||||
|
select collation(group_concat(a separator ',')) from t1;
|
||||||
|
collation(group_concat(a separator ','))
|
||||||
|
latin1_swedish_ci
|
||||||
|
drop table t1;
|
||||||
|
set names latin1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -7,3 +7,18 @@ character_set_server ucs2
|
|||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
End of 4.1 tests
|
||||||
|
create table t1 (a char(1) character set latin1);
|
||||||
|
insert into t1 values ('a'),('b'),('c');
|
||||||
|
select hex(group_concat(a)) from t1;
|
||||||
|
hex(group_concat(a))
|
||||||
|
612C622C63
|
||||||
|
drop table t1;
|
||||||
|
CREATE TABLE t1(col1 VARCHAR(32) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL,
|
||||||
|
col2 VARCHAR(32) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL,
|
||||||
|
UNIQUE KEY key1 USING HASH (col1, col2)) ENGINE=MEMORY;
|
||||||
|
INSERT INTO t1 VALUES('A', 'A'), ('B', 'B'), ('C', 'C');
|
||||||
|
INSERT INTO t1 VALUES('A ', 'A ');
|
||||||
|
ERROR 23000: Duplicate entry '' for key 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
End of 5.0 tests
|
||||||
|
@ -1657,3 +1657,40 @@ colA colB colA colB
|
|||||||
1 foo 1 foo
|
1 foo 1 foo
|
||||||
2 foo bar 2 foo bar
|
2 foo bar 2 foo bar
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
SELECT 'н1234567890' UNION SELECT _binary '1';
|
||||||
|
н1234567890
|
||||||
|
н1234567890
|
||||||
|
1
|
||||||
|
SELECT 'н1234567890' UNION SELECT 1;
|
||||||
|
н1234567890
|
||||||
|
н1234567890
|
||||||
|
1
|
||||||
|
SELECT '1' UNION SELECT 'н1234567890';
|
||||||
|
1
|
||||||
|
1
|
||||||
|
н1234567890
|
||||||
|
SELECT 1 UNION SELECT 'н1234567890';
|
||||||
|
1
|
||||||
|
1
|
||||||
|
н1234567890
|
||||||
|
CREATE TABLE t1 (c VARCHAR(11)) CHARACTER SET utf8;
|
||||||
|
CREATE TABLE t2 (b CHAR(1) CHARACTER SET binary, i INT);
|
||||||
|
INSERT INTO t1 (c) VALUES ('н1234567890');
|
||||||
|
INSERT INTO t2 (b, i) VALUES ('1', 1);
|
||||||
|
SELECT c FROM t1 UNION SELECT b FROM t2;
|
||||||
|
c
|
||||||
|
н1234567890
|
||||||
|
1
|
||||||
|
SELECT c FROM t1 UNION SELECT i FROM t2;
|
||||||
|
c
|
||||||
|
н1234567890
|
||||||
|
1
|
||||||
|
SELECT b FROM t2 UNION SELECT c FROM t1;
|
||||||
|
b
|
||||||
|
1
|
||||||
|
н1234567890
|
||||||
|
SELECT i FROM t2 UNION SELECT c FROM t1;
|
||||||
|
i
|
||||||
|
1
|
||||||
|
н1234567890
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
19
mysql-test/r/error_simulation.result
Normal file
19
mysql-test/r/error_simulation.result
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a varchar(32) character set utf8 collate utf8_bin NOT NULL,
|
||||||
|
b varchar(32) character set utf8 collate utf8_bin NOT NULL )
|
||||||
|
ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
('AAAAAAAAAA','AAAAAAAAAA'), ('AAAAAAAAAB','AAAAAAAAAB '),
|
||||||
|
('AAAAAAAAAB','AAAAAAAAAB'), ('AAAAAAAAAC','AAAAAAAAAC'),
|
||||||
|
('AAAAAAAAAD','AAAAAAAAAD'), ('AAAAAAAAAE','AAAAAAAAAE'),
|
||||||
|
('AAAAAAAAAF','AAAAAAAAAF'), ('AAAAAAAAAG','AAAAAAAAAG'),
|
||||||
|
('AAAAAAAAAH','AAAAAAAAAH'), ('AAAAAAAAAI','AAAAAAAAAI'),
|
||||||
|
('AAAAAAAAAJ','AAAAAAAAAJ'), ('AAAAAAAAAK','AAAAAAAAAK');
|
||||||
|
set tmp_table_size=1024;
|
||||||
|
SELECT MAX(a) FROM t1 GROUP BY a,b;
|
||||||
|
ERROR 23000: Can't write; duplicate key in table ''
|
||||||
|
set tmp_table_size=default;
|
||||||
|
DROP TABLE t1;
|
@ -41,3 +41,17 @@ SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
|
|||||||
a
|
a
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1( a INT );
|
||||||
|
SELECT b FROM t1;
|
||||||
|
ERROR 42S22: Unknown column 'b' in 'field list'
|
||||||
|
SHOW ERRORS;
|
||||||
|
Level Code Message
|
||||||
|
Error 1054 Unknown column 'b' in 'field list'
|
||||||
|
CREATE TABLE t2 SELECT b FROM t1;
|
||||||
|
ERROR 42S22: Unknown column 'b' in 'field list'
|
||||||
|
SHOW ERRORS;
|
||||||
|
Level Code Message
|
||||||
|
Error 1054 Unknown column 'b' in 'field list'
|
||||||
|
INSERT INTO t1 SELECT b FROM t1;
|
||||||
|
ERROR 42S22: Unknown column 'b' in 'field list'
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -1843,6 +1843,45 @@ C3A4C3B6C3BCC39F
|
|||||||
D18DD184D184D0B5D0BAD182D0B8D0B2D0BDD183D18E
|
D18DD184D184D0B5D0BAD182D0B8D0B2D0BDD183D18E
|
||||||
drop table federated.t1;
|
drop table federated.t1;
|
||||||
drop table federated.t1;
|
drop table federated.t1;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
DEFAULT CHARSET=utf8;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
ENGINE=FEDERATED
|
||||||
|
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1'
|
||||||
|
DEFAULT CHARSET=utf8;
|
||||||
|
insert ignore into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Larry
|
||||||
|
2 Curly
|
||||||
|
truncate federated.t1;
|
||||||
|
replace into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Moe
|
||||||
|
2 Curly
|
||||||
|
update ignore federated.t1 set a=a+1;
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Moe
|
||||||
|
3 Curly
|
||||||
|
drop table federated.t1;
|
||||||
|
drop table federated.t1;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
DEFAULT CHARSET=utf8;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
ENGINE=FEDERATED
|
||||||
|
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1'
|
||||||
|
DEFAULT CHARSET=utf8;
|
||||||
|
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe")
|
||||||
|
on duplicate key update a=a+100;
|
||||||
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Larry
|
||||||
|
2 Curly
|
||||||
|
drop table federated.t1;
|
||||||
|
drop table federated.t1;
|
||||||
DROP TABLE IF EXISTS federated.t1;
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
DROP DATABASE IF EXISTS federated;
|
DROP DATABASE IF EXISTS federated;
|
||||||
DROP TABLE IF EXISTS federated.t1;
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
34
mysql-test/r/federated_innodb.result
Normal file
34
mysql-test/r/federated_innodb.result
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
stop slave;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
||||||
|
CREATE DATABASE federated;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
||||||
|
CREATE DATABASE federated;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
engine=myisam;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
engine=federated
|
||||||
|
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1';
|
||||||
|
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||||
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Larry
|
||||||
|
2 Curly
|
||||||
|
truncate federated.t1;
|
||||||
|
alter table federated.t1 engine=innodb;
|
||||||
|
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||||
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
drop table federated.t1;
|
||||||
|
drop table federated.t1;
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
13
mysql-test/r/fulltext3.result
Normal file
13
mysql-test/r/fulltext3.result
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a));
|
||||||
|
SET NAMES utf8;
|
||||||
|
INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161);
|
||||||
|
SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE);
|
||||||
|
HEX(a)
|
||||||
|
BEF361616197C22061616161
|
||||||
|
DELETE FROM t1 LIMIT 1;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
SET NAMES latin1;
|
||||||
|
DROP TABLE t1;
|
@ -84,4 +84,15 @@ CAST('2006-09-26' AS DATE) + INTERVAL 1 YEAR
|
|||||||
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK;
|
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK;
|
||||||
CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK
|
CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK
|
||||||
2006-10-03
|
2006-10-03
|
||||||
|
create table t1 (a int, b varchar(10));
|
||||||
|
insert into t1 values (1, '2001-01-01'),(2, '2002-02-02');
|
||||||
|
select '2007-01-01' + interval a day from t1;
|
||||||
|
'2007-01-01' + interval a day
|
||||||
|
2007-01-02
|
||||||
|
2007-01-03
|
||||||
|
select b + interval a day from t1;
|
||||||
|
b + interval a day
|
||||||
|
2001-01-02
|
||||||
|
2002-02-04
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -763,4 +763,51 @@ Warnings:
|
|||||||
Warning 1260 1 line(s) were cut by GROUP_CONCAT()
|
Warning 1260 1 line(s) were cut by GROUP_CONCAT()
|
||||||
SET group_concat_max_len = DEFAULT;
|
SET group_concat_max_len = DEFAULT;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SET group_concat_max_len= 65535;
|
||||||
|
CREATE TABLE t1( a TEXT, b INTEGER );
|
||||||
|
INSERT INTO t1 VALUES ( 'a', 0 ), ( 'b', 1 );
|
||||||
|
SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1;
|
||||||
|
GROUP_CONCAT( a ORDER BY b )
|
||||||
|
a,b
|
||||||
|
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
|
||||||
|
GROUP_CONCAT(DISTINCT a ORDER BY b)
|
||||||
|
a,b
|
||||||
|
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
|
||||||
|
GROUP_CONCAT(DISTINCT a)
|
||||||
|
a,b
|
||||||
|
SET group_concat_max_len= 10;
|
||||||
|
SELECT GROUP_CONCAT(a ORDER BY b) FROM t1;
|
||||||
|
GROUP_CONCAT(a ORDER BY b)
|
||||||
|
a,b
|
||||||
|
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
|
||||||
|
GROUP_CONCAT(DISTINCT a ORDER BY b)
|
||||||
|
a,b
|
||||||
|
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
|
||||||
|
GROUP_CONCAT(DISTINCT a)
|
||||||
|
a,b
|
||||||
|
SET group_concat_max_len= 65535;
|
||||||
|
CREATE TABLE t2( a TEXT );
|
||||||
|
INSERT INTO t2 VALUES( REPEAT( 'a', 5000 ) );
|
||||||
|
INSERT INTO t2 VALUES( REPEAT( 'b', 5000 ) );
|
||||||
|
INSERT INTO t2 VALUES( REPEAT( 'a', 5000 ) );
|
||||||
|
SELECT LENGTH( GROUP_CONCAT( DISTINCT a ) ) FROM t2;
|
||||||
|
LENGTH( GROUP_CONCAT( DISTINCT a ) )
|
||||||
|
10001
|
||||||
|
CREATE TABLE t3( a TEXT, b INT );
|
||||||
|
INSERT INTO t3 VALUES( REPEAT( 'a', 65534 ), 1 );
|
||||||
|
INSERT INTO t3 VALUES( REPEAT( 'a', 65535 ), 2 );
|
||||||
|
INSERT INTO t3 VALUES( REPEAT( 'a', 65536 ), 3 );
|
||||||
|
Warnings:
|
||||||
|
Warning 1265 Data truncated for column 'a' at row 1
|
||||||
|
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 1;
|
||||||
|
LENGTH( GROUP_CONCAT( a ) )
|
||||||
|
65534
|
||||||
|
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 2;
|
||||||
|
LENGTH( GROUP_CONCAT( a ) )
|
||||||
|
65535
|
||||||
|
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 3;
|
||||||
|
LENGTH( GROUP_CONCAT( a ) )
|
||||||
|
65535
|
||||||
|
SET group_concat_max_len= DEFAULT;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -431,15 +431,17 @@ insert into t2 values(13491727406643098568),
|
|||||||
(0x8000000400000001),
|
(0x8000000400000001),
|
||||||
(0x8000004000000001),
|
(0x8000004000000001),
|
||||||
(0x8000040000000001);
|
(0x8000040000000001);
|
||||||
SELECT HEX(a) FROM t2 WHERE a IN (0xBB3C3E98175D33C8, 42);
|
SELECT HEX(a) FROM t2 WHERE a IN
|
||||||
|
(CAST(0xBB3C3E98175D33C8 AS UNSIGNED),
|
||||||
|
42);
|
||||||
HEX(a)
|
HEX(a)
|
||||||
BB3C3E98175D33C8
|
BB3C3E98175D33C8
|
||||||
SELECT HEX(a) FROM t2 WHERE a IN
|
SELECT HEX(a) FROM t2 WHERE a IN
|
||||||
(0xBB3C3E98175D33C8,
|
(CAST(0xBB3C3E98175D33C8 AS UNSIGNED),
|
||||||
0x7fffffffffffffff,
|
CAST(0x7fffffffffffffff AS UNSIGNED),
|
||||||
0x8000000000000000,
|
CAST(0x8000000000000000 AS UNSIGNED),
|
||||||
0x8000000000000400,
|
CAST(0x8000000000000400 AS UNSIGNED),
|
||||||
0x8000000000000401,
|
CAST(0x8000000000000401 AS UNSIGNED),
|
||||||
42);
|
42);
|
||||||
HEX(a)
|
HEX(a)
|
||||||
BB3C3E98175D33C8
|
BB3C3E98175D33C8
|
||||||
@ -447,15 +449,22 @@ BB3C3E98175D33C8
|
|||||||
8000000000000000
|
8000000000000000
|
||||||
8000000000000400
|
8000000000000400
|
||||||
8000000000000401
|
8000000000000401
|
||||||
SELECT HEX(a) FROM t2 WHERE a IN (0x7fffffffffffffff,0x8000000000000001);
|
SELECT HEX(a) FROM t2 WHERE a IN
|
||||||
|
(CAST(0x7fffffffffffffff AS UNSIGNED),
|
||||||
|
CAST(0x8000000000000001 AS UNSIGNED));
|
||||||
HEX(a)
|
HEX(a)
|
||||||
7FFFFFFFFFFFFFFF
|
7FFFFFFFFFFFFFFF
|
||||||
8000000000000001
|
8000000000000001
|
||||||
SELECT HEX(a) FROM t2 WHERE a IN (0x7ffffffffffffffe,0x7fffffffffffffff);
|
SELECT HEX(a) FROM t2 WHERE a IN
|
||||||
|
(CAST(0x7ffffffffffffffe AS UNSIGNED),
|
||||||
|
CAST(0x7fffffffffffffff AS UNSIGNED));
|
||||||
HEX(a)
|
HEX(a)
|
||||||
7FFFFFFFFFFFFFFE
|
7FFFFFFFFFFFFFFE
|
||||||
7FFFFFFFFFFFFFFF
|
7FFFFFFFFFFFFFFF
|
||||||
SELECT HEX(a) FROM t2 WHERE a IN (0x7ffffffffffffffe,0x7fffffffffffffff,'abc');
|
SELECT HEX(a) FROM t2 WHERE a IN
|
||||||
|
(0x7ffffffffffffffe,
|
||||||
|
0x7fffffffffffffff,
|
||||||
|
'abc');
|
||||||
HEX(a)
|
HEX(a)
|
||||||
7FFFFFFFFFFFFFFE
|
7FFFFFFFFFFFFFFE
|
||||||
7FFFFFFFFFFFFFFF
|
7FFFFFFFFFFFFFFF
|
||||||
|
@ -2061,4 +2061,96 @@ C
|
|||||||
2707236321
|
2707236321
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
SELECT LOCATE('foo', NULL) FROM DUAL;
|
||||||
|
LOCATE('foo', NULL)
|
||||||
|
NULL
|
||||||
|
SELECT LOCATE(NULL, 'o') FROM DUAL;
|
||||||
|
LOCATE(NULL, 'o')
|
||||||
|
NULL
|
||||||
|
SELECT LOCATE(NULL, NULL) FROM DUAL;
|
||||||
|
LOCATE(NULL, NULL)
|
||||||
|
NULL
|
||||||
|
SELECT LOCATE('foo', NULL) IS NULL FROM DUAL;
|
||||||
|
LOCATE('foo', NULL) IS NULL
|
||||||
|
1
|
||||||
|
SELECT LOCATE(NULL, 'o') IS NULL FROM DUAL;
|
||||||
|
LOCATE(NULL, 'o') IS NULL
|
||||||
|
1
|
||||||
|
SELECT LOCATE(NULL, NULL) IS NULL FROM DUAL;
|
||||||
|
LOCATE(NULL, NULL) IS NULL
|
||||||
|
1
|
||||||
|
SELECT ISNULL(LOCATE('foo', NULL)) FROM DUAL;
|
||||||
|
ISNULL(LOCATE('foo', NULL))
|
||||||
|
1
|
||||||
|
SELECT ISNULL(LOCATE(NULL, 'o')) FROM DUAL;
|
||||||
|
ISNULL(LOCATE(NULL, 'o'))
|
||||||
|
1
|
||||||
|
SELECT ISNULL(LOCATE(NULL, NULL)) FROM DUAL;
|
||||||
|
ISNULL(LOCATE(NULL, NULL))
|
||||||
|
1
|
||||||
|
SELECT LOCATE('foo', NULL) <=> NULL FROM DUAL;
|
||||||
|
LOCATE('foo', NULL) <=> NULL
|
||||||
|
1
|
||||||
|
SELECT LOCATE(NULL, 'o') <=> NULL FROM DUAL;
|
||||||
|
LOCATE(NULL, 'o') <=> NULL
|
||||||
|
1
|
||||||
|
SELECT LOCATE(NULL, NULL) <=> NULL FROM DUAL;
|
||||||
|
LOCATE(NULL, NULL) <=> NULL
|
||||||
|
1
|
||||||
|
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, a varchar(10), p varchar(10));
|
||||||
|
INSERT INTO t1 VALUES (1, 'foo', 'o');
|
||||||
|
INSERT INTO t1 VALUES (2, 'foo', NULL);
|
||||||
|
INSERT INTO t1 VALUES (3, NULL, 'o');
|
||||||
|
INSERT INTO t1 VALUES (4, NULL, NULL);
|
||||||
|
SELECT id, LOCATE(a,p) FROM t1;
|
||||||
|
id LOCATE(a,p)
|
||||||
|
1 0
|
||||||
|
2 NULL
|
||||||
|
3 NULL
|
||||||
|
4 NULL
|
||||||
|
SELECT id, LOCATE(a,p) IS NULL FROM t1;
|
||||||
|
id LOCATE(a,p) IS NULL
|
||||||
|
1 0
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
4 1
|
||||||
|
SELECT id, ISNULL(LOCATE(a,p)) FROM t1;
|
||||||
|
id ISNULL(LOCATE(a,p))
|
||||||
|
1 0
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
4 1
|
||||||
|
SELECT id, LOCATE(a,p) <=> NULL FROM t1;
|
||||||
|
id LOCATE(a,p) <=> NULL
|
||||||
|
1 0
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
4 1
|
||||||
|
SELECT id FROM t1 WHERE LOCATE(a,p) IS NULL;
|
||||||
|
id
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
SELECT id FROM t1 WHERE LOCATE(a,p) <=> NULL;
|
||||||
|
id
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
DROP TABLE t1;
|
||||||
|
SELECT SUBSTR('foo',1,0) FROM DUAL;
|
||||||
|
SUBSTR('foo',1,0)
|
||||||
|
|
||||||
|
SELECT SUBSTR('foo',1,CAST(0 AS SIGNED)) FROM DUAL;
|
||||||
|
SUBSTR('foo',1,CAST(0 AS SIGNED))
|
||||||
|
|
||||||
|
SELECT SUBSTR('foo',1,CAST(0 AS UNSIGNED)) FROM DUAL;
|
||||||
|
SUBSTR('foo',1,CAST(0 AS UNSIGNED))
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a varchar(10), len int unsigned);
|
||||||
|
INSERT INTO t1 VALUES ('bar', 2), ('foo', 0);
|
||||||
|
SELECT SUBSTR(a,1,len) FROM t1;
|
||||||
|
SUBSTR(a,1,len)
|
||||||
|
ba
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user