mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
Merge with 5.5
This commit is contained in:
commit
59b4ee1454
145 changed files with 2495 additions and 314 deletions
|
@ -1141,3 +1141,6 @@ sql/share/errmsg.sys
|
|||
sql/share/mysql
|
||||
install_manifest.txt
|
||||
sql/db.opt
|
||||
./_CPack_Packages
|
||||
./install_manifest_*.txt
|
||||
typescript
|
||||
|
|
|
@ -39,8 +39,6 @@ ENDIF()
|
|||
SET(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
|
||||
"Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel")
|
||||
|
||||
|
||||
|
||||
IF(UNIX AND NOT APPLE)
|
||||
# Note, that generally one should not change settings depending
|
||||
# on CMAKE_BUILD_TYPE, because VS and Xcode configure once (with
|
||||
|
@ -124,18 +122,30 @@ IF(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
|||
SET_MYSQL_MAINTAINER_INTEL_CXX_OPTIONS()
|
||||
ENDIF()
|
||||
|
||||
# Packaging
|
||||
IF (NOT CPACK_GENERATOR)
|
||||
IF(WIN32)
|
||||
SET(CPACK_GENERATOR "ZIP")
|
||||
ELSE()
|
||||
SET(CPACK_GENERATOR "TGZ")
|
||||
ENDIF(WIN32)
|
||||
ENDIF(NOT CPACK_GENERATOR)
|
||||
|
||||
INCLUDE(mysql_version)
|
||||
INCLUDE(cpack_rpm)
|
||||
INCLUDE(cpack_source_ignore_files)
|
||||
INCLUDE(install_layout)
|
||||
|
||||
# Add macros
|
||||
INCLUDE(character_sets)
|
||||
INCLUDE(zlib)
|
||||
INCLUDE(ssl)
|
||||
INCLUDE(readline)
|
||||
INCLUDE(mysql_version)
|
||||
INCLUDE(libutils)
|
||||
INCLUDE(dtrace)
|
||||
INCLUDE(ctest)
|
||||
INCLUDE(plugin)
|
||||
INCLUDE(install_macros)
|
||||
INCLUDE(install_layout)
|
||||
INCLUDE(mysql_add_executable)
|
||||
|
||||
# Handle options
|
||||
|
@ -231,8 +241,8 @@ ELSE()
|
|||
ENDIF()
|
||||
SET(DEFAULT_CHARSET_HOME "${DEFAULT_MYSQL_HOME}")
|
||||
SET(PLUGINDIR "${DEFAULT_MYSQL_HOME}/${INSTALL_PLUGINDIR}")
|
||||
IF(SYSCONFDIR)
|
||||
SET(DEFAULT_SYSCONFDIR "${SYSCONFDIR}")
|
||||
IF(INSTALL_SYSCONFDIR)
|
||||
SET(DEFAULT_SYSCONFDIR "${INSTALL_SYSCONFDIR}")
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
@ -341,50 +351,18 @@ ADD_CUSTOM_TARGET(INFO_BIN ALL
|
|||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
# Packaging
|
||||
IF(WIN32)
|
||||
SET(CPACK_GENERATOR "ZIP")
|
||||
ELSE()
|
||||
SET(CPACK_GENERATOR "TGZ")
|
||||
ENDIF()
|
||||
|
||||
|
||||
# Create a single package with "make package"
|
||||
# (see http://public.kitware.com/Bug/view.php?id=11452)
|
||||
SET(CPACK_MONOLITHIC_INSTALL 1 CACHE INTERNAL "")
|
||||
INSTALL(FILES COPYING COPYING.LESSER LICENSE.mysql
|
||||
DESTINATION ${INSTALL_DOCREADMEDIR}
|
||||
COMPONENT Readme
|
||||
OPTIONAL
|
||||
)
|
||||
INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme)
|
||||
INSTALL(FILES ${CMAKE_BINARY_DIR}/Docs/INFO_SRC ${CMAKE_BINARY_DIR}/Docs/INFO_BIN DESTINATION ${INSTALL_DOCDIR})
|
||||
IF(UNIX)
|
||||
INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme)
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(CPack)
|
||||
IF(UNIX)
|
||||
INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR} OPTIONAL COMPONENT Info)
|
||||
ENDIF()
|
||||
#
|
||||
# RPM installs documentation directly from the source tree
|
||||
#
|
||||
IF(NOT INSTALL_LAYOUT MATCHES "RPM")
|
||||
INSTALL(FILES COPYING COPYING.LESSER LICENSE.mysql
|
||||
DESTINATION ${INSTALL_DOCREADMEDIR}
|
||||
COMPONENT Readme
|
||||
OPTIONAL
|
||||
)
|
||||
INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme)
|
||||
INSTALL(FILES ${CMAKE_BINARY_DIR}/Docs/INFO_SRC ${CMAKE_BINARY_DIR}/Docs/INFO_BIN DESTINATION ${INSTALL_DOCDIR})
|
||||
IF(UNIX)
|
||||
INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR} COMPONENT Readme)
|
||||
ENDIF()
|
||||
# MYSQL_DOCS_LOCATON is used in "make dist", points to the documentation directory
|
||||
SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied")
|
||||
MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION)
|
||||
INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR}
|
||||
COMPONENT Documentation
|
||||
PATTERN "INSTALL-BINARY" EXCLUDE
|
||||
PATTERN "Makefile.*" EXCLUDE
|
||||
PATTERN "glibc*" EXCLUDE
|
||||
PATTERN "linuxthreads.txt" EXCLUDE
|
||||
PATTERN "myisam.txt" EXCLUDE
|
||||
PATTERN "mysql.info" EXCLUDE
|
||||
PATTERN "sp-imp-spec.txt" EXCLUDE
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF(NON_DISTRIBUTABLE_WARNING)
|
||||
MESSAGE(WARNING "
|
||||
|
|
2
VERSION
2
VERSION
|
@ -1,4 +1,4 @@
|
|||
MYSQL_VERSION_MAJOR=5
|
||||
MYSQL_VERSION_MINOR=5
|
||||
MYSQL_VERSION_PATCH=23
|
||||
MYSQL_VERSION_PATCH=24
|
||||
MYSQL_VERSION_EXTRA=
|
||||
|
|
|
@ -49,7 +49,7 @@ TARGET_LINK_LIBRARIES(mysqldump mysqlclient)
|
|||
MYSQL_ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c)
|
||||
MYSQL_ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c COMPONENT Server)
|
||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient)
|
||||
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
||||
|
||||
|
|
|
@ -141,7 +141,8 @@ static my_bool opt_compress= FALSE, tty_password= FALSE,
|
|||
const char *auto_generate_sql_type= "mixed";
|
||||
|
||||
static unsigned long connect_flags= CLIENT_MULTI_RESULTS |
|
||||
CLIENT_MULTI_STATEMENTS;
|
||||
CLIENT_MULTI_STATEMENTS |
|
||||
CLIENT_REMEMBER_OPTIONS;
|
||||
|
||||
static int verbose, delimiter_length;
|
||||
static uint commit_rate;
|
||||
|
|
|
@ -816,6 +816,9 @@ void handle_error(struct st_command*,
|
|||
void handle_no_error(struct st_command*);
|
||||
void revert_properties();
|
||||
|
||||
static void handle_no_active_connection(struct st_command* command,
|
||||
struct st_connection *cn, DYNAMIC_STRING *ds);
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
|
||||
#define EMB_SEND_QUERY 1
|
||||
|
@ -2562,6 +2565,19 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
|
|||
DBUG_ENTER("var_query_set");
|
||||
LINT_INIT(res);
|
||||
|
||||
if (!mysql)
|
||||
{
|
||||
struct st_command command;
|
||||
memset(&command, 0, sizeof(command));
|
||||
command.query= (char*)query;
|
||||
command.first_word_len= (*query_end - query);
|
||||
command.first_argument= command.query + command.first_word_len;
|
||||
command.end= (char*)*query_end;
|
||||
command.abort_on_error= 1; /* avoid uninitialized variables */
|
||||
handle_no_active_connection(&command, cur_con, &ds_res);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
/* Only white space or ) allowed past ending ` */
|
||||
while (end > query && *end != '`')
|
||||
{
|
||||
|
@ -2741,6 +2757,12 @@ void var_set_query_get_value(struct st_command *command, VAR *var)
|
|||
DBUG_ENTER("var_set_query_get_value");
|
||||
LINT_INIT(res);
|
||||
|
||||
if (!mysql)
|
||||
{
|
||||
handle_no_active_connection(command, cur_con, &ds_res);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
strip_parentheses(command);
|
||||
DBUG_PRINT("info", ("query: %s", command->query));
|
||||
check_command_args(command, command->first_argument, query_get_value_args,
|
||||
|
@ -2911,6 +2933,7 @@ void eval_expr(VAR *v, const char *p, const char **p_end,
|
|||
command.first_word_len= len;
|
||||
command.first_argument= command.query + len;
|
||||
command.end= (char*)*p_end;
|
||||
command.abort_on_error= 1; /* avoid uninitialized variables */
|
||||
var_set_query_get_value(&command, v);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
@ -7590,6 +7613,22 @@ int append_warnings(DYNAMIC_STRING *ds, MYSQL* mysql)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
Handle situation where query is sent but there is no active connection
|
||||
(e.g directly after disconnect).
|
||||
|
||||
We emulate MySQL-compatible behaviour of sending something on a closed
|
||||
connection.
|
||||
*/
|
||||
static void handle_no_active_connection(struct st_command *command,
|
||||
struct st_connection *cn, DYNAMIC_STRING *ds)
|
||||
{
|
||||
handle_error(command, 2006, "MySQL server has gone away", "000000", ds);
|
||||
cn->pending= FALSE;
|
||||
var_set_errno(2006);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Run query using MySQL C API
|
||||
|
||||
|
@ -7616,11 +7655,7 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
|
|||
|
||||
if (!mysql)
|
||||
{
|
||||
/* Emulate old behaviour of sending something on a closed connection */
|
||||
handle_error(command, 2006, "MySQL server has gone away",
|
||||
"000000", ds);
|
||||
cn->pending= FALSE;
|
||||
var_set_errno(2006);
|
||||
handle_no_active_connection(command, cn, ds);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
|
129
cmake/cpack_rpm.cmake
Normal file
129
cmake/cpack_rpm.cmake
Normal file
|
@ -0,0 +1,129 @@
|
|||
IF(RPM)
|
||||
|
||||
SET(CPACK_GENERATOR "RPM")
|
||||
SET(CPACK_RPM_PACKAGE_DEBUG 1)
|
||||
SET(INSTALL_LAYOUT "RPM")
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7)
|
||||
|
||||
SET(CPACK_RPM_COMPONENT_INSTALL ON)
|
||||
|
||||
SET(CPACK_COMPONENT_SERVER_GROUP "server")
|
||||
SET(CPACK_COMPONENT_MANPAGESSERVER_GROUP "server")
|
||||
SET(CPACK_COMPONENT_INIFILES_GROUP "server")
|
||||
SET(CPACK_COMPONENT_SERVER_SCRIPTS_GROUP "server")
|
||||
SET(CPACK_COMPONENT_SUPPORTFILES_GROUP "server")
|
||||
SET(CPACK_COMPONENT_DEVELOPMENT_GROUP "devel")
|
||||
SET(CPACK_COMPONENT_MANPAGESDEVELOPMENT_GROUP "devel")
|
||||
SET(CPACK_COMPONENT_TEST_GROUP "test")
|
||||
SET(CPACK_COMPONENT_MANPAGESTEST_GROUP "test")
|
||||
SET(CPACK_COMPONENT_CLIENT_GROUP "client")
|
||||
SET(CPACK_COMPONENT_MANPAGESCLIENT_GROUP "client")
|
||||
SET(CPACK_COMPONENT_README_GROUP "server")
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_GROUP "shared")
|
||||
SET(CPACK_COMPONENT_COMMON_GROUP "common")
|
||||
SET(CPACK_COMPONENT_COMPAT_GROUP "compat")
|
||||
SET(CPACK_COMPONENTS_ALL Server ManPagesServer IniFiles Server_Scripts
|
||||
SupportFiles Development ManPagesDevelopment
|
||||
ManPagesTest Readme ManPagesClient Test
|
||||
Common Client SharedLibraries)
|
||||
|
||||
SET(CPACK_RPM_PACKAGE_NAME "MariaDB")
|
||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${VERSION}-${RPM}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
|
||||
SET(CPACK_RPM_PACKAGE_RELEASE 1) # FIX: add distribution name here
|
||||
SET(CPACK_RPM_PACKAGE_LICENSE "GPL")
|
||||
SET(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
|
||||
SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
|
||||
SET(CPACK_RPM_PACKAGE_URL "http://mariadb.org")
|
||||
SET(CPACK_RPM_PACKAGE_SUMMARY "MariaDB: a very fast and robust SQL database server")
|
||||
SET(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_SUMMARY}
|
||||
|
||||
It is GPL v2 licensed, which means you can use the it free of charge under the
|
||||
conditions of the GNU General Public License Version 2 (http://www.gnu.org/licenses/).
|
||||
|
||||
MariaDB documentation can be found at http://kb.askmonty.org/
|
||||
MariaDB bug reports should be submitted through https://mariadb.atlassian.net/
|
||||
|
||||
")
|
||||
|
||||
SET(CPACK_RPM_SPEC_MORE_DEFINE "
|
||||
%define mysql_vendor ${CPACK_PACKAGE_VENDOR}
|
||||
%define mysqlversion ${MYSQL_NO_DASH_VERSION}
|
||||
%define mysqldatadir /var/lib/mysql
|
||||
%define mysqld_user mysql
|
||||
%define mysqld_group mysql
|
||||
")
|
||||
|
||||
# this creative hack is described here: http://www.cmake.org/pipermail/cmake/2012-January/048416.html
|
||||
# both /etc and /etc/init.d should be ignored as of 2.8.7
|
||||
# only /etc/init.d as of 2.8.8
|
||||
# and eventually this hack should go away completely
|
||||
SET(CPACK_RPM_SPEC_MORE_DEFINE "${CPACK_RPM_SPEC_MORE_DEFINE}
|
||||
%define ignore \#
|
||||
")
|
||||
|
||||
SET(CPACK_RPM_PACKAGE_REQUIRES "MariaDB-common")
|
||||
|
||||
SET(CPACK_RPM_server_USER_FILELIST "%ignore /etc" "%ignore /etc/init.d")
|
||||
|
||||
SET(CPACK_RPM_client_PACKAGE_OBSOLETES "mysql-client MySQL-client MySQL-OurDelta-client")
|
||||
SET(CPACK_RPM_client_PACKAGE_PROVIDES "MariaDB-client MySQL-client mysql-client")
|
||||
|
||||
# this is a workaround for CPackRPM.cmake (as of 2.8.8) bug.
|
||||
# If a package group does not specify OBSOLETES/REQUIRES the values of the
|
||||
# previous (alphabetically) group will apply.
|
||||
SET(CPACK_RPM_common_PACKAGE_OBSOLETES "MySQL-common")
|
||||
SET(CPACK_RPM_common_PACKAGE_PROVIDES "MariaDB-common")
|
||||
|
||||
SET(CPACK_RPM_devel_PACKAGE_OBSOLETES "mysql-devel MySQL-devel MySQL-OurDelta-devel")
|
||||
SET(CPACK_RPM_devel_PACKAGE_PROVIDES "MariaDB-devel MySQL-devel mysql-devel")
|
||||
|
||||
SET(CPACK_RPM_server_PACKAGE_OBSOLETES "MariaDB mysql mysql-server MySQL-server MySQL-OurDelta-server")
|
||||
SET(CPACK_RPM_server_PACKAGE_PROVIDES "MariaDB MariaDB-server MySQL-server config(MariaDB-server) msqlormysql mysql mysql-server")
|
||||
SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh)
|
||||
SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-preun.sh)
|
||||
SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postin.sh)
|
||||
|
||||
SET(CPACK_RPM_shared_PACKAGE_OBSOLETES "mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared")
|
||||
SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.${SHARED_LIB_MAJOR_VERSION} libmysqlclient.so.${SHARED_LIB_MAJOR_VERSION}(libmysqlclient_${SHARED_LIB_MAJOR_VERSION}) libmysqlclient_r.so.${SHARED_LIB_MAJOR_VERSION} libmysqlclient_r.so.${SHARED_LIB_MAJOR_VERSION}(libmysqlclient_${SHARED_LIB_MAJOR_VERSION})")
|
||||
SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
|
||||
SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
|
||||
|
||||
SET(CPACK_RPM_test_PACKAGE_OBSOLETES "mysql-test MySQL-test MySQL-OurDelta-test")
|
||||
SET(CPACK_RPM_test_PACKAGE_PROVIDES "MariaDB-test MySQL-test mysql-test")
|
||||
|
||||
# workaround for lots of perl dependencies added by rpmbuild
|
||||
SET(CPACK_RPM_test_PACKAGE_PROVIDES "${CPACK_RPM_test_PACKAGE_PROVIDES} perl(lib::mtr_gcov.pl) perl(lib::mtr_gprof.pl) perl(lib::mtr_io.pl) perl(lib::mtr_misc.pl) perl(lib::mtr_process.pl) perl(lib::v1/mtr_cases.pl) perl(lib::v1/mtr_gcov.pl) perl(lib::v1/mtr_gprof.pl) perl(lib::v1/mtr_im.pl) perl(lib::v1/mtr_io.pl) perl(lib::v1/mtr_match.pl) perl(lib::v1/mtr_misc.pl) perl(lib::v1/mtr_process.pl) perl(lib::v1/mtr_report.pl) perl(lib::v1/mtr_stress.pl) perl(lib::v1/mtr_timer.pl) perl(lib::v1/mtr_unique.pl) perl(mtr_misc.pl)")
|
||||
|
||||
# If we want to build build MariaDB-shared-compat,
|
||||
# extract compat libraries from MariaDB-shared-5.3 rpm
|
||||
FILE(GLOB compat_rpm RELATIVE ${CMAKE_SOURCE_DIR}
|
||||
"${CMAKE_SOURCE_DIR}/../MariaDB-shared-5.3.*.rpm")
|
||||
IF (compat_rpm)
|
||||
MESSAGE("Using ${compat_rpm} to build MariaDB-compat")
|
||||
INSTALL(CODE "EXECUTE_PROCESS(
|
||||
COMMAND rpm2cpio ${CMAKE_SOURCE_DIR}/${compat_rpm}
|
||||
COMMAND cpio --extract --make-directories */libmysqlclient*.so.* -
|
||||
WORKING_DIRECTORY \$ENV{DESTDIR})
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND chmod -R a+rX .
|
||||
WORKING_DIRECTORY \$ENV{DESTDIR})"
|
||||
COMPONENT Compat)
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} Compat)
|
||||
|
||||
# RHEL6/CentOS6 install Postfix by default, and it requires
|
||||
# libmysqlclient.so.16 that pulls in mysql-libs-5.1.x
|
||||
# And the latter conflicts with our rpms.
|
||||
# Make sure that for these distribuions all our rpms require
|
||||
# MariaDB-compat, that will replace mysql-libs-5.1
|
||||
IF(RPM MATCHES "(rhel|centos)6")
|
||||
SET(CPACK_RPM_common_PACKAGE_REQUIRES "MariaDB-compat")
|
||||
ENDIF()
|
||||
ENDIF(compat_rpm)
|
||||
|
||||
SET(CPACK_RPM_compat_PACKAGE_REQUIRES "/bin/sh") # to mask CPACK_RPM_PACKAGE_REQUIRES
|
||||
SET(CPACK_RPM_compat_PACKAGE_PROVIDES "mysql-libs = 5.3.5") # exact version doesn't matter as long as it greater than 5.1
|
||||
SET(CPACK_RPM_compat_PACKAGE_OBSOLETES "mysql-libs < 5.3.5")
|
||||
|
||||
ENDIF(RPM)
|
||||
|
|
@ -41,6 +41,7 @@
|
|||
# - INSTALL_BINDIR (directory with client executables and scripts)
|
||||
# - INSTALL_SBINDIR (directory with mysqld)
|
||||
# - INSTALL_SCRIPTDIR (several scripts, rarely used)
|
||||
# - INSTALL_SYSCONFDIR (config files. Usually /etc or nothing)
|
||||
#
|
||||
# - INSTALL_LIBDIR (directory with client end embedded libraries)
|
||||
# - INSTALL_PLUGINDIR (directory for plugins)
|
||||
|
@ -60,14 +61,16 @@
|
|||
#
|
||||
# - INSTALL_MYSQLDATADIR (data directory)
|
||||
#
|
||||
# - INSTALL_UNIX_ADDRDIR (path to mysql.sock)
|
||||
#
|
||||
# When changing this page, _please_ do not forget to update public Wiki
|
||||
# http://forge.mysql.com/wiki/CMake#Fine-tuning_installation_paths
|
||||
|
||||
IF(NOT INSTALL_LAYOUT)
|
||||
SET(DEFAULT_INSTALL_LAYOUT "STANDALONE")
|
||||
SET(INSTALL_LAYOUT "STANDALONE")
|
||||
ENDIF()
|
||||
|
||||
SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}"
|
||||
SET(INSTALL_LAYOUT "${INSTALL_LAYOUT}"
|
||||
CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) RPM DEB SVR4")
|
||||
|
||||
IF(UNIX)
|
||||
|
@ -92,10 +95,6 @@ IF(UNIX)
|
|||
MESSAGE(FATAL_ERROR "Invalid INSTALL_LAYOUT parameter:${INSTALL_LAYOUT}."
|
||||
" Choose between ${VALID_INSTALL_LAYOUTS}" )
|
||||
ENDIF()
|
||||
|
||||
SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc"
|
||||
CACHE PATH "config directory (for my.cnf)")
|
||||
MARK_AS_ADVANCED(SYSCONFDIR)
|
||||
ENDIF()
|
||||
|
||||
#
|
||||
|
@ -131,12 +130,14 @@ SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files")
|
|||
SET(INSTALL_MYSQLDATADIR_STANDALONE "data")
|
||||
SET(INSTALL_PLUGINTESTDIR_STANDALONE ${plugin_tests})
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_STANDALONE "/tmp/mysql.sock")
|
||||
#
|
||||
# RPM layout
|
||||
#
|
||||
SET(INSTALL_BINDIR_RPM "bin")
|
||||
SET(INSTALL_SBINDIR_RPM "sbin")
|
||||
SET(INSTALL_SCRIPTDIR_RPM "bin")
|
||||
SET(INSTALL_SYSCONFDIR_RPM "/etc")
|
||||
#
|
||||
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
|
||||
SET(INSTALL_LIBDIR_RPM "lib64")
|
||||
|
@ -148,8 +149,8 @@ ENDIF()
|
|||
#
|
||||
SET(INSTALL_INCLUDEDIR_RPM "include/mysql")
|
||||
#
|
||||
#SET(INSTALL_DOCDIR_RPM unset - installed directly by RPM)
|
||||
#SET(INSTALL_DOCREADMEDIR_RPM unset - installed directly by RPM)
|
||||
SET(INSTALL_DOCDIR_RPM "share/doc/${CPACK_SOURCE_PACKAGE_FILE_NAME}")
|
||||
SET(INSTALL_DOCREADMEDIR_RPM "share/doc/${CPACK_SOURCE_PACKAGE_FILE_NAME}")
|
||||
SET(INSTALL_INFODIR_RPM "share/info")
|
||||
SET(INSTALL_MANDIR_RPM "share/man")
|
||||
#
|
||||
|
@ -162,6 +163,8 @@ SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql")
|
|||
SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql")
|
||||
SET(INSTALL_PLUGINTESTDIR_RPM ${plugin_tests})
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_RPM "${INSTALL_MYSQLDATADIR_RPM}/mysql.sock")
|
||||
|
||||
#
|
||||
# DEB layout
|
||||
#
|
||||
|
@ -188,6 +191,7 @@ SET(INSTALL_SUPPORTFILESDIR_DEB "support-files")
|
|||
SET(INSTALL_MYSQLDATADIR_DEB "/var/lib/mysql")
|
||||
SET(INSTALL_PLUGINTESTDIR_DEB ${plugin_tests})
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_DEB "/tmp/mysql.sock")
|
||||
#
|
||||
# SVR4 layout
|
||||
#
|
||||
|
@ -214,6 +218,7 @@ SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files")
|
|||
SET(INSTALL_MYSQLDATADIR_SVR4 "/var/lib/mysql")
|
||||
SET(INSTALL_PLUGINTESTDIR_SVR4 ${plugin_tests})
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_SVR "/tmp/mysql.sock")
|
||||
|
||||
# Clear cached variables if install layout was changed
|
||||
IF(OLD_INSTALL_LAYOUT)
|
||||
|
@ -226,9 +231,14 @@ SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "")
|
|||
# Set INSTALL_FOODIR variables for chosen layout (for example, INSTALL_BINDIR
|
||||
# will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE
|
||||
# layout is chosen)
|
||||
FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN
|
||||
INFO MYSQLTEST SQLBENCH DOCREADME SUPPORTFILES MYSQLDATA PLUGINTEST)
|
||||
FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN SYSCONF
|
||||
INFO MYSQLTEST SQLBENCH DOCREADME SUPPORTFILES MYSQLDATA PLUGINTEST UNIX_ADDR)
|
||||
SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}}
|
||||
CACHE STRING "${var} installation directory" ${FORCE})
|
||||
MARK_AS_ADVANCED(INSTALL_${var}DIR)
|
||||
ENDFOREACH()
|
||||
|
||||
IF(NOT MYSQL_UNIX_ADDR)
|
||||
SET(MYSQL_UNIX_ADDR ${INSTALL_UNIX_ADDRDIR})
|
||||
ENDIF()
|
||||
|
||||
|
|
|
@ -80,15 +80,10 @@ ELSEIF(MYSQL_TCP_PORT EQUAL MYSQL_TCP_PORT_DEFAULT)
|
|||
SET(MYSQL_TCP_PORT_DEFAULT "0")
|
||||
ENDIF()
|
||||
|
||||
|
||||
IF(NOT MYSQL_UNIX_ADDR)
|
||||
SET(MYSQL_UNIX_ADDR "/tmp/mysql.sock")
|
||||
ENDIF()
|
||||
IF(NOT COMPILATION_COMMENT)
|
||||
SET(COMPILATION_COMMENT "Source distribution")
|
||||
ENDIF()
|
||||
|
||||
|
||||
INCLUDE(package_name)
|
||||
IF(NOT CPACK_PACKAGE_FILE_NAME)
|
||||
GET_PACKAGE_FILE_NAME(CPACK_PACKAGE_FILE_NAME)
|
||||
|
@ -104,7 +99,6 @@ ENDIF()
|
|||
SET(CPACK_PACKAGE_CONTACT "MariaDB team <info@montyprogram.com>")
|
||||
SET(CPACK_PACKAGE_VENDOR "Monty Program AB")
|
||||
SET(CPACK_SOURCE_GENERATOR "TGZ")
|
||||
INCLUDE(cpack_source_ignore_files)
|
||||
|
||||
# Defintions for windows version resources
|
||||
SET(PRODUCTNAME "MariaDB Server")
|
||||
|
|
|
@ -211,15 +211,7 @@ MACRO(MYSQL_ADD_PLUGIN)
|
|||
SET(ARG_COMPONENT Server)
|
||||
ENDIF()
|
||||
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR} COMPONENT ${ARG_COMPONENT})
|
||||
INSTALL_DEBUG_TARGET(${target} DESTINATION ${INSTALL_PLUGINDIR}/debug COMPONENT ${ARG_COMPONENT})
|
||||
# Add installed files to list for RPMs
|
||||
FILE(APPEND ${CMAKE_BINARY_DIR}/support-files/plugins.files
|
||||
"%attr(755, root, root) %{_prefix}/${INSTALL_PLUGINDIR}/${ARG_MODULE_OUTPUT_NAME}.so\n"
|
||||
"%attr(755, root, root) %{_prefix}/${INSTALL_PLUGINDIR}/debug/${ARG_MODULE_OUTPUT_NAME}.so\n")
|
||||
# For internal testing in PB2, append collections files
|
||||
IF(DEFINED ENV{PB2WORKDIR})
|
||||
PLUGIN_APPEND_COLLECTIONS(${plugin})
|
||||
ENDIF()
|
||||
#INSTALL_DEBUG_TARGET(${target} DESTINATION ${INSTALL_PLUGINDIR}/debug COMPONENT ${ARG_COMPONENT})
|
||||
ELSE()
|
||||
IF(WITHOUT_${plugin})
|
||||
# Update cache variable
|
||||
|
|
6
debian/additions/mariadb.cnf
vendored
6
debian/additions/mariadb.cnf
vendored
|
@ -3,7 +3,7 @@
|
|||
|
||||
[client]
|
||||
# Default is Latin1, if you need UTF-8 set this (also in server section)
|
||||
#default-character-set = utf8
|
||||
#character-set-server = utf8
|
||||
|
||||
[mysqld]
|
||||
#
|
||||
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# Default is Latin1, if you need UTF-8 set all this (also in client section)
|
||||
#
|
||||
#default-character-set = utf8
|
||||
#default-collation = utf8_general_ci
|
||||
#character-set-server = utf8
|
||||
#collation-server = utf8_general_ci
|
||||
#character_set_server = utf8
|
||||
#collation_server = utf8_general_ci
|
||||
|
|
|
@ -72,7 +72,7 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(replace replace.c COMPONENT Junk)
|
||||
MYSQL_ADD_EXECUTABLE(replace replace.c COMPONENT Server)
|
||||
TARGET_LINK_LIBRARIES(replace mysys)
|
||||
IF(UNIX)
|
||||
MYSQL_ADD_EXECUTABLE(innochecksum innochecksum.c)
|
||||
|
@ -80,6 +80,6 @@ IF(UNIX)
|
|||
MYSQL_ADD_EXECUTABLE(resolve_stack_dump resolve_stack_dump.c)
|
||||
TARGET_LINK_LIBRARIES(resolve_stack_dump mysys)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysql_waitpid mysql_waitpid.c)
|
||||
MYSQL_ADD_EXECUTABLE(mysql_waitpid mysql_waitpid.c COMPONENT Client)
|
||||
TARGET_LINK_LIBRARIES(mysql_waitpid mysys)
|
||||
ENDIF()
|
||||
|
|
|
@ -25,6 +25,7 @@ SET(HEADERS
|
|||
mysql.h
|
||||
mysql_com.h
|
||||
mysql_time.h
|
||||
ma_dyncol.h
|
||||
my_list.h
|
||||
my_alloc.h
|
||||
typelib.h
|
||||
|
@ -33,6 +34,7 @@ SET(HEADERS
|
|||
my_sys.h
|
||||
my_xml.h
|
||||
mysql_embed.h
|
||||
my_decimal_limits.h
|
||||
my_pthread.h
|
||||
decimal.h
|
||||
errmsg.h
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 1995, 2012 Monty Program Ab
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
@ -11,8 +11,9 @@
|
|||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||
|
||||
|
||||
/* This file includes constants used with all databases */
|
||||
|
||||
|
@ -460,11 +461,12 @@ enum ha_base_keytype {
|
|||
#define HA_ERR_INDEX_COL_TOO_LONG 179 /* Index column length exceeds limit */
|
||||
#define HA_ERR_INDEX_CORRUPT 180 /* Index corrupted */
|
||||
#define HA_ERR_UNDO_REC_TOO_BIG 181 /* Undo log record too big */
|
||||
#define HA_FTS_INVALID_DOCID 182 /* Invalid InnoDB Doc ID */
|
||||
#define HA_ERR_ROW_NOT_VISIBLE 183
|
||||
#define HA_ERR_ABORTED_BY_USER 184
|
||||
#define HA_ERR_DISK_FULL 185
|
||||
#define HA_ERR_LAST 185 /* Copy of last error nr */
|
||||
#define HA_ERR_TABLE_IN_FK_CHECK 182 /* Table being used in foreign key check */
|
||||
#define HA_FTS_INVALID_DOCID 183 /* Invalid InnoDB Doc ID */
|
||||
#define HA_ERR_ROW_NOT_VISIBLE 184
|
||||
#define HA_ERR_ABORTED_BY_USER 185
|
||||
#define HA_ERR_DISK_FULL 186
|
||||
#define HA_ERR_LAST 186 /* Copy of last error nr */
|
||||
|
||||
/* Number of different errors */
|
||||
#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)
|
||||
|
|
|
@ -1429,6 +1429,10 @@ static inline char *dlerror(void)
|
|||
/* Length of decimal number represented by INT64. */
|
||||
#define MY_INT64_NUM_DECIMAL_DIGITS 21
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <limits> /* should be included before min/max macros */
|
||||
#endif
|
||||
|
||||
/* Define some useful general macros (should be done after all headers). */
|
||||
#if !defined(max)
|
||||
#define max(a, b) ((a) > (b) ? (a) : (b))
|
||||
|
|
|
@ -18,28 +18,8 @@
|
|||
|
||||
#define PROBES_MYSQL_H
|
||||
|
||||
|
||||
#if defined(HAVE_DTRACE) && !defined(DISABLE_DTRACE)
|
||||
|
||||
#ifdef __linux__
|
||||
/*
|
||||
On Linux, generated probes header may include C++ header
|
||||
<limits> which conflicts with min and max macros from my_global.h .
|
||||
To fix, temporarily undefine the macros.
|
||||
*/
|
||||
#pragma push_macro("min")
|
||||
#pragma push_macro("max")
|
||||
#undef min
|
||||
#undef max
|
||||
#endif
|
||||
|
||||
#include "probes_mysql_dtrace.h"
|
||||
|
||||
#ifdef __linux__
|
||||
#pragma pop_macro("min")
|
||||
#pragma pop_macro("max")
|
||||
#endif
|
||||
|
||||
#else /* no dtrace */
|
||||
#include "probes_mysql_nodtrace.h"
|
||||
#endif
|
||||
|
|
|
@ -59,6 +59,9 @@ Vio* vio_new_win32shared_memory(HANDLE handle_file_map,
|
|||
#define HANDLE void *
|
||||
#endif /* __WIN__ */
|
||||
|
||||
/* backport from 5.6 where it is part of PSI, not vio_*() */
|
||||
int mysql_socket_shutdown(my_socket mysql_socket, int how);
|
||||
|
||||
void vio_delete(Vio* vio);
|
||||
int vio_close(Vio* vio);
|
||||
void vio_reset(Vio* vio, enum enum_vio_type type,
|
||||
|
|
|
@ -134,7 +134,7 @@ FOREACH(LIB ${LIBS})
|
|||
ENDFOREACH()
|
||||
|
||||
MERGE_LIBRARIES(mysqlserver STATIC ${EMBEDDED_LIBS}
|
||||
OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME} COMPONENT Embedded)
|
||||
OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME} COMPONENT Development)
|
||||
|
||||
# Visual Studio users need debug static library
|
||||
IF(MSVC)
|
||||
|
@ -148,7 +148,7 @@ ENDIF()
|
|||
|
||||
IF(NOT DISABLE_SHARED)
|
||||
MERGE_LIBRARIES(libmysqld SHARED mysqlserver EXPORTS ${CLIENT_API_FUNCTIONS}
|
||||
COMPONENT Embedded)
|
||||
COMPONENT Server)
|
||||
IF(UNIX)
|
||||
# Name the shared library, handle versioning (provides same api as client
|
||||
# library hence the same version)
|
||||
|
|
|
@ -26,7 +26,7 @@ ADD_DEFINITIONS(-DEMBEDDED_LIBRARY -UMYSQL_CLIENT)
|
|||
|
||||
MYSQL_ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc
|
||||
../../client/mysql.cc ../../client/readline.cc
|
||||
COMPONENT Test)
|
||||
COMPONENT Client)
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded mysqlserver)
|
||||
IF(UNIX)
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded ${MY_READLINE_LIBRARY})
|
||||
|
|
|
@ -344,6 +344,8 @@ static int emb_stmt_execute(MYSQL_STMT *stmt)
|
|||
set_stmt_errmsg(stmt, net);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else if (stmt->mysql->status == MYSQL_STATUS_GET_RESULT)
|
||||
stmt->mysql->status= MYSQL_STATUS_STATEMENT_GET_RESULT;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2012, Monty Program Ab
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -13,26 +13,26 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Copy man pages
|
||||
FILE(GLOB MAN1_FILES *.1)
|
||||
FILE(GLOB MAN1_EXCLUDE make_win_bin_dist.1)
|
||||
FILE(GLOB MAN1_NDB ndb*.1)
|
||||
FILE(GLOB MAN8_FILES *.8)
|
||||
FILE(GLOB MAN8_NDB ndb*.8)
|
||||
IF(MAN1_FILES)
|
||||
IF(MAN1_EXCLUDE)
|
||||
LIST(REMOVE_ITEM MAN1_FILES ${MAN1_EXCLUDE})
|
||||
ENDIF()
|
||||
IF(MAN1_NDB)
|
||||
LIST(REMOVE_ITEM MAN1_FILES ${MAN1_NDB})
|
||||
ENDIF()
|
||||
INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1
|
||||
COMPONENT ManPages)
|
||||
ENDIF()
|
||||
IF(MAN8_FILES)
|
||||
IF(MAN8_NDB)
|
||||
LIST(REMOVE_ITEM MAN8_FILES ${MAN8_NDB})
|
||||
ENDIF()
|
||||
INSTALL(FILES ${MAN8_FILES} DESTINATION ${INSTALL_MANDIR}/man8
|
||||
COMPONENT ManPages)
|
||||
ENDIF()
|
||||
SET(MAN1_SERVER innochecksum.1 my_print_defaults.1 myisam_ftdump.1 myisamchk.1
|
||||
myisamlog.1 myisampack.1 mysql.server.1
|
||||
mysql_convert_table_format.1 mysql_fix_extensions.1
|
||||
mysql_fix_privilege_tables.1 mysql_install_db.1
|
||||
mysql_secure_installation.1 mysql_setpermission.1
|
||||
mysql_tzinfo_to_sql.1 mysql_upgrade.1 mysql_zap.1
|
||||
mysqld_multi.1 mysqld_safe.1 mysqldumpslow.1 mysqlhotcopy.1
|
||||
mysqlman.1 mysqltest.1 perror.1 replace.1 resolve_stack_dump.1
|
||||
resolveip.1)
|
||||
SET(MAN8_SERVER mysqld.8 mysqlmanager.8)
|
||||
SET(MAN1_CLIENT msql2mysql.1 mysql.1 mysql_find_rows.1 mysql_waitpid.1
|
||||
mysqlaccess.1 mysqladmin.1 mysqlbinlog.1 mysqlcheck.1
|
||||
mysqldump.1 mysqlimport.1 mysqlshow.1 mysqlslap.1)
|
||||
SET(MAN1_DEVEL mysql_config.1)
|
||||
SET(MAN1_TEST mysql-stress-test.pl.1 mysql-test-run.pl.1 mysql_client_test.1
|
||||
mysqltest_embedded.1 mysql_client_test_embedded.1)
|
||||
|
||||
INSTALL(FILES ${MAN1_SERVER} DESTINATION ${INSTALL_MANDIR}/man1 COMPONENT ManPagesServer)
|
||||
INSTALL(FILES ${MAN8_SERVER} DESTINATION ${INSTALL_MANDIR}/man8 COMPONENT ManPagesServer)
|
||||
INSTALL(FILES ${MAN1_CLIENT} DESTINATION ${INSTALL_MANDIR}/man1 COMPONENT ManPagesClient)
|
||||
INSTALL(FILES ${MAN1_DEVEL} DESTINATION ${INSTALL_MANDIR}/man1 COMPONENT ManPagesDevelopment)
|
||||
INSTALL(FILES ${MAN1_TEST} DESTINATION ${INSTALL_MANDIR}/man1 COMPONENT ManPagesTest)
|
||||
|
||||
|
|
|
@ -2,17 +2,19 @@
|
|||
# Basic tests of row-level logging
|
||||
#
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
# Add suppression for expected warning(s) in error log
|
||||
call mtr.add_suppression("Can't find record in 't.'");
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
#
|
||||
# First we test tables with only an index.
|
||||
#
|
||||
|
||||
#BUG#12662190 - COM_COMMIT IS NOT INCREMENTED FROM THE BINARY LOGS ON SLAVE, COM_BEGIN IS
|
||||
#Testing command counters -BEFORE
|
||||
#Storing the before counts of Slave
|
||||
connection slave;
|
||||
let $slave_com_commit_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_commit', Value, 1);
|
||||
let $slave_com_insert_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_insert', Value, 1);
|
||||
let $slave_com_delete_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_delete', Value, 1);
|
||||
let $slave_com_update_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_update', Value, 1);
|
||||
|
||||
connection master;
|
||||
eval CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)$extra_index_t1) ENGINE = $type ;
|
||||
SELECT * FROM t1;
|
||||
|
@ -47,6 +49,32 @@ SELECT * FROM t1 ORDER BY C1,C2;
|
|||
sync_slave_with_master;
|
||||
SELECT * FROM t1 ORDER BY C1,C2;
|
||||
|
||||
#BUG#12662190 - COM_COMMIT IS NOT INCREMENTED FROM THE BINARY LOGS ON SLAVE, COM_BEGIN IS
|
||||
#Testing command counters -AFTER
|
||||
#Storing the after counts of Slave
|
||||
connection slave;
|
||||
let $slave_com_commit_after= query_get_value(SHOW GLOBAL STATUS LIKE 'com_commit', Value, 1);
|
||||
let $slave_com_insert_after= query_get_value(SHOW GLOBAL STATUS LIKE 'com_insert', Value, 1);
|
||||
let $slave_com_delete_after= query_get_value(SHOW GLOBAL STATUS LIKE 'com_delete', Value, 1);
|
||||
let $slave_com_update_after= query_get_value(SHOW GLOBAL STATUS LIKE 'com_update', Value, 1);
|
||||
|
||||
#Commit count check
|
||||
--let $assert_text= Counter for COM_COMMIT is consistent with the number of actual commits
|
||||
--let $assert_cond= $slave_com_commit_after - $slave_com_commit_before = 4
|
||||
--source include/assert.inc
|
||||
#Insert count check
|
||||
--let $assert_text= Counter for COM_INSERT is consistent with the number of actual inserts
|
||||
--let $assert_cond= $slave_com_insert_after - $slave_com_insert_before = 2
|
||||
--source include/assert.inc
|
||||
#Delete count check
|
||||
--let $assert_text= Counter for COM_DELETE is consistent with the number of actual deletes
|
||||
--let $assert_cond= $slave_com_delete_after - $slave_com_delete_before = 1
|
||||
--source include/assert.inc
|
||||
#Update count check
|
||||
--let $assert_text= Counter for COM_UPDATE is consistent with the number of actual updates
|
||||
--let $assert_cond= $slave_com_update_after - $slave_com_update_before = 1
|
||||
--source include/assert.inc
|
||||
|
||||
# Testing update with a condition that does not match any rows, but
|
||||
# which has a match for the index.
|
||||
connection master;
|
||||
|
|
11
mysql-test/r/blackhole.result
Normal file
11
mysql-test/r/blackhole.result
Normal file
|
@ -0,0 +1,11 @@
|
|||
#
|
||||
# Bug #11880012: INDEX_SUBQUERY, BLACKHOLE,
|
||||
# HANG IN PREPARING WITH 100% CPU USAGE
|
||||
#
|
||||
CREATE TABLE t1(a INT NOT NULL);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
CREATE TABLE t2 (a INT UNSIGNED, b INT, UNIQUE KEY (a, b)) ENGINE=BLACKHOLE;
|
||||
SELECT 1 FROM t1 WHERE a = ANY (SELECT a FROM t2);
|
||||
1
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.5 tests
|
|
@ -728,6 +728,15 @@ length(CONVERT(repeat('a',2048), CHAR(2049)))
|
|||
Warnings:
|
||||
Warning 1301 Result of cast_as_char() was larger than max_allowed_packet (2048) - truncated
|
||||
SET @@GLOBAL.max_allowed_packet=default;
|
||||
#
|
||||
# Bug#13519724 63793: CRASH IN DTCOLLATION::SET(DTCOLLATION &SET)
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(50));
|
||||
SELECT a FROM t1
|
||||
WHERE CAST(a as BINARY)=x'62736D697468'
|
||||
AND CAST(a AS BINARY)=x'65736D697468';
|
||||
a
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
select cast("2101-00-01 02:03:04" as datetime);
|
||||
cast("2101-00-01 02:03:04" as datetime)
|
||||
|
|
|
@ -2097,6 +2097,24 @@ a b
|
|||
drop table t1;
|
||||
set optimizer_switch=@save978847_optimizer_switch;
|
||||
#
|
||||
# LP bug998516 Server hangs on INSERT .. SELECT with derived_merge,
|
||||
# FROM subquery, UNION
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 (b INT);
|
||||
INSERT INTO t2 VALUES (3),(4);
|
||||
INSERT INTO t1 SELECT * FROM ( SELECT * FROM t1 ) AS alias UNION SELECT * FROM t2;
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
drop table t1,t2;
|
||||
#
|
||||
# end of 5.3 tests
|
||||
#
|
||||
set optimizer_switch=@exit_optimizer_switch;
|
||||
|
|
|
@ -146,3 +146,17 @@ ERROR 22003: BIGINT value is out of range in '(-(73) * -(2465717823867977728))'
|
|||
#
|
||||
# End Bug#57882
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TABLE t2(a INT PRIMARY KEY, b INT);
|
||||
SELECT '' AS b FROM t1 GROUP BY VALUES(b);
|
||||
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
||||
REPLACE t2(b) SELECT '' AS b FROM t1 GROUP BY VALUES(b);
|
||||
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
||||
UPDATE t2 SET a=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
|
||||
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
||||
INSERT INTO t2 VALUES (1,0) ON DUPLICATE KEY UPDATE
|
||||
b=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
|
||||
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
||||
INSERT INTO t2(a,b) VALUES (1,0) ON DUPLICATE KEY UPDATE
|
||||
b=(SELECT VALUES(a)+2 FROM t1);
|
||||
DROP TABLE t1, t2;
|
||||
|
|
|
@ -692,8 +692,10 @@ PREPARE stmt FROM
|
|||
WHERE t1.f1 GROUP BY t1.f1))';
|
||||
EXECUTE stmt;
|
||||
1
|
||||
1
|
||||
EXECUTE stmt;
|
||||
1
|
||||
1
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
|
|
@ -146,6 +146,19 @@ count(*) min(7) max(7)
|
|||
0 NULL NULL
|
||||
drop table t1m, t1i, t2m, t2i;
|
||||
#
|
||||
# Bug#13723054 CRASH WITH MIN/MAX AFTER QUICK_GROUP_MIN_MAX_SELECT::NEXT_MIN
|
||||
#
|
||||
CREATE TABLE t1(a BLOB, b VARCHAR(255) CHARSET LATIN1, c INT,
|
||||
KEY(b, c, a(765))) ENGINE=INNODB;
|
||||
INSERT INTO t1(a, b, c) VALUES ('', 'a', 0), ('', 'a', null), ('', 'a', 0);
|
||||
SELECT MIN(c) FROM t1 GROUP BY b;
|
||||
MIN(c)
|
||||
0
|
||||
EXPLAIN SELECT MIN(c) FROM t1 GROUP BY b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL b 263 NULL 4 Using index for group-by
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #57954: BIT_AND function returns incorrect results when
|
||||
# semijoin=on
|
||||
CREATE TABLE c (
|
||||
|
|
|
@ -217,3 +217,20 @@ foo
|
|||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a'
|
||||
#
|
||||
# LP bug#998321 Simple query with IF expression causes an
|
||||
# assertion abort (see also mysql Bug#12620084)
|
||||
#
|
||||
SELECT if(0, (SELECT min('hello')), NULL);
|
||||
if(0, (SELECT min('hello')), NULL)
|
||||
NULL
|
||||
SELECT if(1, (SELECT min('hello')), NULL);
|
||||
if(1, (SELECT min('hello')), NULL)
|
||||
hello
|
||||
SELECT if(0, NULL, (SELECT min('hello')));
|
||||
if(0, NULL, (SELECT min('hello')))
|
||||
hello
|
||||
SELECT if(1, NULL, (SELECT min('hello')));
|
||||
if(1, NULL, (SELECT min('hello')))
|
||||
NULL
|
||||
End of 5.2 tests
|
||||
|
|
|
@ -1430,6 +1430,19 @@ count(*)
|
|||
DROP DATABASE gis_ogs;
|
||||
USE test;
|
||||
#
|
||||
# BUG#12414917 - ISCLOSED() CRASHES ON 64-BIT BUILDS
|
||||
#
|
||||
SELECT ISCLOSED(CONVERT(CONCAT(' ', 0x2), BINARY(20)));
|
||||
ISCLOSED(CONVERT(CONCAT(' ', 0x2), BINARY(20)))
|
||||
NULL
|
||||
#
|
||||
# BUG#12537203 - CRASH WHEN SUBSELECTING GLOBAL VARIABLES IN
|
||||
# GEOMETRY FUNCTION ARGUMENTS
|
||||
#
|
||||
SELECT GEOMETRYCOLLECTION((SELECT @@OLD));
|
||||
ERROR 22007: Illegal non geometric '' value found during parsing
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Bug#11908153: CRASH AND/OR VALGRIND ERRORS IN FIELD_BLOB::GET_KEY_IMAGE
|
||||
#
|
||||
CREATE TABLE g1
|
||||
|
|
|
@ -2021,8 +2021,88 @@ zzz
|
|||
3
|
||||
4
|
||||
8
|
||||
#TODO: in merge with 5.3 add original test suite
|
||||
SET @save_optimizer_switch967242=@@optimizer_switch;
|
||||
SET optimizer_switch = 'in_to_exists=on';
|
||||
SELECT t2_1.b
|
||||
FROM t1 JOIN t2 AS t2_1 JOIN t2 AS t2_2
|
||||
ON (t2_2.b = t2_1.b ) AND (t2_2.c = t2_1.c )
|
||||
WHERE
|
||||
( SELECT COUNT(*) FROM t2 ) IS NOT NULL
|
||||
OR a = t2_1.c
|
||||
GROUP BY t2_1.b;
|
||||
b
|
||||
0
|
||||
3
|
||||
4
|
||||
8
|
||||
SET optimizer_switch=@save_optimizer_switch967242;
|
||||
drop table t1, t2;
|
||||
#
|
||||
# Bug#12578908: SELECT SQL_BUFFER_RESULT OUTPUTS TOO MANY
|
||||
# ROWS WHEN GROUP IS OPTIMIZED AWAY
|
||||
#
|
||||
CREATE TABLE t1 (col1 int, col2 int) ;
|
||||
INSERT INTO t1 VALUES (10,1),(11,7);
|
||||
CREATE TABLE t2 (col1 int, col2 int) ;
|
||||
INSERT INTO t2 VALUES (10,8);
|
||||
|
||||
EXPLAIN SELECT SQL_BUFFER_RESULT t2.col2 FROM t2 JOIN t1 ON t1.col1 GROUP BY t2.col2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 system NULL NULL NULL NULL 1 Using temporary
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
SELECT SQL_BUFFER_RESULT t2.col2 FROM t2 JOIN t1 ON t1.col1 GROUP BY t2.col2;
|
||||
col2
|
||||
8
|
||||
|
||||
EXPLAIN SELECT t2.col2 FROM t2 JOIN t1 ON t1.col1 GROUP BY t2.col2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 system NULL NULL NULL NULL 1
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
SELECT t2.col2 FROM t2 JOIN t1 ON t1.col1 GROUP BY t2.col2;
|
||||
col2
|
||||
8
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# BUG#12640437: USING SQL_BUFFER_RESULT RESULTS IN A
|
||||
# DIFFERENT QUERY OUTPUT
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a int,
|
||||
b varchar(1),
|
||||
KEY (b,a)
|
||||
);
|
||||
INSERT INTO t1 VALUES (1,NULL),(0,'a');
|
||||
|
||||
EXPLAIN SELECT SQL_BUFFER_RESULT MIN(a), b FROM t1 WHERE t1.b = 'a' GROUP BY b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range b b 9 NULL 2 Using where; Using index for group-by; Using temporary
|
||||
|
||||
SELECT SQL_BUFFER_RESULT MIN(a), b FROM t1 WHERE t1.b = 'a' GROUP BY b;
|
||||
MIN(a) b
|
||||
0 a
|
||||
|
||||
EXPLAIN SELECT MIN(a), b FROM t1 WHERE t1.b = 'a' GROUP BY b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range b b 9 NULL 2 Using where; Using index for group-by
|
||||
|
||||
SELECT MIN(a), b FROM t1 WHERE t1.b = 'a' GROUP BY b;
|
||||
MIN(a) b
|
||||
0 a
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# LP bug#993726 Wrong result from a query with ALL subquery predicate in WHERE
|
||||
#
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (0);
|
||||
SELECT 1 FROM t1 WHERE 1 > ALL(SELECT 1 FROM t1 WHERE a!=0);
|
||||
1
|
||||
1
|
||||
SELECT max(1) FROM t1 WHERE a!=0;
|
||||
max(1)
|
||||
NULL
|
||||
drop table t1;
|
||||
# End of 5.2 tests
|
||||
#
|
||||
# lp:872702: Crash in add_ref_to_table_cond() when grouping by a PK
|
||||
|
|
|
@ -1855,6 +1855,30 @@ f1 f1 f2
|
|||
DROP TABLE t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# LP BUG#994392: Wrong result with RIGHT/LEFT JOIN and ALL subquery
|
||||
# predicate in WHERE condition.
|
||||
#
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES(9);
|
||||
CREATE TABLE t2(b INT);
|
||||
INSERT INTO t2 VALUES(8);
|
||||
CREATE TABLE t3(c INT);
|
||||
INSERT INTO t3 VALUES(3);
|
||||
SELECT * FROM t2 RIGHT JOIN t3 ON(c = b) WHERE b < ALL(SELECT a FROM t1 WHERE a <= 7);
|
||||
b c
|
||||
NULL 3
|
||||
SELECT * FROM t3 LEFT JOIN t2 ON(c = b) WHERE b < ALL(SELECT a FROM t1 WHERE a <= 7);
|
||||
c b
|
||||
3 NULL
|
||||
SELECT * FROM t2 RIGHT JOIN t3 ON(c = b) WHERE b not in (SELECT a FROM t1 WHERE a <= 7);
|
||||
b c
|
||||
NULL 3
|
||||
SELECT * FROM t3 LEFT JOIN t2 ON(c = b) WHERE b not in (SELECT a FROM t1 WHERE a <= 7);
|
||||
c b
|
||||
3 NULL
|
||||
drop table t1,t2,t3;
|
||||
End of 5.2 tests
|
||||
#
|
||||
# LP bug #813447: LEFT JOIN with single-row inner table and
|
||||
# a subquery in ON expression
|
||||
#
|
||||
|
|
|
@ -1866,6 +1866,30 @@ f1 f1 f2
|
|||
DROP TABLE t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# LP BUG#994392: Wrong result with RIGHT/LEFT JOIN and ALL subquery
|
||||
# predicate in WHERE condition.
|
||||
#
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES(9);
|
||||
CREATE TABLE t2(b INT);
|
||||
INSERT INTO t2 VALUES(8);
|
||||
CREATE TABLE t3(c INT);
|
||||
INSERT INTO t3 VALUES(3);
|
||||
SELECT * FROM t2 RIGHT JOIN t3 ON(c = b) WHERE b < ALL(SELECT a FROM t1 WHERE a <= 7);
|
||||
b c
|
||||
NULL 3
|
||||
SELECT * FROM t3 LEFT JOIN t2 ON(c = b) WHERE b < ALL(SELECT a FROM t1 WHERE a <= 7);
|
||||
c b
|
||||
3 NULL
|
||||
SELECT * FROM t2 RIGHT JOIN t3 ON(c = b) WHERE b not in (SELECT a FROM t1 WHERE a <= 7);
|
||||
b c
|
||||
NULL 3
|
||||
SELECT * FROM t3 LEFT JOIN t2 ON(c = b) WHERE b not in (SELECT a FROM t1 WHERE a <= 7);
|
||||
c b
|
||||
3 NULL
|
||||
drop table t1,t2,t3;
|
||||
End of 5.2 tests
|
||||
#
|
||||
# LP bug #813447: LEFT JOIN with single-row inner table and
|
||||
# a subquery in ON expression
|
||||
#
|
||||
|
|
|
@ -320,22 +320,22 @@ TRUNCATE TABLE mysql.slow_log;
|
|||
CREATE TABLE t1 (a INT);
|
||||
CREATE TABLE t2 (b INT, PRIMARY KEY (b));
|
||||
INSERT INTO t2 VALUES (3),(4);
|
||||
INSERT INTO t1 VALUES (1+sleep(.01)),(2);
|
||||
INSERT INTO t1 SELECT b+sleep(.01) from t2;
|
||||
UPDATE t1 SET a=a+sleep(.01) WHERE a>2;
|
||||
UPDATE t1 SET a=a+sleep(.01) ORDER BY a DESC;
|
||||
UPDATE t2 set b=b+sleep(.01) limit 1;
|
||||
UPDATE t1 SET a=a+sleep(.01) WHERE a in (SELECT b from t2);
|
||||
DELETE FROM t1 WHERE a=a+sleep(.01) ORDER BY a LIMIT 2;
|
||||
INSERT INTO t1 VALUES (1+sleep(.02)),(2);
|
||||
INSERT INTO t1 SELECT b+sleep(.02) from t2;
|
||||
UPDATE t1 SET a=a+sleep(.02) WHERE a>2;
|
||||
UPDATE t1 SET a=a+sleep(.02) ORDER BY a DESC;
|
||||
UPDATE t2 set b=b+sleep(.02) limit 1;
|
||||
UPDATE t1 SET a=a+sleep(.02) WHERE a in (SELECT b from t2);
|
||||
DELETE FROM t1 WHERE a=a+sleep(.02) ORDER BY a LIMIT 2;
|
||||
SELECT rows_examined,sql_text FROM mysql.slow_log;
|
||||
rows_examined sql_text
|
||||
0 INSERT INTO t1 VALUES (1+sleep(.01)),(2)
|
||||
2 INSERT INTO t1 SELECT b+sleep(.01) from t2
|
||||
4 UPDATE t1 SET a=a+sleep(.01) WHERE a>2
|
||||
8 UPDATE t1 SET a=a+sleep(.01) ORDER BY a DESC
|
||||
1 UPDATE t2 set b=b+sleep(.01) limit 1
|
||||
4 UPDATE t1 SET a=a+sleep(.01) WHERE a in (SELECT b from t2)
|
||||
6 DELETE FROM t1 WHERE a=a+sleep(.01) ORDER BY a LIMIT 2
|
||||
0 INSERT INTO t1 VALUES (1+sleep(.02)),(2)
|
||||
2 INSERT INTO t1 SELECT b+sleep(.02) from t2
|
||||
4 UPDATE t1 SET a=a+sleep(.02) WHERE a>2
|
||||
8 UPDATE t1 SET a=a+sleep(.02) ORDER BY a DESC
|
||||
1 UPDATE t2 set b=b+sleep(.02) limit 1
|
||||
4 UPDATE t1 SET a=a+sleep(.02) WHERE a in (SELECT b from t2)
|
||||
6 DELETE FROM t1 WHERE a=a+sleep(.02) ORDER BY a LIMIT 2
|
||||
DROP TABLE t1,t2;
|
||||
TRUNCATE TABLE mysql.slow_log;
|
||||
# end of bug#49756
|
||||
|
|
|
@ -241,3 +241,13 @@ mysql
|
|||
performance_schema
|
||||
test
|
||||
DROP DATABASE bug58090;
|
||||
#
|
||||
# Bug #11766072 - 59107: MYSQLSLAP CRASHES IF STARTED WITH NO ARGUMENTS ON WINDOWS
|
||||
#
|
||||
Benchmark
|
||||
Average number of seconds to run all queries: TIME seconds
|
||||
Minimum number of seconds to run all queries: TIME seconds
|
||||
Maximum number of seconds to run all queries: TIME seconds
|
||||
Number of clients running queries: 1
|
||||
Average number of queries per client: 0
|
||||
|
||||
|
|
|
@ -3940,3 +3940,107 @@ Handler_read_rnd_deleted 0
|
|||
Handler_read_rnd_next 0
|
||||
deallocate prepare st;
|
||||
drop table t1;
|
||||
#
|
||||
# LP bug#993459 Execution of PS for a query with GROUP BY
|
||||
# returns wrong result (see also mysql bug#13805127)
|
||||
#
|
||||
PREPARE s1 FROM
|
||||
"
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2
|
||||
";
|
||||
|
||||
SET @x = 1;
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:99345900:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2;
|
||||
c1 c2 count(c3)
|
||||
2012-03-01 01:00:00 3 1
|
||||
2012-03-01 01:99345900:00 2 1
|
||||
2012-03-01 02:00:00 3 1
|
||||
|
||||
EXECUTE s1;
|
||||
c1 c2 count(c3)
|
||||
2012-03-01 01:00:00 2 1
|
||||
2012-03-01 01:00:00 3 1
|
||||
2012-03-01 02:00:00 3 1
|
||||
|
||||
SET @x = 2;
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2;
|
||||
c1 c2 count(c3)
|
||||
2012-03-01 01:00:00 2 1
|
||||
|
||||
EXECUTE s1;
|
||||
c1 c2 count(c3)
|
||||
2012-03-01 01:00:00 2 1
|
||||
|
||||
SET @x = 1;
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2;
|
||||
c1 c2 count(c3)
|
||||
2012-03-01 01:00:00 2 1
|
||||
2012-03-01 01:00:00 3 1
|
||||
2012-03-01 02:00:00 3 1
|
||||
|
||||
EXECUTE s1;
|
||||
c1 c2 count(c3)
|
||||
2012-03-01 01:00:00 2 1
|
||||
2012-03-01 01:00:00 3 1
|
||||
2012-03-01 02:00:00 3 1
|
||||
DEALLOCATE PREPARE s1;
|
||||
|
|
|
@ -5291,3 +5291,15 @@ DROP TABLE t1;
|
|||
DROP VIEW view_t1;
|
||||
# End of test BUG#63020
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
#
|
||||
# LP bug#994275 Assertion `real->type() == Item::FIELD_ITEM' failed
|
||||
# in add_not_null_conds(JOIN*) with JOIN, ZEROFILL column, PK
|
||||
#
|
||||
CREATE TABLE t1 ( a INT(6) ZEROFILL );
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 ( b INT PRIMARY KEY );
|
||||
INSERT INTO t2 VALUES (3),(4);
|
||||
SELECT * FROM t1, t2 WHERE a=3 AND a=b;
|
||||
a b
|
||||
drop table t1,t2;
|
||||
End of 5.3 tests
|
||||
|
|
|
@ -5302,6 +5302,18 @@ DROP TABLE t1;
|
|||
DROP VIEW view_t1;
|
||||
# End of test BUG#63020
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
#
|
||||
# LP bug#994275 Assertion `real->type() == Item::FIELD_ITEM' failed
|
||||
# in add_not_null_conds(JOIN*) with JOIN, ZEROFILL column, PK
|
||||
#
|
||||
CREATE TABLE t1 ( a INT(6) ZEROFILL );
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 ( b INT PRIMARY KEY );
|
||||
INSERT INTO t2 VALUES (3),(4);
|
||||
SELECT * FROM t1, t2 WHERE a=3 AND a=b;
|
||||
a b
|
||||
drop table t1,t2;
|
||||
End of 5.3 tests
|
||||
set join_cache_level=default;
|
||||
show variables like 'join_cache_level';
|
||||
Variable_name Value
|
||||
|
|
|
@ -5291,3 +5291,15 @@ DROP TABLE t1;
|
|||
DROP VIEW view_t1;
|
||||
# End of test BUG#63020
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
#
|
||||
# LP bug#994275 Assertion `real->type() == Item::FIELD_ITEM' failed
|
||||
# in add_not_null_conds(JOIN*) with JOIN, ZEROFILL column, PK
|
||||
#
|
||||
CREATE TABLE t1 ( a INT(6) ZEROFILL );
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 ( b INT PRIMARY KEY );
|
||||
INSERT INTO t2 VALUES (3),(4);
|
||||
SELECT * FROM t1, t2 WHERE a=3 AND a=b;
|
||||
a b
|
||||
drop table t1,t2;
|
||||
End of 5.3 tests
|
||||
|
|
|
@ -7807,3 +7807,45 @@ Warnings:
|
|||
Error 1424 Recursive stored functions and triggers are not allowed.
|
||||
Error 1305 FUNCTION test.f1 does not exist
|
||||
DROP FUNCTION f1;
|
||||
# ------------------------------------------------------------------
|
||||
# -- End of 5.1 tests
|
||||
# ------------------------------------------------------------------
|
||||
#
|
||||
# LP bug#993459 Execution of PS for a query with GROUP BY
|
||||
# returns wrong result (see also mysql bug#13805127)
|
||||
#
|
||||
CREATE PROCEDURE p1(x INT UNSIGNED)
|
||||
BEGIN
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE x = 1 OR x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2
|
||||
;
|
||||
END|
|
||||
|
||||
CALL p1(1);
|
||||
c1 c2 count(c3)
|
||||
2012-03-01 01:00:00 2 1
|
||||
2012-03-01 01:00:00 3 1
|
||||
2012-03-01 02:00:00 3 1
|
||||
CALL p1(2);
|
||||
c1 c2 count(c3)
|
||||
2012-03-01 01:00:00 2 1
|
||||
CALL p1(1);
|
||||
c1 c2 count(c3)
|
||||
2012-03-01 01:00:00 2 1
|
||||
2012-03-01 01:00:00 3 1
|
||||
2012-03-01 02:00:00 3 1
|
||||
DROP PROCEDURE p1;
|
||||
|
|
|
@ -5597,6 +5597,15 @@ SELECT 1 FROM
|
|||
ERROR 21000: Operand should contain 1 column(s)
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#13721076 CRASH WITH TIME TYPE/TIMESTAMP() AND WARNINGS IN SUBQUERY
|
||||
#
|
||||
CREATE TABLE t1(a TIME NOT NULL);
|
||||
INSERT INTO t1 VALUES ('00:00:32');
|
||||
SELECT 1 FROM t1 WHERE a >
|
||||
(SELECT timestamp(a) AS a FROM t1);
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
#
|
||||
create table t1 (i int not null primary key);
|
||||
|
|
|
@ -259,6 +259,66 @@ Warnings:
|
|||
Warning 1292 Incorrect datetime value: '0'
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #11766300 59387: FAILING ASSERTION: CURSOR->POS_STATE == 1997660512 (BTR_PCUR_IS_POSITIONE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES (0);
|
||||
CREATE TABLE t2 (d BINARY(2), PRIMARY KEY (d(1)), UNIQUE KEY (d)) ENGINE=INNODB;
|
||||
SELECT 1 FROM t1 WHERE NOT EXISTS
|
||||
(SELECT 1 FROM t2 WHERE d = (SELECT d FROM t2 WHERE a >= 1) ORDER BY d);
|
||||
1
|
||||
1
|
||||
EXPLAIN SELECT 1 FROM t1 WHERE NOT EXISTS
|
||||
(SELECT 1 FROM t2 WHERE d = (SELECT d FROM t2 WHERE a >= 1) ORDER BY d);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 1 Using where
|
||||
2 DEPENDENT SUBQUERY t2 eq_ref PRIMARY,d d 2 func 1 Using where
|
||||
3 DEPENDENT SUBQUERY t2 index NULL d 2 NULL 1 Using where; Using index
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (b INT, c INT, UNIQUE KEY (b), UNIQUE KEY (b, c )) ENGINE=INNODB;
|
||||
INSERT INTO t2 VALUES (1, 1);
|
||||
SELECT 1 FROM t1
|
||||
WHERE a != (SELECT 1 FROM t2 WHERE a <=> b OR a > '' AND 6 = 7 ORDER BY b, c);
|
||||
1
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# Bug #13639204 64111: CRASH ON SELECT SUBQUERY WITH NON UNIQUE
|
||||
# INDEX
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
id int
|
||||
) ENGINE=InnoDB;
|
||||
INSERT INTO t1 (id) VALUES (11);
|
||||
CREATE TABLE t2 (
|
||||
t1_id int,
|
||||
position int,
|
||||
KEY t1_id (t1_id),
|
||||
KEY t1_id_position (t1_id,position)
|
||||
) ENGINE=InnoDB;
|
||||
EXPLAIN SELECT
|
||||
(SELECT position FROM t2
|
||||
WHERE t2.t1_id = t1.id
|
||||
ORDER BY t2.t1_id , t2.position
|
||||
LIMIT 10,1
|
||||
) AS maxkey
|
||||
FROM t1
|
||||
LIMIT 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 1
|
||||
2 DEPENDENT SUBQUERY t2 ref t1_id,t1_id_position t1_id_position 5 test.t1.id 1 Using where; Using index
|
||||
SELECT
|
||||
(SELECT position FROM t2
|
||||
WHERE t2.t1_id = t1.id
|
||||
ORDER BY t2.t1_id , t2.position
|
||||
LIMIT 10,1
|
||||
) AS maxkey
|
||||
FROM t1
|
||||
LIMIT 1;
|
||||
maxkey
|
||||
NULL
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# lp:827416 Crash in select_describe() on EXPLAIN with DISTINCT in nested subqueries
|
||||
#
|
||||
CREATE TABLE t3 ( b int) ENGINE=InnoDB;
|
||||
|
|
|
@ -1986,6 +1986,19 @@ y
|
|||
z
|
||||
DROP VIEW v2;
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# BUG#1000269: Wrong result (extra rows) with semijoin+materialization, IN subqueries, join_cache_level>0
|
||||
#
|
||||
CREATE TABLE t1 (a1 VARCHAR(1), a2 VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('b','b'),('e','e');
|
||||
CREATE TABLE t2 (b1 VARCHAR(1), b2 VARCHAR(1), KEY(b1)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES ('v','v'),('s','s'),('l','l'), ('y','y'),('c','c'),('i','i');
|
||||
SELECT * FROM t1, t2 WHERE b1 IN ( SELECT b2 FROM t2 WHERE b1 > 'o' ) AND ( b1 < 'l' OR a1 IN ('b','c') );
|
||||
a1 a2 b1 b2
|
||||
b b v v
|
||||
b b s s
|
||||
b b y y
|
||||
DROP TABLE t1,t2;
|
||||
# This must be at the end:
|
||||
set optimizer_switch=@subselect_sj_mat_tmp;
|
||||
set join_cache_level=@save_join_cache_level;
|
||||
|
|
|
@ -5599,6 +5599,15 @@ SELECT 1 FROM
|
|||
ERROR 21000: Operand should contain 1 column(s)
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#13721076 CRASH WITH TIME TYPE/TIMESTAMP() AND WARNINGS IN SUBQUERY
|
||||
#
|
||||
CREATE TABLE t1(a TIME NOT NULL);
|
||||
INSERT INTO t1 VALUES ('00:00:32');
|
||||
SELECT 1 FROM t1 WHERE a >
|
||||
(SELECT timestamp(a) AS a FROM t1);
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
#
|
||||
create table t1 (i int not null primary key);
|
||||
|
|
|
@ -5595,6 +5595,15 @@ SELECT 1 FROM
|
|||
ERROR 21000: Operand should contain 1 column(s)
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#13721076 CRASH WITH TIME TYPE/TIMESTAMP() AND WARNINGS IN SUBQUERY
|
||||
#
|
||||
CREATE TABLE t1(a TIME NOT NULL);
|
||||
INSERT INTO t1 VALUES ('00:00:32');
|
||||
SELECT 1 FROM t1 WHERE a >
|
||||
(SELECT timestamp(a) AS a FROM t1);
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
#
|
||||
create table t1 (i int not null primary key);
|
||||
|
|
|
@ -5603,6 +5603,15 @@ SELECT 1 FROM
|
|||
ERROR 21000: Operand should contain 1 column(s)
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#13721076 CRASH WITH TIME TYPE/TIMESTAMP() AND WARNINGS IN SUBQUERY
|
||||
#
|
||||
CREATE TABLE t1(a TIME NOT NULL);
|
||||
INSERT INTO t1 VALUES ('00:00:32');
|
||||
SELECT 1 FROM t1 WHERE a >
|
||||
(SELECT timestamp(a) AS a FROM t1);
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
#
|
||||
create table t1 (i int not null primary key);
|
||||
|
|
|
@ -5595,6 +5595,15 @@ SELECT 1 FROM
|
|||
ERROR 21000: Operand should contain 1 column(s)
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#13721076 CRASH WITH TIME TYPE/TIMESTAMP() AND WARNINGS IN SUBQUERY
|
||||
#
|
||||
CREATE TABLE t1(a TIME NOT NULL);
|
||||
INSERT INTO t1 VALUES ('00:00:32');
|
||||
SELECT 1 FROM t1 WHERE a >
|
||||
(SELECT timestamp(a) AS a FROM t1);
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
#
|
||||
create table t1 (i int not null primary key);
|
||||
|
|
|
@ -2711,4 +2711,46 @@ DROP VIEW v1;
|
|||
DROP TABLE t1;
|
||||
set @@join_cache_level= @tmp_jcl_978479;
|
||||
set @@optimizer_switch= @tmp_os_978479;
|
||||
#
|
||||
# BUG#998236: Assertion failure or valgrind errors at best_access_path ...
|
||||
#
|
||||
CREATE TABLE t1 (a1 VARCHAR(3), a2 VARCHAR(35), KEY(a1,a2)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
('USA','Arvada'),('USA','Athens'),('USA','Atlanta'),('USA','Augusta'),
|
||||
('USA','Aurora'),('USA','Aurora'),('USA','Austin'),('USA','Bakersfield'),
|
||||
('USA','Baltimore'),('USA','Baton'),('USA','Beaumont'),('USA','Bellevue'),
|
||||
('USA','Berkeley'),('USA','Billings'),('USA','Birmingham'),('USA','Boise'),
|
||||
('USA','Boston'),('USA','Boulder'),('USA','Bridgeport'),('USA','Brockton'),
|
||||
('USA','Brownsville'),('USA','Buffalo'),('USA','Burbank'),('USA','Cambridge'),
|
||||
('USA','Cape'),('USA','Carrollton'),('USA','Carson'),('USA','Cary'),
|
||||
('USA','Cedar'),('USA','Chandler'),('USA','Charleston'),('USA','Charlotte'),
|
||||
('USA','Chattanooga'),('USA','Chesapeake'),('USA','Chicago'),('USA','Chula'),
|
||||
('USA','Cincinnati'),('USA','Citrus'),('USA','Clarksville'),('USA','Clearwater'),
|
||||
('USA','Cleveland'),('USA','Colorado'),('USA','Columbia'),('USA','Columbus'),
|
||||
('USA','Columbus'),('USA','Compton'),('USA','Concord'),('USA','Coral'),
|
||||
('USA','Corona'),('USA','Corpus'),('USA','Costa'),('USA','Dallas'),('USA','Daly'),
|
||||
('USA','Davenport'),('USA','Dayton'),('USA','Denver'),('USA','DesMoines'),
|
||||
('USA','Detroit'),('USA','Downey'),('USA','Durham'),('USA','East'),('USA','ElCajon'),
|
||||
('USA','ElMonte'),('USA','ElPaso'),('USA','Elgin'),('USA','Elizabeth'),
|
||||
('USA','Erie'),('USA','Escondido'),('USA','Eugene'),('USA','Evansville'),
|
||||
('USA','Fairfield'),('USA','Fall'),('USA','Fayetteville'),('USA','Flint'),
|
||||
('USA','Fontana'),('USA','FortCollins'),('USA','FortLauderdale'),('USA','FortWayne'),
|
||||
('USA','FortWorth'),('USA','Fremont'),('USA','Fresno'),('USA','Fullerton'),
|
||||
('USA','Gainesville'),('USA','GardenGrove'),('USA','Garland'),('USA','Gary'),
|
||||
('USA','Gilbert'),('USA','Glendale'),('USA','Glendale'),('USA','GrandPrairie'),
|
||||
('USA','GrandRapids'),('USA','Green Bay'),('USA','Greensboro'),('USA','Hampton'),
|
||||
('USA','Hartford'),('USA','Hayward'),('USA','Henderson'),('USA','Hialeah'),
|
||||
('USA','Inglewood'),('USA','Livonia');
|
||||
CREATE TABLE t3 (c1 VARCHAR(3), c2 VARCHAR(16), PRIMARY KEY (c1,c2)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES ('USA','Chinese'), ('USA','English');
|
||||
CREATE TABLE t2 (b1 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1);
|
||||
SELECT alias1.a1 AS field1
|
||||
FROM t1 AS alias1, t1 AS alias2
|
||||
WHERE alias1.a2 IN ( SELECT a1 FROM t1, t2 )
|
||||
AND alias1.a1 IS NULL
|
||||
AND ( alias1.a1, alias2.a1 ) IN ( SELECT c1, c1 FROM t3 )
|
||||
GROUP BY field1;
|
||||
field1
|
||||
DROP TABLE t1,t3,t2;
|
||||
set optimizer_switch=@subselect_sj_tmp;
|
||||
|
|
|
@ -2725,6 +2725,48 @@ DROP VIEW v1;
|
|||
DROP TABLE t1;
|
||||
set @@join_cache_level= @tmp_jcl_978479;
|
||||
set @@optimizer_switch= @tmp_os_978479;
|
||||
#
|
||||
# BUG#998236: Assertion failure or valgrind errors at best_access_path ...
|
||||
#
|
||||
CREATE TABLE t1 (a1 VARCHAR(3), a2 VARCHAR(35), KEY(a1,a2)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
('USA','Arvada'),('USA','Athens'),('USA','Atlanta'),('USA','Augusta'),
|
||||
('USA','Aurora'),('USA','Aurora'),('USA','Austin'),('USA','Bakersfield'),
|
||||
('USA','Baltimore'),('USA','Baton'),('USA','Beaumont'),('USA','Bellevue'),
|
||||
('USA','Berkeley'),('USA','Billings'),('USA','Birmingham'),('USA','Boise'),
|
||||
('USA','Boston'),('USA','Boulder'),('USA','Bridgeport'),('USA','Brockton'),
|
||||
('USA','Brownsville'),('USA','Buffalo'),('USA','Burbank'),('USA','Cambridge'),
|
||||
('USA','Cape'),('USA','Carrollton'),('USA','Carson'),('USA','Cary'),
|
||||
('USA','Cedar'),('USA','Chandler'),('USA','Charleston'),('USA','Charlotte'),
|
||||
('USA','Chattanooga'),('USA','Chesapeake'),('USA','Chicago'),('USA','Chula'),
|
||||
('USA','Cincinnati'),('USA','Citrus'),('USA','Clarksville'),('USA','Clearwater'),
|
||||
('USA','Cleveland'),('USA','Colorado'),('USA','Columbia'),('USA','Columbus'),
|
||||
('USA','Columbus'),('USA','Compton'),('USA','Concord'),('USA','Coral'),
|
||||
('USA','Corona'),('USA','Corpus'),('USA','Costa'),('USA','Dallas'),('USA','Daly'),
|
||||
('USA','Davenport'),('USA','Dayton'),('USA','Denver'),('USA','DesMoines'),
|
||||
('USA','Detroit'),('USA','Downey'),('USA','Durham'),('USA','East'),('USA','ElCajon'),
|
||||
('USA','ElMonte'),('USA','ElPaso'),('USA','Elgin'),('USA','Elizabeth'),
|
||||
('USA','Erie'),('USA','Escondido'),('USA','Eugene'),('USA','Evansville'),
|
||||
('USA','Fairfield'),('USA','Fall'),('USA','Fayetteville'),('USA','Flint'),
|
||||
('USA','Fontana'),('USA','FortCollins'),('USA','FortLauderdale'),('USA','FortWayne'),
|
||||
('USA','FortWorth'),('USA','Fremont'),('USA','Fresno'),('USA','Fullerton'),
|
||||
('USA','Gainesville'),('USA','GardenGrove'),('USA','Garland'),('USA','Gary'),
|
||||
('USA','Gilbert'),('USA','Glendale'),('USA','Glendale'),('USA','GrandPrairie'),
|
||||
('USA','GrandRapids'),('USA','Green Bay'),('USA','Greensboro'),('USA','Hampton'),
|
||||
('USA','Hartford'),('USA','Hayward'),('USA','Henderson'),('USA','Hialeah'),
|
||||
('USA','Inglewood'),('USA','Livonia');
|
||||
CREATE TABLE t3 (c1 VARCHAR(3), c2 VARCHAR(16), PRIMARY KEY (c1,c2)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES ('USA','Chinese'), ('USA','English');
|
||||
CREATE TABLE t2 (b1 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1);
|
||||
SELECT alias1.a1 AS field1
|
||||
FROM t1 AS alias1, t1 AS alias2
|
||||
WHERE alias1.a2 IN ( SELECT a1 FROM t1, t2 )
|
||||
AND alias1.a1 IS NULL
|
||||
AND ( alias1.a1, alias2.a1 ) IN ( SELECT c1, c1 FROM t3 )
|
||||
GROUP BY field1;
|
||||
field1
|
||||
DROP TABLE t1,t3,t2;
|
||||
set optimizer_switch=@subselect_sj_tmp;
|
||||
#
|
||||
# BUG#49129: Wrong result with IN-subquery with join_cache_level=6 and firstmatch=off
|
||||
|
|
|
@ -2026,6 +2026,19 @@ y
|
|||
z
|
||||
DROP VIEW v2;
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# BUG#1000269: Wrong result (extra rows) with semijoin+materialization, IN subqueries, join_cache_level>0
|
||||
#
|
||||
CREATE TABLE t1 (a1 VARCHAR(1), a2 VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('b','b'),('e','e');
|
||||
CREATE TABLE t2 (b1 VARCHAR(1), b2 VARCHAR(1), KEY(b1)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES ('v','v'),('s','s'),('l','l'), ('y','y'),('c','c'),('i','i');
|
||||
SELECT * FROM t1, t2 WHERE b1 IN ( SELECT b2 FROM t2 WHERE b1 > 'o' ) AND ( b1 < 'l' OR a1 IN ('b','c') );
|
||||
a1 a2 b1 b2
|
||||
b b v v
|
||||
b b s s
|
||||
b b y y
|
||||
DROP TABLE t1,t2;
|
||||
# This must be at the end:
|
||||
set optimizer_switch=@subselect_sj_mat_tmp;
|
||||
set join_cache_level=@save_join_cache_level;
|
||||
|
|
|
@ -570,6 +570,27 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
# as that violates the "no interleaving of outer join nests" rule.
|
||||
DROP TABLE t1,t2,t3,t4,t5;
|
||||
#
|
||||
# BUG#997747: Assertion `join->best_read < ((double)1.79..5e+308L)'
|
||||
# failed in greedy_search with LEFT JOINs and unique keys
|
||||
#
|
||||
CREATE TABLE t1 (a1 INT);
|
||||
CREATE TABLE t2 (b1 INT);
|
||||
CREATE TABLE t3 (c1 INT, UNIQUE KEY(c1));
|
||||
CREATE TABLE t4 (d1 INT, UNIQUE KEY(d1));
|
||||
CREATE TABLE t5 (e1 INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
INSERT INTO t2 VALUES (2),(3);
|
||||
INSERT INTO t3 VALUES (3),(4);
|
||||
INSERT INTO t4 VALUES (4),(5);
|
||||
INSERT INTO t5 VALUES (5),(6);
|
||||
SELECT a1 FROM t1 LEFT JOIN t2 LEFT JOIN t3 LEFT JOIN t4
|
||||
ON c1 = d1 ON d1 = b1 ON a1 = b1
|
||||
LEFT JOIN t5 ON a1 = e1 ;
|
||||
a1
|
||||
1
|
||||
2
|
||||
DROP TABLE t1,t2,t3,t4,t5;
|
||||
#
|
||||
# BUG#884184: Wrong result with RIGHT JOIN + derived_merge
|
||||
#
|
||||
CREATE TABLE t1 (a int(11), b varchar(1)) ;
|
||||
|
|
|
@ -485,4 +485,10 @@ f1 f2
|
|||
1 4
|
||||
DROP TRIGGER trg1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #12408412: GROUP_CONCAT + ORDER BY + INPUT/OUTPUT
|
||||
# SAME USER VARIABLE = CRASH
|
||||
#
|
||||
SET @bug12408412=1;
|
||||
SELECT GROUP_CONCAT(@bug12408412 ORDER BY 1) INTO @bug12408412;
|
||||
End of 5.5 tests
|
||||
|
|
|
@ -2678,6 +2678,8 @@ CREATE TABLE replace_table (a INT, b INT, PRIMARY KEY(a));
|
|||
INSERT INTO replace_table values (1,1),(2,2);
|
||||
CREATE TABLE update_table (a INT, b INT, PRIMARY KEY(a));
|
||||
INSERT INTO update_table values (1,1),(2,2);
|
||||
CREATE TABLE insert_2_keys (a INT UNIQUE KEY, b INT UNIQUE KEY);
|
||||
INSERT INTO insert_2_keys values (1, 1);
|
||||
INSERT IGNORE INTO insert_table SELECT * FROM filler_table;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
|
||||
|
@ -2701,10 +2703,15 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
|||
CREATE TEMPORARY TABLE temp1 (a INT, b INT, PRIMARY KEY(b)) REPLACE SELECT * FROM filler_table;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. CREATE... REPLACE SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave.
|
||||
INSERT INTO insert_2_keys VALUES (1, 2)
|
||||
ON DUPLICATE KEY UPDATE a=VALUES(a)+10, b=VALUES(b)+10;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe
|
||||
DROP TABLE filler_table;
|
||||
DROP TABLE insert_table;
|
||||
DROP TABLE update_table;
|
||||
DROP TABLE replace_table;
|
||||
DROP TABLE create_ignore_test;
|
||||
DROP TABLE create_replace_test;
|
||||
DROP TABLE insert_2_keys;
|
||||
"End of tests"
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
# - CREATE TABLE [IGNORE/REPLACE] SELECT
|
||||
# - INSERT IGNORE...SELECT
|
||||
# - UPDATE IGNORE
|
||||
# - INSERT... ON DUPLICATE KEY UPDATE on a table with two UNIQUE KEYS
|
||||
#
|
||||
# Note that statements that use stored functions, stored procedures,
|
||||
# triggers, views, or prepared statements that invoke unsafe
|
||||
|
@ -715,6 +716,9 @@ DROP TABLE t1;
|
|||
#UPDATE IGNORE
|
||||
#CREATE TABLE... IGNORE SELECT
|
||||
#CREATE TABLE... REPLACE SELECT
|
||||
#
|
||||
###BUG 11765650 - 58637: MARK UPDATES THAT DEPEND ON ORDER OF TWO KEYS UNSAFE
|
||||
#INSERT.... ON DUP KEY UPDATE on a table with more than one UNIQUE KEY
|
||||
|
||||
#setup tables
|
||||
CREATE TABLE filler_table (a INT, b INT);
|
||||
|
@ -724,6 +728,8 @@ CREATE TABLE replace_table (a INT, b INT, PRIMARY KEY(a));
|
|||
INSERT INTO replace_table values (1,1),(2,2);
|
||||
CREATE TABLE update_table (a INT, b INT, PRIMARY KEY(a));
|
||||
INSERT INTO update_table values (1,1),(2,2);
|
||||
CREATE TABLE insert_2_keys (a INT UNIQUE KEY, b INT UNIQUE KEY);
|
||||
INSERT INTO insert_2_keys values (1, 1);
|
||||
|
||||
#INSERT IGNORE... SELECT
|
||||
INSERT IGNORE INTO insert_table SELECT * FROM filler_table;
|
||||
|
@ -741,6 +747,10 @@ CREATE TABLE create_replace_test (a INT, b INT, PRIMARY KEY(b)) REPLACE SELECT *
|
|||
#temporary tables should not throw the warning.
|
||||
CREATE TEMPORARY TABLE temp1 (a INT, b INT, PRIMARY KEY(b)) REPLACE SELECT * FROM filler_table;
|
||||
|
||||
#INSERT.... ON DUP KEY UPDATE on a table with more than one UNIQUE KEY
|
||||
INSERT INTO insert_2_keys VALUES (1, 2)
|
||||
ON DUPLICATE KEY UPDATE a=VALUES(a)+10, b=VALUES(b)+10;
|
||||
|
||||
###clean up
|
||||
DROP TABLE filler_table;
|
||||
DROP TABLE insert_table;
|
||||
|
@ -748,5 +758,6 @@ DROP TABLE update_table;
|
|||
DROP TABLE replace_table;
|
||||
DROP TABLE create_ignore_test;
|
||||
DROP TABLE create_replace_test;
|
||||
DROP TABLE insert_2_keys;
|
||||
|
||||
--echo "End of tests"
|
||||
|
|
45
mysql-test/suite/innodb/r/innodb_bug13635833.result
Normal file
45
mysql-test/suite/innodb/r/innodb_bug13635833.result
Normal file
|
@ -0,0 +1,45 @@
|
|||
SET DEBUG_SYNC='reset';
|
||||
create table t1 (f1 integer, key k1 (f1)) engine=innodb;
|
||||
create table t2 (f1 int, f2 int, key(f1), key(f2)) engine=innodb;
|
||||
create table t3 (f2 int, key(f2)) engine=innodb;
|
||||
insert into t1 values (10);
|
||||
insert into t2 values (10, 20);
|
||||
insert into t3 values (20);
|
||||
alter table t2 add constraint c1 foreign key (f1)
|
||||
references t1(f1) on update cascade;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) DEFAULT NULL,
|
||||
KEY `k1` (`f1`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`f1` int(11) DEFAULT NULL,
|
||||
`f2` int(11) DEFAULT NULL,
|
||||
KEY `f1` (`f1`),
|
||||
KEY `f2` (`f2`),
|
||||
CONSTRAINT `c1` FOREIGN KEY (`f1`) REFERENCES `t1` (`f1`) ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
show create table t3;
|
||||
Table Create Table
|
||||
t3 CREATE TABLE `t3` (
|
||||
`f2` int(11) DEFAULT NULL,
|
||||
KEY `f2` (`f2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
SET DEBUG_SYNC='innodb_rename_table_ready SIGNAL update_can_proceed
|
||||
WAIT_FOR dict_unfreeze';
|
||||
alter table t2 add constraint z1 foreign key (f2)
|
||||
references t3(f2) on update cascade;
|
||||
SET DEBUG_SYNC='innodb_row_update_for_mysql_begin
|
||||
WAIT_FOR update_can_proceed';
|
||||
SET DEBUG_SYNC='innodb_dml_cascade_dict_unfreeze SIGNAL dict_unfreeze
|
||||
WAIT_FOR foreign_free_cache';
|
||||
update ignore t1 set f1 = 20;
|
||||
ERROR HY000: Error on rename of './test/t2' to '#sql2-temporary' (errno: 182 - Table is being used in foreign key check)
|
||||
SET DEBUG_SYNC='now SIGNAL foreign_free_cache';
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
drop table t3;
|
||||
SET DEBUG_SYNC='reset';
|
|
@ -58,7 +58,7 @@ FK1_Key FK2_Key
|
|||
INSERT INTO Bug_60196 VALUES (2, 1);
|
||||
INSERT INTO Bug_60196 VALUES (2, 2);
|
||||
INSERT INTO Bug_60196 VALUES (2, 3);
|
||||
SELECT * FROM Bug_60196 ORDER BY FK1_Key, FK2_Key;
|
||||
SELECT * FROM Bug_60196;
|
||||
FK1_Key FK2_Key
|
||||
1 1
|
||||
1 2
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
-- source include/have_innodb.inc
|
||||
|
||||
if (`select plugin_auth_version <= "1.0.17-13.0" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB 1.0.17-13.0 or earlier
|
||||
}
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
let $per_table=`select @@innodb_file_per_table`;
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
--source include/have_innodb.inc
|
||||
|
||||
if (`select plugin_auth_version <= "1.0.17-13.0" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB 1.0.17-13.0 or earlier
|
||||
}
|
||||
|
||||
#
|
||||
# Check and select innodb lock type
|
||||
#
|
||||
|
|
69
mysql-test/suite/innodb/t/innodb_bug13635833.test
Normal file
69
mysql-test/suite/innodb/t/innodb_bug13635833.test
Normal file
|
@ -0,0 +1,69 @@
|
|||
--source include/have_innodb.inc
|
||||
--source include/have_debug_sync.inc
|
||||
--source include/not_embedded.inc
|
||||
|
||||
if (`select plugin_auth_version <= "1.1.8-24.1" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB 1.1.8-24.1 or earlier
|
||||
}
|
||||
|
||||
SET DEBUG_SYNC='reset';
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
create table t1 (f1 integer, key k1 (f1)) engine=innodb;
|
||||
create table t2 (f1 int, f2 int, key(f1), key(f2)) engine=innodb;
|
||||
create table t3 (f2 int, key(f2)) engine=innodb;
|
||||
|
||||
insert into t1 values (10);
|
||||
insert into t2 values (10, 20);
|
||||
insert into t3 values (20);
|
||||
|
||||
alter table t2 add constraint c1 foreign key (f1)
|
||||
references t1(f1) on update cascade;
|
||||
|
||||
show create table t1;
|
||||
show create table t2;
|
||||
show create table t3;
|
||||
|
||||
SET DEBUG_SYNC='innodb_rename_table_ready SIGNAL update_can_proceed
|
||||
WAIT_FOR dict_unfreeze';
|
||||
|
||||
--send
|
||||
alter table t2 add constraint z1 foreign key (f2)
|
||||
references t3(f2) on update cascade;
|
||||
|
||||
connect (thr2,localhost,root,,);
|
||||
connection thr2;
|
||||
|
||||
SET DEBUG_SYNC='innodb_row_update_for_mysql_begin
|
||||
WAIT_FOR update_can_proceed';
|
||||
SET DEBUG_SYNC='innodb_dml_cascade_dict_unfreeze SIGNAL dict_unfreeze
|
||||
WAIT_FOR foreign_free_cache';
|
||||
|
||||
--send
|
||||
update ignore t1 set f1 = 20;
|
||||
|
||||
connection default;
|
||||
--replace_regex /'[^']*test\/#sql2-[0-9a-f-]*'/'#sql2-temporary'/
|
||||
--error ER_ERROR_ON_RENAME
|
||||
reap;
|
||||
|
||||
SET DEBUG_SYNC='now SIGNAL foreign_free_cache';
|
||||
|
||||
connection thr2;
|
||||
reap;
|
||||
disconnect thr2;
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
connection default;
|
||||
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
drop table t3;
|
||||
|
||||
# Wait till we reached the initial number of concurrent sessions
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
SET DEBUG_SYNC='reset';
|
|
@ -5,6 +5,8 @@ call mtr.add_suppression("Unsafe statement written to the binary log using state
|
|||
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT,
|
||||
UNIQUE(b));
|
||||
INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 10
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
include/master-slave.inc
|
||||
[connection master]
|
||||
include/assert.inc [The default value shown for the slave's port number is the actual port number of the slave.]
|
||||
include/rpl_restart_server.inc [server_number=2 parameters: --report-port=9000]
|
||||
include/start_slave.inc
|
||||
[Slave restarted with the report-port set to some value]
|
||||
include/assert.inc [The value shown for the slave's port number is 9000 which is the value set for report-port.]
|
||||
include/rpl_restart_server.inc [server_number=2 parameters: --report-port=]
|
||||
include/start_slave.inc
|
||||
[Slave restarted with the report-port set to the value of slave's port number]
|
||||
include/assert.inc [The default value shown for the slave's port number is the actual port number of the slave.]
|
||||
include/rpl_end.inc
|
||||
|
|
|
@ -49,6 +49,10 @@ A B
|
|||
A I
|
||||
X Y
|
||||
X Z
|
||||
include/assert.inc [Counter for COM_COMMIT is consistent with the number of actual commits]
|
||||
include/assert.inc [Counter for COM_INSERT is consistent with the number of actual inserts]
|
||||
include/assert.inc [Counter for COM_DELETE is consistent with the number of actual deletes]
|
||||
include/assert.inc [Counter for COM_UPDATE is consistent with the number of actual updates]
|
||||
UPDATE t1 SET c2 = 'Q' WHERE c1 = 'A' AND c2 = 'N';
|
||||
SELECT * FROM t1 ORDER BY c1,c2;
|
||||
C1 C2
|
||||
|
|
|
@ -49,6 +49,10 @@ A B
|
|||
A I
|
||||
X Y
|
||||
X Z
|
||||
include/assert.inc [Counter for COM_COMMIT is consistent with the number of actual commits]
|
||||
include/assert.inc [Counter for COM_INSERT is consistent with the number of actual inserts]
|
||||
include/assert.inc [Counter for COM_DELETE is consistent with the number of actual deletes]
|
||||
include/assert.inc [Counter for COM_UPDATE is consistent with the number of actual updates]
|
||||
UPDATE t1 SET c2 = 'Q' WHERE c1 = 'A' AND c2 = 'N';
|
||||
SELECT * FROM t1 ORDER BY c1,c2;
|
||||
C1 C2
|
||||
|
|
16
mysql-test/suite/rpl/r/rpl_row_merge_engine.result
Normal file
16
mysql-test/suite/rpl/r/rpl_row_merge_engine.result
Normal file
|
@ -0,0 +1,16 @@
|
|||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (a int) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a int) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
INSERT INTO t2 VALUES (4), (5), (6);
|
||||
CREATE TABLE IF NOT EXISTS t1_merge LIKE t1;
|
||||
ALTER TABLE t1_merge ENGINE=MERGE UNION (t2, t1);
|
||||
include/diff_tables.inc [master:test.t1, slave:test.t1]
|
||||
include/diff_tables.inc [master:test.t2, slave:test.t2]
|
||||
UPDATE t1_merge SET a=10 WHERE a=1;
|
||||
DELETE FROM t1_merge WHERE a=10;
|
||||
include/diff_tables.inc [master:test.t1, slave:test.t1]
|
||||
include/diff_tables.inc [master:test.t2, slave:test.t2]
|
||||
DROP TABLE t1_merge, t1, t2;
|
||||
include/rpl_end.inc
|
|
@ -1 +0,0 @@
|
|||
--report-port=
|
|
@ -10,22 +10,18 @@
|
|||
#
|
||||
#====Method====
|
||||
#
|
||||
# Start replication with report port not set.This will give the actual port
|
||||
# number of the slave (ie. SLAVE_PORT) for the on doing SHOW SLAVE HOSTS on
|
||||
# the master.
|
||||
# Restart the slave server with report port set to 9000 and start the slave.
|
||||
# Start replication with report port set to 9000 and restart the slave.
|
||||
# In this case on doing SHOW SLAVE HOSTS on the master, we get the port number
|
||||
# of the slave to be 9000.
|
||||
# In the second case restart the slave server with report port not set. In this
|
||||
# case on doing SHOW SLAVE HOSTS on the master, we get the actual port number
|
||||
# of the slave (ie. SLAVE_PORT).
|
||||
|
||||
source include/master-slave.inc;
|
||||
source include/have_binlog_format_mixed.inc;
|
||||
|
||||
connection master;
|
||||
|
||||
--let $report_port= query_get_value(SHOW SLAVE HOSTS, Port, 1)
|
||||
--let assert_text= The default value shown for the slave's port number is the actual port number of the slave.
|
||||
--let assert_cond= $report_port = "$SLAVE_MYPORT"
|
||||
--source include/assert.inc
|
||||
|
||||
# Start the server with some value being passed to the report_port= <option>
|
||||
# this will be used incase we have to mask the value of the slave's port
|
||||
# number in certain situations.
|
||||
|
@ -46,4 +42,25 @@ connection master;
|
|||
--let assert_cond= $report_port = "9000"
|
||||
--source include/assert.inc
|
||||
|
||||
|
||||
# Start the server with the report-port being passed with no value. So on SHOW SLAVE HOSTS
|
||||
# on the master the value of slave's port should be the actual value of the slave port.
|
||||
|
||||
--let $rpl_server_number= 2
|
||||
--let $rpl_server_parameters= --report-port=
|
||||
--source include/rpl_restart_server.inc
|
||||
|
||||
connection slave;
|
||||
--source include/start_slave.inc
|
||||
|
||||
--echo [Slave restarted with the report-port set to the value of slave's port number]
|
||||
|
||||
connection master;
|
||||
|
||||
# The value reported is the actual value of the slave's port.
|
||||
--let $report_port= query_get_value(SHOW SLAVE HOSTS, Port, 1)
|
||||
--let assert_text= The default value shown for the slave's port number is the actual port number of the slave.
|
||||
--let assert_cond= $report_port = "$SLAVE_MYPORT"
|
||||
--source include/assert.inc
|
||||
|
||||
--source include/rpl_end.inc
|
||||
|
|
50
mysql-test/suite/rpl/t/rpl_row_merge_engine.test
Normal file
50
mysql-test/suite/rpl/t/rpl_row_merge_engine.test
Normal file
|
@ -0,0 +1,50 @@
|
|||
#
|
||||
# BUG#47103
|
||||
#
|
||||
# This test case checks whether the slave crashes or not when there is
|
||||
# a merge table in use.
|
||||
#
|
||||
# Description
|
||||
# ===========
|
||||
#
|
||||
# The test case creates two regular MyISAM tables on the master and
|
||||
# one MERGE table. Then it populates the MyISAM tables, updates and
|
||||
# deletes their contents through the merge table. Finally, the slave
|
||||
# is synchronized with the master and (after the fix) it won't crash.
|
||||
#
|
||||
--source include/master-slave.inc
|
||||
--source include/have_binlog_format_row.inc
|
||||
--connection master
|
||||
|
||||
CREATE TABLE t1 (a int) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a int) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
INSERT INTO t2 VALUES (4), (5), (6);
|
||||
CREATE TABLE IF NOT EXISTS t1_merge LIKE t1;
|
||||
ALTER TABLE t1_merge ENGINE=MERGE UNION (t2, t1);
|
||||
|
||||
--sync_slave_with_master
|
||||
|
||||
--let diff_tables=master:test.t1, slave:test.t1
|
||||
--source include/diff_tables.inc
|
||||
|
||||
--let diff_tables=master:test.t2, slave:test.t2
|
||||
--source include/diff_tables.inc
|
||||
|
||||
--connection master
|
||||
UPDATE t1_merge SET a=10 WHERE a=1;
|
||||
DELETE FROM t1_merge WHERE a=10;
|
||||
|
||||
--sync_slave_with_master
|
||||
--connection master
|
||||
|
||||
--let diff_tables=master:test.t1, slave:test.t1
|
||||
--source include/diff_tables.inc
|
||||
|
||||
--let diff_tables=master:test.t2, slave:test.t2
|
||||
--source include/diff_tables.inc
|
||||
|
||||
DROP TABLE t1_merge, t1, t2;
|
||||
--sync_slave_with_master
|
||||
|
||||
--source include/rpl_end.inc
|
|
@ -1230,3 +1230,4 @@ rename table t2 to t1;
|
|||
execute stmt1;
|
||||
deallocate prepare stmt1;
|
||||
drop table t2;
|
||||
|
||||
|
|
21
mysql-test/t/blackhole.test
Normal file
21
mysql-test/t/blackhole.test
Normal file
|
@ -0,0 +1,21 @@
|
|||
#
|
||||
# Tests for the BLACKHOLE storage engine
|
||||
#
|
||||
|
||||
--source include/have_blackhole.inc
|
||||
|
||||
--echo #
|
||||
--echo # Bug #11880012: INDEX_SUBQUERY, BLACKHOLE,
|
||||
--echo # HANG IN PREPARING WITH 100% CPU USAGE
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a INT NOT NULL);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
CREATE TABLE t2 (a INT UNSIGNED, b INT, UNIQUE KEY (a, b)) ENGINE=BLACKHOLE;
|
||||
|
||||
SELECT 1 FROM t1 WHERE a = ANY (SELECT a FROM t2);
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo End of 5.5 tests
|
||||
|
|
@ -400,6 +400,18 @@ connection default;
|
|||
disconnect newconn;
|
||||
SET @@GLOBAL.max_allowed_packet=default;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#13519724 63793: CRASH IN DTCOLLATION::SET(DTCOLLATION &SET)
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a VARCHAR(50));
|
||||
|
||||
SELECT a FROM t1
|
||||
WHERE CAST(a as BINARY)=x'62736D697468'
|
||||
AND CAST(a AS BINARY)=x'65736D697468';
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
select cast("2101-00-01 02:03:04" as datetime);
|
||||
|
|
|
@ -1437,6 +1437,19 @@ drop table t1;
|
|||
|
||||
set optimizer_switch=@save978847_optimizer_switch;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # LP bug998516 Server hangs on INSERT .. SELECT with derived_merge,
|
||||
--echo # FROM subquery, UNION
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 (b INT);
|
||||
INSERT INTO t2 VALUES (3),(4);
|
||||
INSERT INTO t1 SELECT * FROM ( SELECT * FROM t1 ) AS alias UNION SELECT * FROM t2;
|
||||
select * from t1;
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # end of 5.3 tests
|
||||
--echo #
|
||||
|
|
|
@ -171,3 +171,21 @@ SELECT UPDATEXML(-73 * -2465717823867977728,@@global.auto_increment_increment,nu
|
|||
--echo #
|
||||
--echo # End Bug#57882
|
||||
--echo #
|
||||
|
||||
#
|
||||
# Bug #13031606 VALUES() IN A SELECT STATEMENT CRASHES SERVER
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TABLE t2(a INT PRIMARY KEY, b INT);
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
SELECT '' AS b FROM t1 GROUP BY VALUES(b);
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
REPLACE t2(b) SELECT '' AS b FROM t1 GROUP BY VALUES(b);
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
UPDATE t2 SET a=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
INSERT INTO t2 VALUES (1,0) ON DUPLICATE KEY UPDATE
|
||||
b=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
|
||||
INSERT INTO t2(a,b) VALUES (1,0) ON DUPLICATE KEY UPDATE
|
||||
b=(SELECT VALUES(a)+2 FROM t1);
|
||||
DROP TABLE t1, t2;
|
||||
|
|
|
@ -85,6 +85,19 @@ select count(*), min(7), max(7) from t2m, t1i;
|
|||
drop table t1m, t1i, t2m, t2i;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#13723054 CRASH WITH MIN/MAX AFTER QUICK_GROUP_MIN_MAX_SELECT::NEXT_MIN
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a BLOB, b VARCHAR(255) CHARSET LATIN1, c INT,
|
||||
KEY(b, c, a(765))) ENGINE=INNODB;
|
||||
INSERT INTO t1(a, b, c) VALUES ('', 'a', 0), ('', 'a', null), ('', 'a', 0);
|
||||
|
||||
SELECT MIN(c) FROM t1 GROUP BY b;
|
||||
EXPLAIN SELECT MIN(c) FROM t1 GROUP BY b;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #57954: BIT_AND function returns incorrect results when
|
||||
--echo # semijoin=on
|
||||
|
|
|
@ -193,3 +193,20 @@ sum(distinct(if('a',
|
|||
(select adddate(elt(convert($nines,decimal(64,0)),count(*)),
|
||||
interval 1 day))
|
||||
, .1))) as foo;
|
||||
|
||||
--echo #
|
||||
--echo # LP bug#998321 Simple query with IF expression causes an
|
||||
--echo # assertion abort (see also mysql Bug#12620084)
|
||||
--echo #
|
||||
|
||||
SELECT if(0, (SELECT min('hello')), NULL);
|
||||
SELECT if(1, (SELECT min('hello')), NULL);
|
||||
SELECT if(0, NULL, (SELECT min('hello')));
|
||||
SELECT if(1, NULL, (SELECT min('hello')));
|
||||
|
||||
--echo End of 5.2 tests
|
||||
|
||||
--disable_query_log
|
||||
# Restore timezone to default
|
||||
set time_zone= @@global.time_zone;
|
||||
--enable_query_log
|
||||
|
|
|
@ -1295,6 +1295,24 @@ WHERE ST_Contains(ST_Buffer(bridges.position, 15.0), buildings.footprint) = 1;
|
|||
DROP DATABASE gis_ogs;
|
||||
USE test;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # BUG#12414917 - ISCLOSED() CRASHES ON 64-BIT BUILDS
|
||||
--echo #
|
||||
SELECT ISCLOSED(CONVERT(CONCAT(' ', 0x2), BINARY(20)));
|
||||
|
||||
--echo #
|
||||
--echo # BUG#12537203 - CRASH WHEN SUBSELECTING GLOBAL VARIABLES IN
|
||||
--echo # GEOMETRY FUNCTION ARGUMENTS
|
||||
--echo #
|
||||
--replace_regex /non geometric .* value/non geometric '' value/
|
||||
--error ER_ILLEGAL_VALUE_FOR_TYPE
|
||||
SELECT GEOMETRYCOLLECTION((SELECT @@OLD));
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#11908153: CRASH AND/OR VALGRIND ERRORS IN FIELD_BLOB::GET_KEY_IMAGE
|
||||
--echo #
|
||||
|
|
|
@ -1374,10 +1374,82 @@ t2_1.b + 1 > 0 OR
|
|||
a = t2_1.c
|
||||
GROUP BY zzz;
|
||||
|
||||
--echo #TODO: in merge with 5.3 add original test suite
|
||||
SET @save_optimizer_switch967242=@@optimizer_switch;
|
||||
SET optimizer_switch = 'in_to_exists=on';
|
||||
|
||||
SELECT t2_1.b
|
||||
FROM t1 JOIN t2 AS t2_1 JOIN t2 AS t2_2
|
||||
ON (t2_2.b = t2_1.b ) AND (t2_2.c = t2_1.c )
|
||||
WHERE
|
||||
( SELECT COUNT(*) FROM t2 ) IS NOT NULL
|
||||
OR a = t2_1.c
|
||||
GROUP BY t2_1.b;
|
||||
SET optimizer_switch=@save_optimizer_switch967242;
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#12578908: SELECT SQL_BUFFER_RESULT OUTPUTS TOO MANY
|
||||
--echo # ROWS WHEN GROUP IS OPTIMIZED AWAY
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (col1 int, col2 int) ;
|
||||
INSERT INTO t1 VALUES (10,1),(11,7);
|
||||
|
||||
CREATE TABLE t2 (col1 int, col2 int) ;
|
||||
INSERT INTO t2 VALUES (10,8);
|
||||
|
||||
let $q_body=t2.col2 FROM t2 JOIN t1 ON t1.col1 GROUP BY t2.col2;
|
||||
|
||||
--echo
|
||||
--eval EXPLAIN SELECT SQL_BUFFER_RESULT $q_body
|
||||
--eval SELECT SQL_BUFFER_RESULT $q_body
|
||||
--echo
|
||||
--eval EXPLAIN SELECT $q_body
|
||||
--eval SELECT $q_body
|
||||
|
||||
--echo
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#12640437: USING SQL_BUFFER_RESULT RESULTS IN A
|
||||
--echo # DIFFERENT QUERY OUTPUT
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a int,
|
||||
b varchar(1),
|
||||
KEY (b,a)
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES (1,NULL),(0,'a');
|
||||
|
||||
let $query=
|
||||
SELECT SQL_BUFFER_RESULT MIN(a), b FROM t1 WHERE t1.b = 'a' GROUP BY b;
|
||||
|
||||
--echo
|
||||
--eval EXPLAIN $query
|
||||
--echo
|
||||
--eval $query
|
||||
|
||||
let $query= SELECT MIN(a), b FROM t1 WHERE t1.b = 'a' GROUP BY b;
|
||||
--echo
|
||||
--eval EXPLAIN $query
|
||||
--echo
|
||||
--eval $query
|
||||
|
||||
--echo
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # LP bug#993726 Wrong result from a query with ALL subquery predicate in WHERE
|
||||
--echo #
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (0);
|
||||
SELECT 1 FROM t1 WHERE 1 > ALL(SELECT 1 FROM t1 WHERE a!=0);
|
||||
SELECT max(1) FROM t1 WHERE a!=0;
|
||||
drop table t1;
|
||||
|
||||
--echo # End of 5.2 tests
|
||||
|
||||
--echo #
|
||||
|
|
|
@ -1441,6 +1441,25 @@ DROP TABLE t1,t2;
|
|||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # LP BUG#994392: Wrong result with RIGHT/LEFT JOIN and ALL subquery
|
||||
--echo # predicate in WHERE condition.
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES(9);
|
||||
CREATE TABLE t2(b INT);
|
||||
INSERT INTO t2 VALUES(8);
|
||||
CREATE TABLE t3(c INT);
|
||||
INSERT INTO t3 VALUES(3);
|
||||
SELECT * FROM t2 RIGHT JOIN t3 ON(c = b) WHERE b < ALL(SELECT a FROM t1 WHERE a <= 7);
|
||||
SELECT * FROM t3 LEFT JOIN t2 ON(c = b) WHERE b < ALL(SELECT a FROM t1 WHERE a <= 7);
|
||||
SELECT * FROM t2 RIGHT JOIN t3 ON(c = b) WHERE b not in (SELECT a FROM t1 WHERE a <= 7);
|
||||
SELECT * FROM t3 LEFT JOIN t2 ON(c = b) WHERE b not in (SELECT a FROM t1 WHERE a <= 7);
|
||||
drop table t1,t2,t3;
|
||||
|
||||
--echo End of 5.2 tests
|
||||
|
||||
--echo #
|
||||
--echo # LP bug #813447: LEFT JOIN with single-row inner table and
|
||||
--echo # a subquery in ON expression
|
||||
|
|
|
@ -332,13 +332,13 @@ CREATE TABLE t2 (b INT, PRIMARY KEY (b));
|
|||
INSERT INTO t2 VALUES (3),(4);
|
||||
|
||||
connect (con2,localhost,root,,);
|
||||
INSERT INTO t1 VALUES (1+sleep(.01)),(2);
|
||||
INSERT INTO t1 SELECT b+sleep(.01) from t2;
|
||||
UPDATE t1 SET a=a+sleep(.01) WHERE a>2;
|
||||
UPDATE t1 SET a=a+sleep(.01) ORDER BY a DESC;
|
||||
UPDATE t2 set b=b+sleep(.01) limit 1;
|
||||
UPDATE t1 SET a=a+sleep(.01) WHERE a in (SELECT b from t2);
|
||||
DELETE FROM t1 WHERE a=a+sleep(.01) ORDER BY a LIMIT 2;
|
||||
INSERT INTO t1 VALUES (1+sleep(.02)),(2);
|
||||
INSERT INTO t1 SELECT b+sleep(.02) from t2;
|
||||
UPDATE t1 SET a=a+sleep(.02) WHERE a>2;
|
||||
UPDATE t1 SET a=a+sleep(.02) ORDER BY a DESC;
|
||||
UPDATE t2 set b=b+sleep(.02) limit 1;
|
||||
UPDATE t1 SET a=a+sleep(.02) WHERE a in (SELECT b from t2);
|
||||
DELETE FROM t1 WHERE a=a+sleep(.02) ORDER BY a LIMIT 2;
|
||||
|
||||
SELECT rows_examined,sql_text FROM mysql.slow_log;
|
||||
disconnect con2;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
# Can't run test of external client with embedded server
|
||||
--source include/not_embedded.inc
|
||||
--source include/not_windows.inc
|
||||
|
||||
--exec $MYSQL_SLAP --silent --concurrency=5 --iterations=20 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql
|
||||
|
||||
|
@ -37,7 +36,7 @@
|
|||
|
||||
--exec $MYSQL_SLAP --only-print --delimiter=";" --query="select * from t1;select * from t2" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" --engine="heap,myisam" --post-query="SHOW TABLES" --pre-query="SHOW TABLES";
|
||||
|
||||
--exec $MYSQL_SLAP --only-print --delimiter=";" --query="select * from t1;select * from t2" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" --engine="heap,myisam" --post-query="SHOW TABLES" --pre-query="SHOW TABLES" --number-of-queries=6 --commit=1;
|
||||
--exec $MYSQL_SLAP --only-print --delimiter=";" --query="select * from t1;select * from t2" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" --engine="heap,myisam" --post-query="SHOW TABLES" --pre-query="SHOW TABLES" --number-of-queries=6 --commit=1
|
||||
|
||||
--exec $MYSQL_SLAP --silent --concurrency=5 --iterations=1 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=write --detach=2
|
||||
|
||||
|
@ -68,3 +67,9 @@ SHOW DATABASES;
|
|||
SHOW DATABASES;
|
||||
DROP DATABASE bug58090;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #11766072 - 59107: MYSQLSLAP CRASHES IF STARTED WITH NO ARGUMENTS ON WINDOWS
|
||||
--echo #
|
||||
|
||||
--replace_regex /queries: [0-9]+.[0-9]+/queries: TIME/
|
||||
--exec $MYSQL_SLAP
|
||||
|
|
|
@ -3505,6 +3505,94 @@ execute st;
|
|||
show status like '%Handler_read%';
|
||||
|
||||
deallocate prepare st;
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # LP bug#993459 Execution of PS for a query with GROUP BY
|
||||
--echo # returns wrong result (see also mysql bug#13805127)
|
||||
--echo #
|
||||
|
||||
PREPARE s1 FROM
|
||||
"
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2
|
||||
";
|
||||
|
||||
--echo
|
||||
SET @x = 1;
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:99345900:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2;
|
||||
--echo
|
||||
EXECUTE s1;
|
||||
|
||||
--echo
|
||||
SET @x = 2;
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2;
|
||||
--echo
|
||||
EXECUTE s1;
|
||||
|
||||
--echo
|
||||
SET @x = 1;
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE @x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE @x = 1 OR @x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2;
|
||||
--echo
|
||||
EXECUTE s1;
|
||||
|
||||
DEALLOCATE PREPARE s1;
|
||||
|
|
|
@ -4447,3 +4447,17 @@ DROP VIEW view_t1;
|
|||
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
--echo #
|
||||
--echo # LP bug#994275 Assertion `real->type() == Item::FIELD_ITEM' failed
|
||||
--echo # in add_not_null_conds(JOIN*) with JOIN, ZEROFILL column, PK
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 ( a INT(6) ZEROFILL );
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
|
||||
CREATE TABLE t2 ( b INT PRIMARY KEY );
|
||||
INSERT INTO t2 VALUES (3),(4);
|
||||
SELECT * FROM t1, t2 WHERE a=3 AND a=b;
|
||||
drop table t1,t2;
|
||||
|
||||
--echo End of 5.3 tests
|
||||
|
|
|
@ -9105,3 +9105,43 @@ delimiter ;$
|
|||
SELECT f1();
|
||||
|
||||
DROP FUNCTION f1;
|
||||
|
||||
--echo # ------------------------------------------------------------------
|
||||
--echo # -- End of 5.1 tests
|
||||
--echo # ------------------------------------------------------------------
|
||||
|
||||
--echo #
|
||||
--echo # LP bug#993459 Execution of PS for a query with GROUP BY
|
||||
--echo # returns wrong result (see also mysql bug#13805127)
|
||||
--echo #
|
||||
delimiter |;
|
||||
|
||||
CREATE PROCEDURE p1(x INT UNSIGNED)
|
||||
BEGIN
|
||||
SELECT c1, t2.c2, count(c3)
|
||||
FROM
|
||||
(
|
||||
SELECT 3 as c2 FROM dual WHERE x = 1
|
||||
UNION
|
||||
SELECT 2 FROM dual WHERE x = 1 OR x = 2
|
||||
) AS t1,
|
||||
(
|
||||
SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 02:00:00', 3, 2 FROM dual
|
||||
UNION
|
||||
SELECT '2012-03-01 01:00:00', 2, 1 FROM dual
|
||||
) AS t2
|
||||
WHERE t2.c2 = t1.c2
|
||||
GROUP BY c1, c2
|
||||
;
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
--echo
|
||||
CALL p1(1);
|
||||
CALL p1(2);
|
||||
CALL p1(1);
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
|
|
|
@ -4722,6 +4722,18 @@ SELECT 1 FROM
|
|||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#13721076 CRASH WITH TIME TYPE/TIMESTAMP() AND WARNINGS IN SUBQUERY
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a TIME NOT NULL);
|
||||
INSERT INTO t1 VALUES ('00:00:32');
|
||||
|
||||
SELECT 1 FROM t1 WHERE a >
|
||||
(SELECT timestamp(a) AS a FROM t1);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
--echo #
|
||||
|
|
|
@ -252,6 +252,62 @@ INSERT INTO t1 VALUES ('2011-05-13', 0);
|
|||
SELECT * FROM t1 WHERE b < (SELECT CAST(a as date) FROM t1 GROUP BY a);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #11766300 59387: FAILING ASSERTION: CURSOR->POS_STATE == 1997660512 (BTR_PCUR_IS_POSITIONE
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT) ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES (0);
|
||||
CREATE TABLE t2 (d BINARY(2), PRIMARY KEY (d(1)), UNIQUE KEY (d)) ENGINE=INNODB;
|
||||
|
||||
SELECT 1 FROM t1 WHERE NOT EXISTS
|
||||
(SELECT 1 FROM t2 WHERE d = (SELECT d FROM t2 WHERE a >= 1) ORDER BY d);
|
||||
|
||||
EXPLAIN SELECT 1 FROM t1 WHERE NOT EXISTS
|
||||
(SELECT 1 FROM t2 WHERE d = (SELECT d FROM t2 WHERE a >= 1) ORDER BY d);
|
||||
|
||||
DROP TABLE t2;
|
||||
|
||||
CREATE TABLE t2 (b INT, c INT, UNIQUE KEY (b), UNIQUE KEY (b, c )) ENGINE=INNODB;
|
||||
INSERT INTO t2 VALUES (1, 1);
|
||||
|
||||
SELECT 1 FROM t1
|
||||
WHERE a != (SELECT 1 FROM t2 WHERE a <=> b OR a > '' AND 6 = 7 ORDER BY b, c);
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #13639204 64111: CRASH ON SELECT SUBQUERY WITH NON UNIQUE
|
||||
--echo # INDEX
|
||||
--echo #
|
||||
CREATE TABLE t1 (
|
||||
id int
|
||||
) ENGINE=InnoDB;
|
||||
INSERT INTO t1 (id) VALUES (11);
|
||||
|
||||
CREATE TABLE t2 (
|
||||
t1_id int,
|
||||
position int,
|
||||
KEY t1_id (t1_id),
|
||||
KEY t1_id_position (t1_id,position)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
let $query=SELECT
|
||||
(SELECT position FROM t2
|
||||
WHERE t2.t1_id = t1.id
|
||||
ORDER BY t2.t1_id , t2.position
|
||||
LIMIT 10,1
|
||||
) AS maxkey
|
||||
FROM t1
|
||||
LIMIT 1;
|
||||
|
||||
eval EXPLAIN $query;
|
||||
eval $query;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # lp:827416 Crash in select_describe() on EXPLAIN with DISTINCT in nested subqueries
|
||||
--echo #
|
||||
|
|
|
@ -2398,6 +2398,52 @@ DROP TABLE t1;
|
|||
set @@join_cache_level= @tmp_jcl_978479;
|
||||
set @@optimizer_switch= @tmp_os_978479;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#998236: Assertion failure or valgrind errors at best_access_path ...
|
||||
--echo #
|
||||
CREATE TABLE t1 (a1 VARCHAR(3), a2 VARCHAR(35), KEY(a1,a2)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
('USA','Arvada'),('USA','Athens'),('USA','Atlanta'),('USA','Augusta'),
|
||||
('USA','Aurora'),('USA','Aurora'),('USA','Austin'),('USA','Bakersfield'),
|
||||
('USA','Baltimore'),('USA','Baton'),('USA','Beaumont'),('USA','Bellevue'),
|
||||
('USA','Berkeley'),('USA','Billings'),('USA','Birmingham'),('USA','Boise'),
|
||||
('USA','Boston'),('USA','Boulder'),('USA','Bridgeport'),('USA','Brockton'),
|
||||
('USA','Brownsville'),('USA','Buffalo'),('USA','Burbank'),('USA','Cambridge'),
|
||||
('USA','Cape'),('USA','Carrollton'),('USA','Carson'),('USA','Cary'),
|
||||
('USA','Cedar'),('USA','Chandler'),('USA','Charleston'),('USA','Charlotte'),
|
||||
('USA','Chattanooga'),('USA','Chesapeake'),('USA','Chicago'),('USA','Chula'),
|
||||
('USA','Cincinnati'),('USA','Citrus'),('USA','Clarksville'),('USA','Clearwater'),
|
||||
('USA','Cleveland'),('USA','Colorado'),('USA','Columbia'),('USA','Columbus'),
|
||||
('USA','Columbus'),('USA','Compton'),('USA','Concord'),('USA','Coral'),
|
||||
('USA','Corona'),('USA','Corpus'),('USA','Costa'),('USA','Dallas'),('USA','Daly'),
|
||||
('USA','Davenport'),('USA','Dayton'),('USA','Denver'),('USA','DesMoines'),
|
||||
('USA','Detroit'),('USA','Downey'),('USA','Durham'),('USA','East'),('USA','ElCajon'),
|
||||
('USA','ElMonte'),('USA','ElPaso'),('USA','Elgin'),('USA','Elizabeth'),
|
||||
('USA','Erie'),('USA','Escondido'),('USA','Eugene'),('USA','Evansville'),
|
||||
('USA','Fairfield'),('USA','Fall'),('USA','Fayetteville'),('USA','Flint'),
|
||||
('USA','Fontana'),('USA','FortCollins'),('USA','FortLauderdale'),('USA','FortWayne'),
|
||||
('USA','FortWorth'),('USA','Fremont'),('USA','Fresno'),('USA','Fullerton'),
|
||||
('USA','Gainesville'),('USA','GardenGrove'),('USA','Garland'),('USA','Gary'),
|
||||
('USA','Gilbert'),('USA','Glendale'),('USA','Glendale'),('USA','GrandPrairie'),
|
||||
('USA','GrandRapids'),('USA','Green Bay'),('USA','Greensboro'),('USA','Hampton'),
|
||||
('USA','Hartford'),('USA','Hayward'),('USA','Henderson'),('USA','Hialeah'),
|
||||
('USA','Inglewood'),('USA','Livonia');
|
||||
|
||||
CREATE TABLE t3 (c1 VARCHAR(3), c2 VARCHAR(16), PRIMARY KEY (c1,c2)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES ('USA','Chinese'), ('USA','English');
|
||||
|
||||
# Not reproducible with 2 rows
|
||||
CREATE TABLE t2 (b1 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1);
|
||||
|
||||
SELECT alias1.a1 AS field1
|
||||
FROM t1 AS alias1, t1 AS alias2
|
||||
WHERE alias1.a2 IN ( SELECT a1 FROM t1, t2 )
|
||||
AND alias1.a1 IS NULL
|
||||
AND ( alias1.a1, alias2.a1 ) IN ( SELECT c1, c1 FROM t3 )
|
||||
GROUP BY field1;
|
||||
|
||||
DROP TABLE t1,t3,t2;
|
||||
|
||||
# The following command must be the last one the file
|
||||
set optimizer_switch=@subselect_sj_tmp;
|
||||
|
|
|
@ -1664,6 +1664,19 @@ EXECUTE ps;
|
|||
DROP VIEW v2;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#1000269: Wrong result (extra rows) with semijoin+materialization, IN subqueries, join_cache_level>0
|
||||
--echo #
|
||||
CREATE TABLE t1 (a1 VARCHAR(1), a2 VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('b','b'),('e','e');
|
||||
|
||||
CREATE TABLE t2 (b1 VARCHAR(1), b2 VARCHAR(1), KEY(b1)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES ('v','v'),('s','s'),('l','l'), ('y','y'),('c','c'),('i','i');
|
||||
|
||||
SELECT * FROM t1, t2 WHERE b1 IN ( SELECT b2 FROM t2 WHERE b1 > 'o' ) AND ( b1 < 'l' OR a1 IN ('b','c') );
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo # This must be at the end:
|
||||
set optimizer_switch=@subselect_sj_mat_tmp;
|
||||
set join_cache_level=@save_join_cache_level;
|
||||
|
|
|
@ -503,6 +503,28 @@ WHERE t3.f2 ;
|
|||
|
||||
DROP TABLE t1,t2,t3,t4,t5;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#997747: Assertion `join->best_read < ((double)1.79..5e+308L)'
|
||||
--echo # failed in greedy_search with LEFT JOINs and unique keys
|
||||
--echo #
|
||||
CREATE TABLE t1 (a1 INT);
|
||||
CREATE TABLE t2 (b1 INT);
|
||||
CREATE TABLE t3 (c1 INT, UNIQUE KEY(c1));
|
||||
CREATE TABLE t4 (d1 INT, UNIQUE KEY(d1));
|
||||
CREATE TABLE t5 (e1 INT);
|
||||
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
INSERT INTO t2 VALUES (2),(3);
|
||||
INSERT INTO t3 VALUES (3),(4);
|
||||
INSERT INTO t4 VALUES (4),(5);
|
||||
INSERT INTO t5 VALUES (5),(6);
|
||||
|
||||
SELECT a1 FROM t1 LEFT JOIN t2 LEFT JOIN t3 LEFT JOIN t4
|
||||
ON c1 = d1 ON d1 = b1 ON a1 = b1
|
||||
LEFT JOIN t5 ON a1 = e1 ;
|
||||
|
||||
DROP TABLE t1,t2,t3,t4,t5;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#884184: Wrong result with RIGHT JOIN + derived_merge
|
||||
--echo #
|
||||
|
|
|
@ -404,4 +404,13 @@ SELECT f1, f2 FROM t1 ORDER BY f2;
|
|||
DROP TRIGGER trg1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug #12408412: GROUP_CONCAT + ORDER BY + INPUT/OUTPUT
|
||||
--echo # SAME USER VARIABLE = CRASH
|
||||
--echo #
|
||||
|
||||
SET @bug12408412=1;
|
||||
SELECT GROUP_CONCAT(@bug12408412 ORDER BY 1) INTO @bug12408412;
|
||||
|
||||
--echo End of 5.5 tests
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#ifndef MYSYS_MY_HANDLER_ERRORS_INCLUDED
|
||||
#define MYSYS_MY_HANDLER_ERRORS_INCLUDED
|
||||
|
||||
/* Copyright (c) 2008 MySQL AB
|
||||
Use is subject to license terms.
|
||||
/* Copyright (c) 2008, 2012, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -14,8 +13,8 @@
|
|||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||
|
||||
/*
|
||||
Errors a handler can give you
|
||||
|
@ -85,6 +84,7 @@ static const char *handler_error_messages[]=
|
|||
"Index column length exceeds limit",
|
||||
"Index corrupted",
|
||||
"Undo record too big",
|
||||
"Table is being used in foreign key check",
|
||||
"Invalid InnoDB FTS Doc ID",
|
||||
"Row is not visible by the current transaction",
|
||||
"Operation was interrupted by end user (probably kill command?)",
|
||||
|
|
|
@ -15,4 +15,4 @@
|
|||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
MYSQL_ADD_PLUGIN(dialog dialog.c ${CMAKE_SOURCE_DIR}/libmysql/get_password.c
|
||||
MODULE_ONLY)
|
||||
MODULE_ONLY COMPONENT SharedLibraries)
|
||||
|
|
|
@ -280,6 +280,9 @@ SET(LIBDL)
|
|||
|
||||
SET(NON_THREADED_LIBS ${CLIENT_LIBS})
|
||||
SET(mysql_config_COMPONENT COMPONENT Development)
|
||||
SET(msql2mysql_COMPONENT COMPONENT Client)
|
||||
SET(mysqlaccess_COMPONENT COMPONENT Client)
|
||||
SET(mysql_find_rows_COMPONENT COMPONENT Client)
|
||||
|
||||
IF(WIN32)
|
||||
# On Windows, some .sh and some .pl.in files are configured
|
||||
|
@ -317,7 +320,6 @@ ELSE()
|
|||
mysql_secure_installation
|
||||
mysql_zap
|
||||
mysqlaccess
|
||||
mysqlaccess.conf
|
||||
mysql_convert_table_format
|
||||
mysql_find_rows
|
||||
mysqlhotcopy
|
||||
|
|
|
@ -216,7 +216,7 @@ ADD_CUSTOM_COMMAND(
|
|||
DEPENDS gen_lex_hash
|
||||
)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysql_tzinfo_to_sql tztime.cc)
|
||||
MYSQL_ADD_EXECUTABLE(mysql_tzinfo_to_sql tztime.cc COMPONENT Server)
|
||||
SET_TARGET_PROPERTIES(mysql_tzinfo_to_sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
|
||||
TARGET_LINK_LIBRARIES(mysql_tzinfo_to_sql mysys)
|
||||
|
||||
|
@ -311,8 +311,8 @@ IF(WIN32 AND MYSQLD_EXECUTABLE)
|
|||
ELSE()
|
||||
# Not windows or cross compiling, just install an empty directory
|
||||
INSTALL(FILES ${DUMMY_FILE} DESTINATION data/mysql COMPONENT DataFiles)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF(WIN32 AND MYSQLD_EXECUTABLE)
|
||||
ENDIF(INSTALL_LAYOUT STREQUAL "STANDALONE")
|
||||
|
||||
IF(WIN32)
|
||||
SET(my_bootstrap_sql ${CMAKE_CURRENT_BINARY_DIR}/my_bootstrap.sql)
|
||||
|
|
14
sql/field.cc
14
sql/field.cc
|
@ -7860,7 +7860,19 @@ String *Field_set::val_str(String *val_buffer,
|
|||
ulonglong tmp=(ulonglong) Field_enum::val_int();
|
||||
uint bitnr=0;
|
||||
|
||||
val_buffer->set("", 0, field_charset);
|
||||
if (tmp == 0)
|
||||
{
|
||||
/*
|
||||
Some callers expect *val_buffer to contain the result,
|
||||
so we assign to it, rather than doing 'return &empty_set_string.
|
||||
*/
|
||||
*val_buffer= empty_set_string;
|
||||
return val_buffer;
|
||||
}
|
||||
|
||||
val_buffer->set_charset(field_charset);
|
||||
val_buffer->length(0);
|
||||
|
||||
while (tmp && bitnr < (uint) typelib->count)
|
||||
{
|
||||
if (tmp & 1)
|
||||
|
|
|
@ -2016,7 +2016,8 @@ public:
|
|||
:Field_enum(ptr_arg, len_arg, null_ptr_arg, null_bit_arg,
|
||||
unireg_check_arg, field_name_arg,
|
||||
packlength_arg,
|
||||
typelib_arg,charset_arg)
|
||||
typelib_arg,charset_arg),
|
||||
empty_set_string("", 0, charset_arg)
|
||||
{
|
||||
flags=(flags & ~ENUM_FLAG) | SET_FLAG;
|
||||
}
|
||||
|
@ -2027,8 +2028,11 @@ public:
|
|||
virtual bool zero_pack() const { return 1; }
|
||||
String *val_str(String*,String *);
|
||||
void sql_type(String &str) const;
|
||||
uint size_of() const { return sizeof(*this); }
|
||||
enum_field_types real_type() const { return MYSQL_TYPE_SET; }
|
||||
bool has_charset(void) const { return TRUE; }
|
||||
private:
|
||||
const String empty_set_string;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2240,6 +2244,8 @@ public:
|
|||
{
|
||||
return (flags & (BINCMP_FLAG | BINARY_FLAG)) != 0;
|
||||
}
|
||||
private:
|
||||
const String empty_set_string;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -361,10 +361,11 @@ static void do_save_blob(Copy_field *copy)
|
|||
static void do_field_string(Copy_field *copy)
|
||||
{
|
||||
char buff[MAX_FIELD_WIDTH];
|
||||
copy->tmp.set_quick(buff,sizeof(buff),copy->tmp.charset());
|
||||
copy->from_field->val_str(©->tmp);
|
||||
copy->to_field->store(copy->tmp.c_ptr_quick(),copy->tmp.length(),
|
||||
copy->tmp.charset());
|
||||
String res(buff, sizeof(buff), copy->from_field->charset());
|
||||
res.length(0U);
|
||||
|
||||
copy->from_field->val_str(&res);
|
||||
copy->to_field->store(res.c_ptr_quick(), res.length(), res.charset());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009-2011 Monty Program Ab
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
@ -11,8 +11,8 @@
|
|||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||
|
||||
/** @file handler.cc
|
||||
|
||||
|
@ -362,7 +362,8 @@ int ha_init_errors(void)
|
|||
SETMSG(HA_ERR_AUTOINC_ERANGE, ER_DEFAULT(ER_WARN_DATA_OUT_OF_RANGE));
|
||||
SETMSG(HA_ERR_TOO_MANY_CONCURRENT_TRXS, ER_DEFAULT(ER_TOO_MANY_CONCURRENT_TRXS));
|
||||
SETMSG(HA_ERR_INDEX_COL_TOO_LONG, ER_DEFAULT(ER_INDEX_COLUMN_TOO_LONG));
|
||||
SETMSG(HA_ERR_INDEX_CORRUPT, ER_DEFAULT(ER_INDEX_CORRUPT));
|
||||
SETMSG(HA_ERR_INDEX_CORRUPT, ER_DEFAULT(ER_INDEX_CORRUPT));
|
||||
SETMSG(HA_ERR_TABLE_IN_FK_CHECK, ER_DEFAULT(ER_TABLE_IN_FK_CHECK));
|
||||
SETMSG(HA_ERR_DISK_FULL, ER_DEFAULT(ER_DISK_FULL));
|
||||
|
||||
/* Register the error messages for use with my_error(). */
|
||||
|
@ -3042,6 +3043,9 @@ void handler::print_error(int error, myf errflag)
|
|||
case HA_ERR_UNDO_REC_TOO_BIG:
|
||||
textno= ER_UNDO_RECORD_TOO_BIG;
|
||||
break;
|
||||
case HA_ERR_TABLE_IN_FK_CHECK:
|
||||
textno= ER_TABLE_IN_FK_CHECK;
|
||||
break;
|
||||
default:
|
||||
{
|
||||
/* The error was "unknown" to this function.
|
||||
|
|
|
@ -1042,6 +1042,7 @@ struct handlerton
|
|||
const char *wild, bool dir, List<LEX_STRING> *files);
|
||||
int (*table_exists_in_engine)(handlerton *hton, THD* thd, const char *db,
|
||||
const char *name);
|
||||
|
||||
uint32 license; /* Flag for Engine License */
|
||||
/*
|
||||
Optional clauses in the CREATE/ALTER TABLE
|
||||
|
|
16
sql/item.cc
16
sql/item.cc
|
@ -8191,20 +8191,12 @@ bool Item_insert_value::fix_fields(THD *thd, Item **items)
|
|||
}
|
||||
|
||||
if (arg->type() == REF_ITEM)
|
||||
arg= static_cast<Item_ref *>(arg)->ref[0];
|
||||
if (arg->type() != FIELD_ITEM)
|
||||
{
|
||||
Item_ref *ref= (Item_ref *)arg;
|
||||
if (ref->ref[0]->type() != FIELD_ITEM)
|
||||
{
|
||||
my_error(ER_BAD_FIELD_ERROR, MYF(0), "", "VALUES() function");
|
||||
return TRUE;
|
||||
}
|
||||
arg= ref->ref[0];
|
||||
my_error(ER_BAD_FIELD_ERROR, MYF(0), "", "VALUES() function");
|
||||
return TRUE;
|
||||
}
|
||||
/*
|
||||
According to our SQL grammar, VALUES() function can reference
|
||||
only to a column.
|
||||
*/
|
||||
DBUG_ASSERT(arg->type() == FIELD_ITEM);
|
||||
|
||||
Item_field *field_arg= (Item_field *)arg;
|
||||
|
||||
|
|
|
@ -252,6 +252,7 @@ public:
|
|||
{ with_subselect= true; }
|
||||
bool fix_fields(THD *, Item **);
|
||||
bool fix_left(THD *thd, Item **ref);
|
||||
table_map not_null_tables() const { return 0; }
|
||||
bool is_null();
|
||||
longlong val_int();
|
||||
void cleanup();
|
||||
|
@ -503,6 +504,7 @@ public:
|
|||
{}
|
||||
virtual void top_level_item() { abort_on_null= 1; }
|
||||
bool is_top_level_item() { return abort_on_null; }
|
||||
table_map not_null_tables() const { return 0; }
|
||||
longlong val_int();
|
||||
enum Functype functype() const { return NOT_ALL_FUNC; }
|
||||
const char *func_name() const { return "<not>"; }
|
||||
|
|
|
@ -265,6 +265,7 @@ bool Item_subselect::fix_fields(THD *thd_param, Item **ref)
|
|||
|
||||
(*ref)= substitution;
|
||||
substitution->name= name;
|
||||
substitution->name_length= name_length;
|
||||
if (have_to_be_excluded)
|
||||
engine->exclude();
|
||||
substitution= 0;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue