mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge bk-internal.mysql.com:/data0/bk/mysql-5.1-new
into bk-internal.mysql.com:/data0/bk/mysql-5.1-kt include/my_sys.h: Auto merged sql/mysqld.cc: Auto merged sql/sql_base.cc: Auto merged
This commit is contained in:
@ -82,8 +82,11 @@ path=`dirname $0`
|
||||
export AM_MAKEFLAGS
|
||||
AM_MAKEFLAGS="-j 4"
|
||||
|
||||
# SSL library to use.
|
||||
SSL_LIBRARY=--with-yassl
|
||||
# SSL library to use.--with-ssl will select our bundled yaSSL
|
||||
# implementation of SSL. To use openSSl you will nee too point out
|
||||
# the location of openSSL headers and lbs on your system.
|
||||
# Ex --with-ssl=/usr
|
||||
SSL_LIBRARY=--with-ssl
|
||||
|
||||
if [ "x$warning_mode" != "xpedantic" ]; then
|
||||
# Both C and C++ warnings
|
||||
|
@ -54,7 +54,7 @@ fi
|
||||
--with-federated-storage-engine \
|
||||
--with-berkeley-db \
|
||||
--with-innodb \
|
||||
--with-yassl \
|
||||
--with-ssl \
|
||||
--enable-thread-safe-client \
|
||||
--with-extra-charsets=complex \
|
||||
--with-ndbcluster \
|
||||
|
@ -6,6 +6,6 @@ path=`dirname $0`
|
||||
extra_flags="$pentium_cflags $debug_cflags"
|
||||
extra_configs="$pentium_configs $debug_configs"
|
||||
|
||||
extra_configs="$extra_configs --with-debug=full --with-openssl"
|
||||
extra_configs="$extra_configs --with-debug=full --with-ssl=/usr"
|
||||
|
||||
. "$path/FINISH.sh"
|
||||
|
@ -6,6 +6,6 @@ path=`dirname $0`
|
||||
extra_flags="$pentium_cflags $debug_cflags"
|
||||
extra_configs="$pentium_configs $debug_configs"
|
||||
|
||||
extra_configs="$extra_configs --with-debug=full --with-yassl"
|
||||
extra_configs="$extra_configs --with-debug=full --with-ssl"
|
||||
|
||||
. "$path/FINISH.sh"
|
||||
|
@ -1,136 +0,0 @@
|
||||
AC_DEFUN([MYSQL_FIND_OPENSSL], [
|
||||
incs="$1"
|
||||
libs="$2"
|
||||
eval shrexts=\"$shrext_cmds\"
|
||||
case "$incs---$libs" in
|
||||
---)
|
||||
for d in /usr/ssl/include /usr/local/ssl/include /usr/include \
|
||||
/usr/include/ssl /opt/ssl/include /opt/openssl/include \
|
||||
/usr/local/ssl/include /usr/local/include /usr/freeware/include ; do
|
||||
if test -f $d/openssl/ssl.h ; then
|
||||
OPENSSL_INCLUDE=-I$d
|
||||
fi
|
||||
done
|
||||
|
||||
for d in /usr/ssl/lib /usr/local/ssl/lib /usr/lib/openssl \
|
||||
/usr/lib /usr/lib64 /opt/ssl/lib /opt/openssl/lib \
|
||||
/usr/freeware/lib32 /usr/local/lib/ ; do
|
||||
# Just to be safe, we test for ".so" anyway
|
||||
if test -f $d/libssl.a || test -f $d/libssl.so || test -f $d/libssl$shrext ; then
|
||||
OPENSSL_LIB=$d
|
||||
fi
|
||||
done
|
||||
;;
|
||||
---* | *---)
|
||||
AC_MSG_ERROR([if either 'includes' or 'libs' is specified, both must be specified])
|
||||
;;
|
||||
* )
|
||||
if test -f $incs/openssl/ssl.h ; then
|
||||
OPENSSL_INCLUDE=-I$incs
|
||||
fi
|
||||
# Just to be safe, we test for ".so" anyway
|
||||
if test -f $libs/libssl.a || test -f $libs/libssl.so || test -f $libs/libssl$shrext ; then
|
||||
OPENSSL_LIB=$libs
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# On RedHat 9 we need kerberos to compile openssl
|
||||
for d in /usr/kerberos/include
|
||||
do
|
||||
if test -f $d/krb5.h ; then
|
||||
OPENSSL_KERBEROS_INCLUDE="$d"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INCLUDE" ; then
|
||||
echo "Could not find an installation of OpenSSL"
|
||||
if test -n "$OPENSSL_LIB" ; then
|
||||
if test "$TARGET_LINUX" = "true"; then
|
||||
echo "Looks like you've forgotten to install OpenSSL development RPM"
|
||||
fi
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
|
||||
])
|
||||
|
||||
AC_DEFUN([MYSQL_CHECK_OPENSSL], [
|
||||
AC_MSG_CHECKING(for OpenSSL)
|
||||
AC_ARG_WITH([openssl],
|
||||
[ --with-openssl[=DIR] Include the OpenSSL support],
|
||||
[openssl="$withval"],
|
||||
[openssl=no])
|
||||
|
||||
AC_ARG_WITH([openssl-includes],
|
||||
[
|
||||
--with-openssl-includes=DIR
|
||||
Find OpenSSL headers in DIR],
|
||||
[openssl_includes="$withval"],
|
||||
[openssl_includes=""])
|
||||
|
||||
AC_ARG_WITH([openssl-libs],
|
||||
[
|
||||
--with-openssl-libs=DIR
|
||||
Find OpenSSL libraries in DIR],
|
||||
[openssl_libs="$withval"],
|
||||
[openssl_libs=""])
|
||||
|
||||
if test "$openssl" != "no"
|
||||
then
|
||||
if test "$openssl" != "yes"
|
||||
then
|
||||
if test -z "$openssl_includes"
|
||||
then
|
||||
openssl_includes="$openssl/include"
|
||||
fi
|
||||
if test -z "$openssl_libs"
|
||||
then
|
||||
openssl_libs="$openssl/lib"
|
||||
fi
|
||||
fi
|
||||
MYSQL_FIND_OPENSSL([$openssl_includes], [$openssl_libs])
|
||||
#force VIO use
|
||||
AC_MSG_RESULT(yes)
|
||||
openssl_libs="-L$OPENSSL_LIB -lssl -lcrypto"
|
||||
# Don't set openssl_includes to /usr/include as this gives us a lot of
|
||||
# compiler warnings when using gcc 3.x
|
||||
openssl_includes=""
|
||||
if test "$OPENSSL_INCLUDE" != "-I/usr/include"
|
||||
then
|
||||
openssl_includes="$OPENSSL_INCLUDE"
|
||||
fi
|
||||
if test "$OPENSSL_KERBEROS_INCLUDE"
|
||||
then
|
||||
openssl_includes="$openssl_includes -I$OPENSSL_KERBEROS_INCLUDE"
|
||||
fi
|
||||
AC_DEFINE([HAVE_OPENSSL], [1], [OpenSSL])
|
||||
|
||||
# openssl-devel-0.9.6 requires dlopen() and we can't link staticly
|
||||
# on many platforms (We should actually test this here, but it's quite
|
||||
# hard) to do as we are doing libtool for linking.
|
||||
using_static=""
|
||||
case "$CLIENT_EXTRA_LDFLAGS $MYSQLD_EXTRA_LDFLAGS" in
|
||||
*-all-static*) using_static="yes" ;;
|
||||
esac
|
||||
if test "$using_static" = "yes"
|
||||
then
|
||||
echo "You can't use the --all-static link option when using openssl."
|
||||
exit 1
|
||||
fi
|
||||
NON_THREADED_CLIENT_LIBS="$NON_THREADED_CLIENT_LIBS $openssl_libs"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
if test ! -z "$openssl_includes"
|
||||
then
|
||||
AC_MSG_ERROR(Can't have --with-openssl-includes without --with-openssl);
|
||||
fi
|
||||
if test ! -z "$openssl_libs"
|
||||
then
|
||||
AC_MSG_ERROR(Can't have --with-openssl-libs without --with-openssl);
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(openssl_libs)
|
||||
AC_SUBST(openssl_includes)
|
||||
])
|
200
config/ac-macros/ssl.m4
Normal file
200
config/ac-macros/ssl.m4
Normal file
@ -0,0 +1,200 @@
|
||||
dnl ===========================================================================
|
||||
dnl Support for SSL
|
||||
dnl ===========================================================================
|
||||
dnl
|
||||
dnl
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Macro: MYSQL_USE_BUNDLED_YASSL
|
||||
dnl
|
||||
dnl SYNOPSIS
|
||||
dnl MYSQL_USE_BUNDLED_YASSL()
|
||||
dnl
|
||||
dnl DESCRIPTION
|
||||
dnl Add defines so yassl is built and linked with
|
||||
dnl ---------------------------------------------------------------------------
|
||||
AC_DEFUN([MYSQL_USE_BUNDLED_YASSL], [
|
||||
|
||||
AC_CONFIG_FILES(extra/yassl/Makefile dnl
|
||||
extra/yassl/taocrypt/Makefile dnl
|
||||
extra/yassl/taocrypt/benchmark/Makefile dnl
|
||||
extra/yassl/taocrypt/src/Makefile dnl
|
||||
extra/yassl/taocrypt/test/Makefile dnl
|
||||
extra/yassl/src/Makefile dnl
|
||||
extra/yassl/testsuite/Makefile)
|
||||
|
||||
with_yassl="yes"
|
||||
|
||||
yassl_dir="yassl"
|
||||
AC_SUBST([yassl_dir])
|
||||
|
||||
yassl_libs="-L\$(top_srcdir)/extra/yassl/src -lyassl -L\$(top_srcdir)/extra/yassl/taocrypt/src -ltaocrypt"
|
||||
AC_SUBST(yassl_libs)
|
||||
yassl_includes="-I\$(top_srcdir)/extra/yassl/include"
|
||||
AC_SUBST(yassl_includes)
|
||||
|
||||
AC_DEFINE([HAVE_OPENSSL], [1], [Defined by configure. Using yaSSL for SSL.])
|
||||
AC_DEFINE([HAVE_YASSL], [1], [Defined by configure. Using yaSSL for SSL.])
|
||||
|
||||
# System specific checks
|
||||
yassl_integer_extra_cxxflags=""
|
||||
case $host_cpu--$CXX_VERSION in
|
||||
sparc*--*Sun*C++*5.6*)
|
||||
# Disable inlining when compiling taocrypt/src/
|
||||
yassl_taocrypt_extra_cxxflags="+d"
|
||||
AC_MSG_NOTICE([disabling inlining for yassl/taocrypt/src/])
|
||||
;;
|
||||
esac
|
||||
AC_SUBST([yassl_taocrypt_extra_cxxflags])
|
||||
|
||||
# Link extra/yassl/include/openssl subdir to include/
|
||||
yassl_h_ln_cmd="\$(LN) -s \$(top_srcdir)/extra/yassl/include/openssl openssl"
|
||||
AC_SUBST(yassl_h_ln_cmd)
|
||||
|
||||
AC_MSG_RESULT([using bundled yaSSL])
|
||||
])
|
||||
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Macro: MYSQL_CHECK_SSL_DIR
|
||||
dnl
|
||||
dnl SYNOPSIS
|
||||
dnl MYSQL_CHECK_SSL_DIR(includes, libs)
|
||||
dnl
|
||||
dnl DESCRIPTION
|
||||
dnl Auxiliary macro to check for ssl at given path
|
||||
dnl
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
AC_DEFUN([MYSQL_CHECK_SSL_DIR], [
|
||||
ssl_incs="$1"
|
||||
ssl_libs="$2"
|
||||
save_CPPFLAGS="$CPPFLAGS"
|
||||
save_LIBS="$LIBS"
|
||||
CPPFLAGS="$ssl_incs $CPPFLAGS"
|
||||
LIBS="$LIBS $ssl_libs"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[return SSL_library_init();],
|
||||
[mysql_ssl_found="yes"],
|
||||
[mysql_ssl_found="no"])
|
||||
CPPFLAGS="$save_CPPFLAGS"
|
||||
LIBS="$save_LIBS"
|
||||
])
|
||||
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Macro: MYSQL_FIND_OPENSSL
|
||||
dnl
|
||||
dnl SYNOPSIS
|
||||
dnl MYSQL_FIND_OPENSSL(location)
|
||||
dnl
|
||||
dnl DESCRIPTION
|
||||
dnl Search the location for OpenSSL support
|
||||
dnl
|
||||
dnl ---------------------------------------------------------------------------
|
||||
AC_DEFUN([MYSQL_FIND_OPENSSL], [
|
||||
location="$1"
|
||||
|
||||
#
|
||||
# Set include paths
|
||||
#
|
||||
openssl_include="$location/include"
|
||||
openssl_includes=""
|
||||
|
||||
# Don't set ssl_includes to /usr/include as this gives us a lot of
|
||||
# compiler warnings when using gcc 3.x
|
||||
if test "$openssl_include" != "/usr/include"
|
||||
then
|
||||
openssl_includes="-I$ssl_include"
|
||||
fi
|
||||
|
||||
#
|
||||
# Try to link with openSSL libs in <location>
|
||||
#
|
||||
openssl_libs="-L$location/lib/ -lssl -lcrypto"
|
||||
MYSQL_CHECK_SSL_DIR([$openssl_includes], [$openssl_libs])
|
||||
|
||||
if test "$mysql_ssl_found" == "no"
|
||||
then
|
||||
#
|
||||
# BUG 764: Compile failure with OpenSSL on Red Hat Linux (krb5.h missing)
|
||||
# Try to link with include paths to kerberos set
|
||||
#
|
||||
openssl_includes="$openssl_includes -I/usr/kerberos/include"
|
||||
MYSQL_CHECK_SSL_DIR([$openssl_includes], [$openssl_libs])
|
||||
fi
|
||||
|
||||
if test "$mysql_ssl_found" == "no"
|
||||
then
|
||||
AC_MSG_ERROR([Could not link with SSL libs at $location])
|
||||
fi
|
||||
|
||||
# openssl-devel-0.9.6 requires dlopen() and we can't link staticly
|
||||
# on many platforms (We should actually test this here, but it's quite
|
||||
# hard to do as we are doing libtool for linking.)
|
||||
case "$CLIENT_EXTRA_LDFLAGS $MYSQLD_EXTRA_LDFLAGS" in
|
||||
*-all-static*)
|
||||
AC_MSG_ERROR([You can't use the --all-static link option when using openssl.])
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(openssl_includes)
|
||||
AC_SUBST(openssl_libs)
|
||||
|
||||
NON_THREADED_CLIENT_LIBS="$NON_THREADED_CLIENT_LIBS $openssl_libs"
|
||||
|
||||
AC_DEFINE([HAVE_OPENSSL], [1], [OpenSSL])
|
||||
AC_MSG_RESULT([using openSSL from $location])
|
||||
])
|
||||
|
||||
|
||||
|
||||
dnl ------------------------------------------------------------------------
|
||||
dnl Macro: MYSQL_CHECK_SSL
|
||||
dnl
|
||||
dnl SYNOPSIS
|
||||
dnl MYSQL_CHECK_SSL
|
||||
dnl
|
||||
dnl Provides the following configure options:
|
||||
dnl --with-ssl=DIR
|
||||
dnl Possible DIR values are:
|
||||
dnl - no - the macro will disable use of ssl
|
||||
dnl - bundled, empty or not specified - means use ssl lib
|
||||
dnl bundled along with MySQL sources
|
||||
dnl - ssl location prefix - given location prefix, the macro expects
|
||||
dnl to find the header files in $prefix/include/, and libraries in
|
||||
dnl $prefix/lib. If headers or libraries weren't found at $prefix, the
|
||||
dnl macro bails out with error.
|
||||
dnl
|
||||
dnl ------------------------------------------------------------------------
|
||||
AC_DEFUN([MYSQL_CHECK_SSL], [
|
||||
AC_MSG_CHECKING(for SSL)
|
||||
AC_ARG_WITH([ssl],
|
||||
[ --with-ssl[=DIR] Include SSL support],
|
||||
[mysql_ssl_dir="$withval"],
|
||||
[mysql_ssl_dir=no])
|
||||
|
||||
case "$mysql_ssl_dir" in
|
||||
"no")
|
||||
#
|
||||
# Don't include SSL support
|
||||
#
|
||||
AC_MSG_RESULT([disabled])
|
||||
;;
|
||||
|
||||
"bundled"|"yes")
|
||||
#
|
||||
# Use the bundled SSL implementation (yaSSL)
|
||||
#
|
||||
MYSQL_USE_BUNDLED_YASSL
|
||||
;;
|
||||
|
||||
*)
|
||||
#
|
||||
# A location where to search for OpenSSL was specified
|
||||
#
|
||||
MYSQL_FIND_OPENSSL([$mysql_ssl_dir])
|
||||
;;
|
||||
esac
|
||||
AM_CONDITIONAL([HAVE_YASSL], [ test "$with_yassl" = "yes" ])
|
||||
])
|
@ -1,45 +0,0 @@
|
||||
AC_DEFUN([MYSQL_CHECK_YASSL], [
|
||||
AC_MSG_CHECKING(for yaSSL)
|
||||
AC_ARG_WITH([yassl], [ --with-yassl Include the yaSSL support],,)
|
||||
|
||||
if test "$with_yassl" = "yes"
|
||||
then
|
||||
if test "$openssl" != "no"
|
||||
then
|
||||
AC_MSG_ERROR([Cannot configure MySQL to use yaSSL and OpenSSL simultaneously.])
|
||||
fi
|
||||
AC_MSG_RESULT([using bundled yaSSL])
|
||||
AC_CONFIG_FILES(extra/yassl/Makefile dnl
|
||||
extra/yassl/taocrypt/Makefile dnl
|
||||
extra/yassl/taocrypt/benchmark/Makefile dnl
|
||||
extra/yassl/taocrypt/src/Makefile dnl
|
||||
extra/yassl/taocrypt/test/Makefile dnl
|
||||
extra/yassl/src/Makefile dnl
|
||||
extra/yassl/testsuite/Makefile)
|
||||
yassl_dir="yassl"
|
||||
yassl_libs="-L\$(top_srcdir)/extra/yassl/src -lyassl -L\$(top_srcdir)/extra/yassl/taocrypt/src -ltaocrypt"
|
||||
yassl_includes="-I\$(top_srcdir)/extra/yassl/include"
|
||||
AC_DEFINE([HAVE_OPENSSL], [1], [Defined by configure. Using yaSSL for OpenSSL emulation.])
|
||||
AC_DEFINE([HAVE_YASSL], [1], [Defined by configure. Using yaSSL for OpenSSL emulation.])
|
||||
# System specific checks
|
||||
yassl_integer_extra_cxxflags=""
|
||||
case $host_cpu--$CXX_VERSION in
|
||||
sparc*--*Sun*C++*5.6*)
|
||||
# Disable inlining when compiling taocrypt/src/
|
||||
yassl_taocrypt_extra_cxxflags="+d"
|
||||
AC_MSG_NOTICE([disabling inlining for yassl/taocrypt/src/])
|
||||
;;
|
||||
esac
|
||||
AC_SUBST([yassl_taocrypt_extra_cxxflags])
|
||||
# Link extra/yassl/include/openssl subdir to include/
|
||||
yassl_h_ln_cmd="\$(LN) -s \$(top_srcdir)/extra/yassl/include/openssl openssl"
|
||||
AC_SUBST(yassl_h_ln_cmd)
|
||||
else
|
||||
yassl_dir=""
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_SUBST(yassl_libs)
|
||||
AC_SUBST(yassl_includes)
|
||||
AC_SUBST(yassl_dir)
|
||||
AM_CONDITIONAL([HAVE_YASSL], [ test "$with_yassl" = "yes" ])
|
||||
])
|
@ -89,10 +89,11 @@ case $SYSTEM_TYPE in
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Just to be safe, we test for ".so" anyway
|
||||
eval shrexts=\"$shrext_cmds\"
|
||||
if test \( -f "$mysql_zlib_dir/lib/libz.a" -o -f "$mysql_zlib_dir/lib/libz.so" -o \
|
||||
-f "$mysql_zlib_dir/lib/libz$shrext" \) \
|
||||
# Test for libz using all known library file endings
|
||||
if test \( -f "$mysql_zlib_dir/lib/libz.a" -o \
|
||||
-f "$mysql_zlib_dir/lib/libz.so" -o \
|
||||
-f "$mysql_zlib_dir/lib/libz.sl" -o \
|
||||
-f "$mysql_zlib_dir/lib/libz.dylib" \) \
|
||||
-a -f "$mysql_zlib_dir/include/zlib.h"; then
|
||||
ZLIB_INCLUDES="-I$mysql_zlib_dir/include"
|
||||
ZLIB_LIBS="-L$mysql_zlib_dir/lib -lz"
|
||||
|
@ -36,10 +36,9 @@ sinclude(config/ac-macros/ha_berkeley.m4)
|
||||
sinclude(config/ac-macros/ha_ndbcluster.m4)
|
||||
sinclude(config/ac-macros/large_file.m4)
|
||||
sinclude(config/ac-macros/misc.m4)
|
||||
sinclude(config/ac-macros/openssl.m4)
|
||||
sinclude(config/ac-macros/readline.m4)
|
||||
sinclude(config/ac-macros/replication.m4)
|
||||
sinclude(config/ac-macros/yassl.m4)
|
||||
sinclude(config/ac-macros/ssl.m4)
|
||||
sinclude(config/ac-macros/zlib.m4)
|
||||
|
||||
# Remember to add a directory sql/share/LANGUAGE
|
||||
@ -2203,8 +2202,7 @@ MYSQL_CHECK_BIG_TABLES
|
||||
MYSQL_CHECK_MAX_INDEXES
|
||||
MYSQL_CHECK_REPLICATION
|
||||
MYSQL_CHECK_VIO
|
||||
MYSQL_CHECK_OPENSSL
|
||||
MYSQL_CHECK_YASSL
|
||||
MYSQL_CHECK_SSL
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# Declare our plugin modules
|
||||
|
@ -326,3 +326,20 @@ deallocate prepare s;
|
||||
set @str=NULL;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
some_id smallint(5) unsigned,
|
||||
key (some_id)
|
||||
);
|
||||
insert into t1 values (1),(2);
|
||||
select some_id from t1 where some_id not in(2,-1);
|
||||
some_id
|
||||
1
|
||||
select some_id from t1 where some_id not in(-4,-1,-4);
|
||||
some_id
|
||||
1
|
||||
2
|
||||
select some_id from t1 where some_id not in(-4,-1,3423534,2342342);
|
||||
some_id
|
||||
1
|
||||
2
|
||||
drop table t1;
|
||||
|
@ -189,4 +189,5 @@ HEX(f)
|
||||
select HEX(f) from t4;
|
||||
HEX(f)
|
||||
835C
|
||||
flush logs;
|
||||
drop table t1, t2, t03, t04, t3, t4;
|
||||
|
@ -19,9 +19,40 @@ n
|
||||
2
|
||||
3
|
||||
4
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 780 slave-relay-bin.000004 # master-bin.000001 # No 0 0 323 # Master master-bin.000001 323 No #
|
||||
SHOW SLAVE STATUS;
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_MYPORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos 780
|
||||
Relay_Log_File slave-relay-bin.000004
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running #
|
||||
Slave_SQL_Running No
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 323
|
||||
Relay_Log_Space #
|
||||
Until_Condition Master
|
||||
Until_Log_File master-bin.000001
|
||||
Until_Log_Pos 323
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
|
||||
select * from t1;
|
||||
n
|
||||
@ -29,23 +60,116 @@ n
|
||||
2
|
||||
3
|
||||
4
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 780 slave-relay-bin.000004 # master-bin.000001 # No 0 0 323 # Master master-no-such-bin.000001 291 No #
|
||||
SHOW SLAVE STATUS;
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_MYPORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos 780
|
||||
Relay_Log_File slave-relay-bin.000004
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running #
|
||||
Slave_SQL_Running No
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 323
|
||||
Relay_Log_Space #
|
||||
Until_Condition Master
|
||||
Until_Log_File master-no-such-bin.000001
|
||||
Until_Log_Pos 291
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746;
|
||||
select * from t2;
|
||||
n
|
||||
1
|
||||
2
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 780 slave-relay-bin.000004 # master-bin.000001 # No 0 0 612 # Relay slave-relay-bin.000004 746 No #
|
||||
SHOW SLAVE STATUS;
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_MYPORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos 780
|
||||
Relay_Log_File slave-relay-bin.000004
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running #
|
||||
Slave_SQL_Running No
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 612
|
||||
Relay_Log_Space #
|
||||
Until_Condition Relay
|
||||
Until_Log_File slave-relay-bin.000004
|
||||
Until_Log_Pos 746
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
start slave;
|
||||
stop slave;
|
||||
start slave until master_log_file='master-bin.000001', master_log_pos=776;
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 780 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 780 # Master master-bin.000001 776 No #
|
||||
SHOW SLAVE STATUS;
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_MYPORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000001
|
||||
Read_Master_Log_Pos 780
|
||||
Relay_Log_File slave-relay-bin.000004
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running Yes
|
||||
Slave_SQL_Running No
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 780
|
||||
Relay_Log_Space #
|
||||
Until_Condition Master
|
||||
Until_Log_File master-bin.000001
|
||||
Until_Log_Pos 776
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
start slave until master_log_file='master-bin', master_log_pos=561;
|
||||
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
|
||||
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
|
||||
|
@ -88,15 +88,23 @@ f
|
||||
1
|
||||
drop temporary table t4;
|
||||
drop table t5;
|
||||
set @session.pseudo_thread_id=100;
|
||||
set @@session.pseudo_thread_id=100;
|
||||
create temporary table t101 (id int);
|
||||
create temporary table t102 (id int);
|
||||
set @session.pseudo_thread_id=200;
|
||||
set @@session.pseudo_thread_id=200;
|
||||
create temporary table t201 (id int);
|
||||
create temporary table `#not_user_table_prefixed_with_hash_sign_no_harm` (id int);
|
||||
create temporary table `#sql_not_user_table202` (id int);
|
||||
set @@session.pseudo_thread_id=300;
|
||||
create temporary table t301 (id int);
|
||||
create temporary table t302 (id int);
|
||||
create temporary table `#sql_not_user_table303` (id int);
|
||||
create table t1(f int);
|
||||
insert into t1 values (1);
|
||||
select * from t1 /* must be 1 */;
|
||||
f
|
||||
1
|
||||
drop table t1;
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
drop table t1;
|
||||
|
@ -220,3 +220,15 @@ set @str=NULL;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
|
||||
# BUG#19618: Crash in range optimizer for
|
||||
# "unsigned_keypart NOT IN(negative_number,...)"
|
||||
# (introduced in fix BUG#15872)
|
||||
create table t1 (
|
||||
some_id smallint(5) unsigned,
|
||||
key (some_id)
|
||||
);
|
||||
insert into t1 values (1),(2);
|
||||
select some_id from t1 where some_id not in(2,-1);
|
||||
select some_id from t1 where some_id not in(-4,-1,-4);
|
||||
select some_id from t1 where some_id not in(-4,-1,3423534,2342342);
|
||||
drop table t1;
|
||||
|
@ -124,9 +124,22 @@ select HEX(f) from t3;
|
||||
select HEX(f) from t04;
|
||||
select HEX(f) from t4;
|
||||
|
||||
#
|
||||
# BUG#14157: utf8 encoding in binlog without set character_set_client
|
||||
#
|
||||
# BUG:
|
||||
# This test only works on the MySQL-internal rpl machines.
|
||||
# Needs to be fixed. Problem is that koi8r is not installed
|
||||
# on many machines.
|
||||
#
|
||||
flush logs;
|
||||
# --exec $MYSQL --character-sets-dir=../sql/share/charsets/ --default-character-set=koi8r test -e 'create table if not exists t5 (a int); set names koi8r; create temporary table `<60><><EFBFBD><EFBFBD>` (a int); insert into `<60><><EFBFBD><EFBFBD>` values (1); insert into t5 select * from `<60><><EFBFBD><EFBFBD>`'
|
||||
|
||||
# resulted log is client charset insensitive (latin1 not koi8r) as it must be
|
||||
# --exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000006 | $MYSQL --default-character-set=latin1
|
||||
#select * from t5 /* must be (1),(1) */;
|
||||
|
||||
# clean up
|
||||
drop table t1, t2, t03, t04, t3, t4;
|
||||
|
||||
# End of 4.1 tests
|
||||
# End of 5.0 tests
|
||||
|
@ -32,7 +32,7 @@ wait_for_slave_to_stop;
|
||||
select * from t1;
|
||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||
--replace_column 1 # 9 # 11 # 23 # 33 #
|
||||
show slave status;
|
||||
--query_vertical SHOW SLAVE STATUS
|
||||
|
||||
# this should fail right after start
|
||||
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
|
||||
@ -42,7 +42,7 @@ sleep 2;
|
||||
wait_for_slave_to_stop;
|
||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||
--replace_column 1 # 9 # 11 # 23 # 33 #
|
||||
show slave status;
|
||||
--query_vertical SHOW SLAVE STATUS
|
||||
|
||||
# try replicate all up to and not including the second insert to t2;
|
||||
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746;
|
||||
@ -51,7 +51,7 @@ wait_for_slave_to_stop;
|
||||
select * from t2;
|
||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||
--replace_column 1 # 9 # 11 # 23 # 33 #
|
||||
show slave status;
|
||||
--query_vertical SHOW SLAVE STATUS
|
||||
|
||||
# clean up
|
||||
start slave;
|
||||
@ -68,7 +68,7 @@ wait_for_slave_to_stop;
|
||||
# here the sql slave thread should be stopped
|
||||
--replace_result $MASTER_MYPORT MASTER_MYPORT bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004
|
||||
--replace_column 1 # 9 # 23 # 33 #
|
||||
show slave status;
|
||||
--query_vertical SHOW SLAVE STATUS
|
||||
|
||||
#testing various error conditions
|
||||
--error 1277
|
||||
|
@ -165,24 +165,19 @@ drop table t5;
|
||||
# value was set up at the moment of temp table creation
|
||||
#
|
||||
connection con1;
|
||||
set @session.pseudo_thread_id=100;
|
||||
set @@session.pseudo_thread_id=100;
|
||||
create temporary table t101 (id int);
|
||||
create temporary table t102 (id int);
|
||||
set @session.pseudo_thread_id=200;
|
||||
set @@session.pseudo_thread_id=200;
|
||||
create temporary table t201 (id int);
|
||||
create temporary table `#not_user_table_prefixed_with_hash_sign_no_harm` (id int);
|
||||
|
||||
#
|
||||
# Don't kill our own connection to the server as
|
||||
# the result code differs depending on platform.
|
||||
#
|
||||
# Select the id to kill into a variable of mysqltest
|
||||
let $con1_id= `select connection_id()`;
|
||||
# Switch connection to avoid killing our own connection
|
||||
connection master;
|
||||
--disable_query_log
|
||||
eval kill $con1_id;
|
||||
--enable_query_log
|
||||
#create temporary table `t``201` (id int);
|
||||
# emulate internal temp table not to come to binlog
|
||||
create temporary table `#sql_not_user_table202` (id int);
|
||||
set @@session.pseudo_thread_id=300;
|
||||
create temporary table t301 (id int);
|
||||
create temporary table t302 (id int);
|
||||
create temporary table `#sql_not_user_table303` (id int);
|
||||
disconnect con1;
|
||||
|
||||
#now do something to show that slave is ok after DROP temp tables
|
||||
connection master;
|
||||
@ -195,4 +190,17 @@ select * from t1 /* must be 1 */;
|
||||
|
||||
connection master;
|
||||
drop table t1;
|
||||
# End of 5.1 tests
|
||||
|
||||
#
|
||||
#14157: utf8 encoding in binlog without set character_set_client
|
||||
#
|
||||
--exec $MYSQL --character-sets-dir=../sql/share/charsets/ --default-character-set=koi8r test -e 'create table t1 (a int); set names koi8r; create temporary table `<60><><EFBFBD><EFBFBD>` (a int); insert into `<60><><EFBFBD><EFBFBD>` values (1); insert into t1 select * from `<60><><EFBFBD><EFBFBD>`'
|
||||
|
||||
sync_slave_with_master;
|
||||
#connection slave;
|
||||
select * from t1;
|
||||
|
||||
connection master;
|
||||
drop table t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
@ -1936,7 +1936,6 @@ inline int hexchar_to_int(char c)
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Some functions that are different in the embedded library and the normal
|
||||
server
|
||||
|
@ -2974,7 +2974,6 @@ static void end_ssl()
|
||||
ssl_acceptor_fd= 0;
|
||||
}
|
||||
#endif /* HAVE_OPENSSL */
|
||||
vio_end();
|
||||
}
|
||||
|
||||
|
||||
|
109
sql/opt_range.cc
109
sql/opt_range.cc
@ -4698,17 +4698,46 @@ static SEL_TREE *get_func_mm_tree(RANGE_OPT_PARAM *param, Item_func *cond_func,
|
||||
|
||||
if (inv)
|
||||
{
|
||||
/*
|
||||
We get here for conditions like "t.keypart NOT IN (....)".
|
||||
|
||||
If the IN-list contains only constants (and func->array is an ordered
|
||||
array of them), we construct the appropriate SEL_ARG tree manually,
|
||||
because constructing it using the range analyzer (as
|
||||
AND_i( t.keypart != c_i)) will cause lots of memory to be consumed
|
||||
(see BUG#15872).
|
||||
*/
|
||||
if (func->array && func->cmp_type != ROW_RESULT)
|
||||
{
|
||||
/*
|
||||
We get here for conditions in form "t.key NOT IN (c1, c2, ...)"
|
||||
(where c{i} are constants).
|
||||
Our goal is to produce a SEL_ARG graph that represents intervals:
|
||||
|
||||
($MIN<t.key<c1) OR (c1<t.key<c2) OR (c2<t.key<c3) OR ... (*)
|
||||
|
||||
where $MIN is either "-inf" or NULL.
|
||||
|
||||
The most straightforward way to handle NOT IN would be to convert
|
||||
it to "(t.key != c1) AND (t.key != c2) AND ..." and let the range
|
||||
optimizer to build SEL_ARG graph from that. However that will cause
|
||||
the range optimizer to use O(N^2) memory (it's a bug, not filed),
|
||||
and people do use big NOT IN lists (see BUG#15872). Also, for big
|
||||
NOT IN lists constructing/using graph (*) does not make the query
|
||||
faster.
|
||||
|
||||
So, we will handle NOT IN manually in the following way:
|
||||
* if the number of entries in the NOT IN list is less then
|
||||
NOT_IN_IGNORE_THRESHOLD, we will construct SEL_ARG graph (*)
|
||||
manually.
|
||||
* Otherwise, we will construct a smaller graph: for
|
||||
"t.key NOT IN (c1,...cN)" we construct a graph representing
|
||||
($MIN < t.key) OR (cN < t.key) // here sequence of c_i is
|
||||
// ordered.
|
||||
|
||||
A note about partially-covering indexes: for those (e.g. for
|
||||
"a CHAR(10), KEY(a(5))") the handling is correct (albeit not very
|
||||
efficient):
|
||||
Instead of "t.key < c1" we get "t.key <= prefix-val(c1)".
|
||||
Combining the intervals in (*) together, we get:
|
||||
(-inf<=t.key<=c1) OR (c1<=t.key<=c2) OR (c2<=t.key<=c3) OR ...
|
||||
i.e. actually we get intervals combined into one interval:
|
||||
(-inf<=t.key<=+inf). This doesn't make much sense but it doesn't
|
||||
cause any problems.
|
||||
*/
|
||||
MEM_ROOT *tmp_root= param->mem_root;
|
||||
param->thd->mem_root= param->old_root;
|
||||
/*
|
||||
Create one Item_type constant object. We'll need it as
|
||||
get_mm_parts only accepts constant values wrapped in Item_Type
|
||||
@ -4717,25 +4746,35 @@ static SEL_TREE *get_func_mm_tree(RANGE_OPT_PARAM *param, Item_func *cond_func,
|
||||
per-statement mem_root (while thd->mem_root is currently pointing
|
||||
to mem_root local to range optimizer).
|
||||
*/
|
||||
MEM_ROOT *tmp_root= param->mem_root;
|
||||
param->thd->mem_root= param->old_root;
|
||||
Item *value_item= func->array->create_item();
|
||||
param->thd->mem_root= tmp_root;
|
||||
|
||||
if (!value_item)
|
||||
break;
|
||||
|
||||
/* Get a SEL_TREE for "-inf < X < c_0" interval */
|
||||
func->array->value_to_item(0, value_item);
|
||||
tree= get_mm_parts(param, cond_func, field, Item_func::LT_FUNC,
|
||||
value_item, cmp_type);
|
||||
if (!tree)
|
||||
/* Get a SEL_TREE for "(-inf|NULL) < X < c_0" interval. */
|
||||
uint i=0;
|
||||
do
|
||||
{
|
||||
func->array->value_to_item(i, value_item);
|
||||
tree= get_mm_parts(param, cond_func, field, Item_func::LT_FUNC,
|
||||
value_item, cmp_type);
|
||||
if (!tree)
|
||||
break;
|
||||
i++;
|
||||
} while (i < func->array->count && tree->type == SEL_TREE::IMPOSSIBLE);
|
||||
|
||||
if (!tree || tree->type == SEL_TREE::IMPOSSIBLE)
|
||||
{
|
||||
/* We get here in cases like "t.unsigned NOT IN (-1,-2,-3) */
|
||||
tree= NULL;
|
||||
break;
|
||||
}
|
||||
#define NOT_IN_IGNORE_THRESHOLD 1000
|
||||
SEL_TREE *tree2;
|
||||
if (func->array->count < NOT_IN_IGNORE_THRESHOLD)
|
||||
{
|
||||
for (uint i=1; i < func->array->count; i++)
|
||||
for (; i < func->array->count; i++)
|
||||
{
|
||||
if (func->array->compare_elems(i, i-1))
|
||||
{
|
||||
@ -4743,32 +4782,44 @@ static SEL_TREE *get_func_mm_tree(RANGE_OPT_PARAM *param, Item_func *cond_func,
|
||||
func->array->value_to_item(i, value_item);
|
||||
tree2= get_mm_parts(param, cond_func, field, Item_func::LT_FUNC,
|
||||
value_item, cmp_type);
|
||||
|
||||
if (!tree2)
|
||||
{
|
||||
tree= NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Change all intervals to be "c_{i-1} < X < c_i" */
|
||||
for (uint idx= 0; idx < param->keys; idx++)
|
||||
{
|
||||
SEL_ARG *new_interval;
|
||||
if ((new_interval= tree2->keys[idx]))
|
||||
SEL_ARG *new_interval, *last_val;
|
||||
if (((new_interval= tree2->keys[idx])) &&
|
||||
((last_val= tree->keys[idx]->last())))
|
||||
{
|
||||
SEL_ARG *last_val= tree->keys[idx]->last();
|
||||
new_interval->min_value= last_val->max_value;
|
||||
new_interval->min_flag= NEAR_MIN;
|
||||
}
|
||||
}
|
||||
/*
|
||||
The following doesn't try to allocate memory so no need to
|
||||
check for NULL.
|
||||
*/
|
||||
tree= tree_or(param, tree, tree2);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
func->array->value_to_item(func->array->count - 1, value_item);
|
||||
|
||||
/*
|
||||
Get the SEL_TREE for the last "c_last < X < +inf" interval
|
||||
(value_item cotains c_last already)
|
||||
*/
|
||||
tree2= get_mm_parts(param, cond_func, field, Item_func::GT_FUNC,
|
||||
value_item, cmp_type);
|
||||
tree= tree_or(param, tree, tree2);
|
||||
|
||||
if (tree && tree->type != SEL_TREE::IMPOSSIBLE)
|
||||
{
|
||||
/*
|
||||
Get the SEL_TREE for the last "c_last < X < +inf" interval
|
||||
(value_item cotains c_last already)
|
||||
*/
|
||||
tree2= get_mm_parts(param, cond_func, field, Item_func::GT_FUNC,
|
||||
value_item, cmp_type);
|
||||
tree= tree_or(param, tree, tree2);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1289,7 +1289,7 @@ void close_temporary_tables(THD *thd)
|
||||
table= next)
|
||||
{
|
||||
end_cur= strxmov(end_cur, "`", table->s->db.str, "`.`",
|
||||
table->s->table_name.str, "`,", NullS);
|
||||
table->s->table_name.str, "`,", NullS);
|
||||
next= table->next;
|
||||
close_temporary(table, 1, 1);
|
||||
}
|
||||
@ -1317,7 +1317,6 @@ void close_temporary_tables(THD *thd)
|
||||
thd->temporary_tables=0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Find table in list.
|
||||
|
||||
|
Reference in New Issue
Block a user