Manual merge from mysql-trunk.
Conflicts: - mysql-test/r/partition.result - mysql-test/r/variables_debug.result - mysql-test/t/partition.test - mysql-test/t/variables_debug.test
This commit is contained in:
commit
eff442964a
@ -78,6 +78,3 @@ EXTRA_DIST = FINISH.sh \
|
||||
compile-solaris-sparc-debug \
|
||||
compile-solaris-sparc-forte \
|
||||
compile-solaris-sparc-purify
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -189,8 +189,11 @@ ELSE()
|
||||
ENDIF()
|
||||
|
||||
SET(DEFAULT_BASEDIR "${DEFAULT_MYSQL_HOME}")
|
||||
SET(MYSQL_DATADIR "${DEFAULT_MYSQL_HOME}/${INSTALL_MYSQLDATADIR}" CACHE PATH
|
||||
"default MySQL data directory")
|
||||
IF(INSTALL_MYSQLDATADIR MATCHES "^/.*")
|
||||
SET(MYSQL_DATADIR ${INSTALL_MYSQLDATADIR} CACHE PATH "default MySQL data directory")
|
||||
ELSE()
|
||||
SET(MYSQL_DATADIR "${DEFAULT_MYSQL_HOME}/${INSTALL_MYSQLDATADIR}" CACHE PATH "default MySQL data directory")
|
||||
ENDIF()
|
||||
SET(DEFAULT_CHARSET_HOME "${DEFAULT_MYSQL_HOME}")
|
||||
SET(PLUGINDIR "${DEFAULT_MYSQL_HOME}/${INSTALL_PLUGINDIR}")
|
||||
IF(SYSCONFDIR)
|
||||
@ -274,20 +277,28 @@ ELSE()
|
||||
SET(CPACK_GENERATOR "TGZ")
|
||||
ENDIF()
|
||||
INCLUDE(CPack)
|
||||
INSTALL(FILES COPYING EXCEPTIONS-CLIENT LICENSE.mysql DESTINATION ${INSTALL_DOCREADMEDIR} OPTIONAL)
|
||||
INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR})
|
||||
IF(UNIX)
|
||||
INSTALL(FILES Docs/INSTALL-BINARY DESTINATION
|
||||
${INSTALL_DOCREADMEDIR})
|
||||
INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR} OPTIONAL)
|
||||
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}
|
||||
#
|
||||
# RPM installs documentation directly from the source tree
|
||||
#
|
||||
IF(NOT INSTALL_LAYOUT MATCHES "RPM")
|
||||
INSTALL(FILES COPYING EXCEPTIONS-CLIENT LICENSE.mysql DESTINATION ${INSTALL_DOCREADMEDIR} OPTIONAL)
|
||||
INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR})
|
||||
IF(UNIX)
|
||||
INSTALL(FILES Docs/INSTALL-BINARY DESTINATION ${INSTALL_DOCREADMEDIR})
|
||||
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}
|
||||
PATTERN "INSTALL-BINARY" EXCLUDE
|
||||
PATTERN "Makefile.*" EXCLUDE
|
||||
PATTERN "myisam.txt" EXCLUDE
|
||||
PATTERN "glibc*" EXCLUDE
|
||||
PATTERN "sp-imp-spec.txt" EXCLUDE
|
||||
PATTERN "linuxthreads.txt" EXCLUDE
|
||||
)
|
||||
PATTERN "myisam.txt" EXCLUDE
|
||||
PATTERN "mysql.info" EXCLUDE
|
||||
PATTERN "sp-imp-spec.txt" EXCLUDE
|
||||
)
|
||||
ENDIF()
|
||||
|
@ -37,6 +37,3 @@ uninstall-local:
|
||||
@RM@ -f $(DESTDIR)$(infodir)/mysql.info ; \
|
||||
@RM@ -f $(DESTDIR)$(pkgdatadir)/ChangeLog ; \
|
||||
fi
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -328,6 +328,3 @@ do_abi_check:
|
||||
@DIFF@ -w $$file.pp $(top_builddir)/abi_check.out; \
|
||||
@RM@ $(top_builddir)/abi_check.out; \
|
||||
done
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -124,6 +124,3 @@ link_sources:
|
||||
rm -f $(srcdir)/my_user.c; \
|
||||
@LN_CP_F@ $(top_srcdir)/sql-common/my_user.c my_user.c;
|
||||
echo timestamp > link_sources;
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -80,9 +80,6 @@ IF(FEATURE_SET)
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
||||
SET(WITHOUT_AUDIT_NULL ON CACHE BOOL "")
|
||||
SET(WITHOUT_DAEMON_EXAMPLE ON CACHE BOOL "")
|
||||
|
||||
OPTION(ENABLE_LOCAL_INFILE "" ON)
|
||||
SET(WITH_SSL bundled CACHE STRING "")
|
||||
SET(WITH_ZLIB bundled CACHE STRING "")
|
||||
@ -122,8 +119,12 @@ IF(UNIX)
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
|
||||
IF(CMAKE_C_COMPILER_ID MATCHES "HP")
|
||||
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g +O2 +DD64 +DSitanium2 -mt -AC99")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g +O2 +DD64 +DSitanium2 -mt -Aa")
|
||||
SET(CMAKE_C_FLAGS
|
||||
"${CMAKE_C_FLAGS} +DD64 +DSitanium2 -mt -AC99")
|
||||
SET(CMAKE_CXX_FLAGS
|
||||
"${CMAKE_CXX_FLAGS} +DD64 +DSitanium2 -mt -Aa")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} +O2")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} +O2")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(WITH_SSL)
|
||||
@ -132,15 +133,16 @@ IF(UNIX)
|
||||
# Linux flags
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
IF(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-static-intel -g -O3 -unroll2 -ip -mp -restrict")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-static-intel -g -O3 -unroll2 -ip -mp -restrict")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-static-intel -static-libgcc -g -O3 -unroll2 -ip -mp -restrict -no-ftz -no-prefetch")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-static-intel -static-libgcc -g -O3 -unroll2 -ip -mp -restrict -no-ftz -no-prefetch")
|
||||
SET(WITH_SSL no)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# OSX flags
|
||||
IF(APPLE)
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-Os ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Os ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -Os -fno-common")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -Os -felide-constructors -fno-common")
|
||||
ENDIF()
|
||||
|
||||
# Solaris flags
|
||||
|
@ -14,52 +14,68 @@
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# The purpose of this file is to set the default installation layout.
|
||||
# Currently, there are 2 different installation layouts ,
|
||||
# one is used in tar.gz packages (Windows zip is about the same), another one
|
||||
# in RPMs.
|
||||
|
||||
# There are currently 2 layouts defines, named STANDALONE (tar.gz layout)
|
||||
# and UNIX (rpm layout). To force a directory layout when invoking cmake use
|
||||
# -DINSTALL_LAYOUT=[STANDALONE|UNIX].
|
||||
# This wil use a predefined layout. There is a possibility to further fine-tune
|
||||
# installation directories. Several variables are can be overwritten
|
||||
#
|
||||
# - INSTALL_BINDIR (directory with client executables and Unix shell scripts)
|
||||
# The current choices of installation layout are:
|
||||
#
|
||||
# STANDALONE
|
||||
# Build with prefix=/usr/local/mysql, create tarball with install prefix="."
|
||||
# and relative links. Windows zip uses the same tarball layout but without
|
||||
# the build prefix.
|
||||
#
|
||||
# RPM
|
||||
# Build as per default RPM layout, with prefix=/usr
|
||||
#
|
||||
# DEB
|
||||
# Build as per STANDALONE, prefix=/opt/mysql-$major.$minor
|
||||
#
|
||||
# SVR4
|
||||
# Solaris package layout suitable for pkg* tools, prefix=/opt/mysql/mysql
|
||||
#
|
||||
# To force a directory layout, use -DINSTALL_LAYOUT=<layout>.
|
||||
#
|
||||
# The default is STANDALONE.
|
||||
#
|
||||
# There is the possibility to further fine-tune installation directories.
|
||||
# Several variables can be overwritten:
|
||||
#
|
||||
# - INSTALL_BINDIR (directory with client executables and scripts)
|
||||
# - INSTALL_SBINDIR (directory with mysqld)
|
||||
# - INSTALL_SCRIPTDIR (several scripts, rarely used)
|
||||
#
|
||||
# - INSTALL_LIBDIR (directory with client end embedded libraries)
|
||||
# - INSTALL_PLUGINDIR (directory for plugins)
|
||||
#
|
||||
# - INSTALL_INCLUDEDIR (directory for MySQL headers)
|
||||
#
|
||||
# - INSTALL_DOCDIR (documentation)
|
||||
# - INSTALL_MANDIR (man pages)
|
||||
# - INSTALL_SCRIPTDIR (several scripts, rarely used)
|
||||
# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages)
|
||||
# - INSTALL_SHAREDIR (location of aclocal/mysql.m4)
|
||||
# - INSTALL_SQLBENCHDIR (sql-bench)
|
||||
# - INSTALL_MYSQLTESTDIR (mysql-test)
|
||||
# - INSTALL_DOCREADMEDIR (readme and similar)
|
||||
# - INSTALL_SUPPORTFILESDIR (used only in standalone installer)
|
||||
# - INSTALL_MANDIR (man pages)
|
||||
# - INSTALL_INFODIR (info pages)
|
||||
#
|
||||
# - INSTALL_SHAREDIR (location of aclocal/mysql.m4)
|
||||
# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages)
|
||||
# - INSTALL_MYSQLTESTDIR (mysql-test)
|
||||
# - INSTALL_SQLBENCHDIR (sql-bench)
|
||||
# - INSTALL_SUPPORTFILESDIR (various extra support files)
|
||||
#
|
||||
# - INSTALL_MYSQLDATADIR (data directory)
|
||||
|
||||
# Default installation layout on Unix is UNIX (kent wants it so)
|
||||
IF(NOT INSTALL_LAYOUT)
|
||||
IF(WIN32)
|
||||
SET(DEFAULT_INSTALL_LAYOUT "STANDALONE")
|
||||
ELSE()
|
||||
SET(DEFAULT_INSTALL_LAYOUT "UNIX")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}"
|
||||
CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) or UNIX")
|
||||
|
||||
IF(NOT INSTALL_LAYOUT MATCHES "STANDALONE")
|
||||
IF(NOT INSTALL_LAYOUT MATCHES "UNIX")
|
||||
SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
IF(INSTALL_LAYOUT MATCHES "UNIX")
|
||||
IF(INSTALL_LAYOUT MATCHES "RPM")
|
||||
SET(default_prefix "/usr")
|
||||
ELSEIF(INSTALL_LAYOUT MATCHES "DEB")
|
||||
SET(default_prefix "/opt/${MYSQL_BASE_VERSION}")
|
||||
# This is required to avoid "cpack -GDEB" default of prefix=/usr
|
||||
SET(CPACK_SET_DESTDIR ON)
|
||||
ELSEIF(INSTALL_LAYOUT MATCHES "SVR4")
|
||||
SET(default_prefix "/opt/mysql/mysql")
|
||||
ELSE()
|
||||
SET(default_prefix "/usr/local/mysql")
|
||||
ENDIF()
|
||||
@ -72,41 +88,110 @@ IF(UNIX)
|
||||
MARK_AS_ADVANCED(SYSCONFDIR)
|
||||
ENDIF()
|
||||
|
||||
#
|
||||
# STANDALONE layout
|
||||
#
|
||||
SET(INSTALL_BINDIR_STANDALONE "bin")
|
||||
SET(INSTALL_SBINDIR_STANDALONE "bin")
|
||||
SET(INSTALL_SCRIPTDIR_STANDALONE "scripts")
|
||||
#
|
||||
SET(INSTALL_LIBDIR_STANDALONE "lib")
|
||||
SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin")
|
||||
#
|
||||
SET(INSTALL_INCLUDEDIR_STANDALONE "include")
|
||||
#
|
||||
SET(INSTALL_DOCDIR_STANDALONE "docs")
|
||||
SET(INSTALL_DOCREADMEDIR_STANDALONE ".")
|
||||
SET(INSTALL_MANDIR_STANDALONE "man")
|
||||
SET(INSTALL_INFODIR_STANDALONE "docs")
|
||||
#
|
||||
SET(INSTALL_SHAREDIR_STANDALONE "share")
|
||||
SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share")
|
||||
SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test")
|
||||
SET(INSTALL_SQLBENCHDIR_STANDALONE ".")
|
||||
SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files")
|
||||
#
|
||||
SET(INSTALL_MYSQLDATADIR_STANDALONE "data")
|
||||
|
||||
#
|
||||
# RPM layout
|
||||
#
|
||||
SET(INSTALL_BINDIR_RPM "bin")
|
||||
SET(INSTALL_SBINDIR_RPM "sbin")
|
||||
SET(INSTALL_SCRIPTDIR_RPM "bin")
|
||||
#
|
||||
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
|
||||
SET(INSTALL_LIBDIR_RPM "lib64")
|
||||
SET(INSTALL_PLUGINDIR_RPM "lib64/mysql/plugin")
|
||||
ELSE()
|
||||
SET(INSTALL_LIBDIR_RPM "lib")
|
||||
SET(INSTALL_PLUGINDIR_RPM "lib/mysql/plugin")
|
||||
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_INFODIR_RPM "share/info")
|
||||
SET(INSTALL_MANDIR_RPM "share/man")
|
||||
#
|
||||
SET(INSTALL_SHAREDIR_RPM "share")
|
||||
SET(INSTALL_MYSQLSHAREDIR_RPM "share/mysql")
|
||||
SET(INSTALL_MYSQLTESTDIR_RPM "share/mysql-test")
|
||||
SET(INSTALL_SQLBENCHDIR_RPM "")
|
||||
SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql")
|
||||
#
|
||||
SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql")
|
||||
|
||||
# STANDALONE layout
|
||||
SET(INSTALL_BINDIR_STANDALONE "bin")
|
||||
SET(INSTALL_SBINDIR_STANDALONE "bin")
|
||||
SET(INSTALL_LIBDIR_STANDALONE "lib")
|
||||
SET(INSTALL_INCLUDEDIR_STANDALONE "include")
|
||||
SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin")
|
||||
SET(INSTALL_DOCDIR_STANDALONE "docs")
|
||||
SET(INSTALL_MANDIR_STANDALONE "man")
|
||||
SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share")
|
||||
SET(INSTALL_SHAREDIR_STANDALONE "share")
|
||||
SET(INSTALL_SCRIPTDIR_STANDALONE "scripts")
|
||||
SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test")
|
||||
SET(INSTALL_SQLBENCHROOTDIR_STANDALONE ".")
|
||||
SET(INSTALL_DOCREADMEDIR_STANDALONE ".")
|
||||
SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files")
|
||||
SET(INSTALL_MYSQLDATADIR_STANDALONE "data")
|
||||
#
|
||||
# DEB layout
|
||||
#
|
||||
SET(INSTALL_BINDIR_DEB "bin")
|
||||
SET(INSTALL_SBINDIR_DEB "bin")
|
||||
SET(INSTALL_SCRIPTDIR_DEB "scripts")
|
||||
#
|
||||
SET(INSTALL_LIBDIR_DEB "lib")
|
||||
SET(INSTALL_PLUGINDIR_DEB "lib/plugin")
|
||||
#
|
||||
SET(INSTALL_INCLUDEDIR_DEB "include")
|
||||
#
|
||||
SET(INSTALL_DOCDIR_DEB "docs")
|
||||
SET(INSTALL_DOCREADMEDIR_DEB ".")
|
||||
SET(INSTALL_MANDIR_DEB "man")
|
||||
SET(INSTALL_INFODIR_DEB "docs")
|
||||
#
|
||||
SET(INSTALL_SHAREDIR_DEB "share")
|
||||
SET(INSTALL_MYSQLSHAREDIR_DEB "share")
|
||||
SET(INSTALL_MYSQLTESTDIR_DEB "mysql-test")
|
||||
SET(INSTALL_SQLBENCHDIR_DEB ".")
|
||||
SET(INSTALL_SUPPORTFILESDIR_DEB "support-files")
|
||||
#
|
||||
SET(INSTALL_MYSQLDATADIR_DEB "data")
|
||||
|
||||
# UNIX layout
|
||||
SET(INSTALL_BINDIR_UNIX "bin")
|
||||
SET(INSTALL_SBINDIR_UNIX "sbin")
|
||||
SET(INSTALL_LIBDIR_UNIX "lib/mysql")
|
||||
SET(INSTALL_PLUGINDIR_UNIX "lib/mysql/plugin")
|
||||
SET(INSTALL_DOCDIR_UNIX "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}")
|
||||
SET(INSTALL_MANDIR_UNIX "share/mysql/man")
|
||||
SET(INSTALL_INCLUDEDIR_UNIX "include/mysql")
|
||||
SET(INSTALL_MYSQLSHAREDIR_UNIX "share/mysql")
|
||||
SET(INSTALL_SHAREDIR_UNIX "share")
|
||||
SET(INSTALL_SCRIPTDIR_UNIX "bin")
|
||||
SET(INSTALL_MYSQLTESTDIR_UNIX "mysql-test")
|
||||
SET(INSTALL_SQLBENCHROOTDIR_UNIX "")
|
||||
SET(INSTALL_DOCREADMEDIR_UNIX "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}")
|
||||
SET(INSTALL_SUPPORTFILESDIR_UNIX "")
|
||||
SET(INSTALL_MYSQLDATADIR_UNIX "var")
|
||||
#
|
||||
# SVR4 layout
|
||||
#
|
||||
SET(INSTALL_BINDIR_SVR4 "bin")
|
||||
SET(INSTALL_SBINDIR_SVR4 "bin")
|
||||
SET(INSTALL_SCRIPTDIR_SVR4 "scripts")
|
||||
#
|
||||
SET(INSTALL_LIBDIR_SVR4 "lib")
|
||||
SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin")
|
||||
#
|
||||
SET(INSTALL_INCLUDEDIR_SVR4 "include")
|
||||
#
|
||||
SET(INSTALL_DOCDIR_SVR4 "docs")
|
||||
SET(INSTALL_DOCREADMEDIR_SVR4 ".")
|
||||
SET(INSTALL_MANDIR_SVR4 "man")
|
||||
SET(INSTALL_INFODIR_SVR4 "docs")
|
||||
#
|
||||
SET(INSTALL_SHAREDIR_SVR4 "share")
|
||||
SET(INSTALL_MYSQLSHAREDIR_SVR4 "share")
|
||||
SET(INSTALL_MYSQLTESTDIR_SVR4 "mysql-test")
|
||||
SET(INSTALL_SQLBENCHDIR_SVR4 ".")
|
||||
SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files")
|
||||
#
|
||||
SET(INSTALL_MYSQLDATADIR_SVR4 "/var/lib/mysql")
|
||||
|
||||
|
||||
# Clear cached variables if install layout was changed
|
||||
@ -117,11 +202,11 @@ IF(OLD_INSTALL_LAYOUT)
|
||||
ENDIF()
|
||||
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)
|
||||
# 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
|
||||
MYSQLTEST SQLBENCHROOT DOCREADME SUPPORTFILES MYSQLDATA)
|
||||
INFO MYSQLTEST SQLBENCH DOCREADME SUPPORTFILES MYSQLDATA)
|
||||
SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}}
|
||||
CACHE STRING "${var} installation directory" ${FORCE})
|
||||
MARK_AS_ADVANCED(INSTALL_${var}DIR)
|
||||
|
@ -189,9 +189,40 @@ FUNCTION(INSTALL_DEBUG_TARGET target)
|
||||
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" )
|
||||
ENDIF()
|
||||
|
||||
# Define permissions
|
||||
# For executable files
|
||||
SET(PERMISSIONS_EXECUTABLE
|
||||
PERMISSIONS
|
||||
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||
GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE)
|
||||
|
||||
# Permissions for shared library (honors CMAKE_INSTALL_NO_EXE which is
|
||||
# typically set on Debian)
|
||||
IF(CMAKE_INSTALL_SO_NO_EXE)
|
||||
SET(PERMISSIONS_SHARED_LIBRARY
|
||||
PERMISSIONS
|
||||
OWNER_READ OWNER_WRITE
|
||||
GROUP_READ
|
||||
WORLD_READ)
|
||||
ELSE()
|
||||
SET(PERMISSIONS_SHARED_LIBRARY ${PERMISSIONS_EXECUTABLE})
|
||||
ENDIF()
|
||||
|
||||
# Shared modules get the same permissions as shared libraries
|
||||
SET(PERMISSIONS_MODULE_LIBRARY ${PERMISSIONS_SHARED_LIBRARY})
|
||||
|
||||
# Define permissions for static library
|
||||
SET(PERMISSIONS_STATIC_LIBRARY
|
||||
PERMISSIONS
|
||||
OWNER_READ OWNER_WRITE
|
||||
GROUP_READ
|
||||
WORLD_READ)
|
||||
|
||||
INSTALL(FILES ${debug_target_location}
|
||||
DESTINATION ${ARG_DESTINATION}
|
||||
${RENAME_PARAM}
|
||||
${PERMISSIONS_${target_type}}
|
||||
CONFIGURATIONS Release RelWithDebInfo
|
||||
OPTIONAL)
|
||||
|
||||
|
@ -55,6 +55,7 @@ MACRO(GET_MYSQL_VERSION)
|
||||
ENDIF()
|
||||
|
||||
SET(VERSION ${VERSION_STRING})
|
||||
STRING(REPLACE "-" "_" MYSQL_U_SCORE_VERSION "${VERSION_STRING}")
|
||||
|
||||
# Remove trailing (non-numeric) part of the version string
|
||||
STRING(REGEX REPLACE "[^\\.0-9].*" "" VERSION_STRING ${VERSION_STRING})
|
||||
@ -106,6 +107,7 @@ ENDIF()
|
||||
IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME)
|
||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mysql-${VERSION}")
|
||||
ENDIF()
|
||||
SET(CPACK_PACKAGE_CONTACT "MySQL Build Team <build@mysql.com>")
|
||||
SET(CPACK_PACKAGE_VENDOR "Sun Microsystems, Inc")
|
||||
SET(CPACK_SOURCE_GENERATOR "TGZ")
|
||||
INCLUDE(cpack_source_ignore_files)
|
||||
@ -114,6 +116,16 @@ INCLUDE(cpack_source_ignore_files)
|
||||
SET(PRODUCTNAME "MySQL Server")
|
||||
SET(COMPANYNAME ${CPACK_PACKAGE_VENDOR})
|
||||
|
||||
# Windows 'date' command has unpredictable output, so cannot rely on it to
|
||||
# set MYSQL_COPYRIGHT_YEAR - if someone finds a portable way to do so then
|
||||
# it might be useful
|
||||
#IF (WIN32)
|
||||
# EXECUTE_PROCESS(COMMAND "date" "/T" OUTPUT_VARIABLE TMP_DATE)
|
||||
# STRING(REGEX REPLACE "(..)/(..)/..(..).*" "\\3\\2\\1" MYSQL_COPYRIGHT_YEAR ${TMP_DATE})
|
||||
IF(UNIX)
|
||||
EXECUTE_PROCESS(COMMAND "date" "+%Y" OUTPUT_VARIABLE MYSQL_COPYRIGHT_YEAR OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
ENDIF()
|
||||
|
||||
# Add version information to the exe and dll files
|
||||
# Refer to http://msdn.microsoft.com/en-us/library/aa381058(VS.85).aspx
|
||||
# for more info.
|
||||
|
@ -174,6 +174,7 @@ MACRO(MYSQL_ADD_PLUGIN)
|
||||
OUTPUT_NAME "${ARG_MODULE_OUTPUT_NAME}")
|
||||
# Install dynamic library
|
||||
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR})
|
||||
INSTALL_DEBUG_TARGET(${target} DESTINATION ${INSTALL_PLUGINDIR}/debug)
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
@ -19,6 +19,3 @@
|
||||
|
||||
SUBDIRS= @readline_basedir@
|
||||
DIST_SUBDIRS= libedit readline
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -32,6 +32,3 @@ noinst_HEADERS = readline.h chardefs.h keymaps.h \
|
||||
EXTRA_DIST= emacs_keymap.c vi_keymap.c CMakeLists.txt
|
||||
|
||||
DEFS = -DMYSQL_CLIENT_NO_THREADS -DHAVE_CONFIG_H -DNO_KILL_INTR
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -38,6 +38,7 @@
|
||||
#cmakedefine HAVE_FPU_CONTROL_H 1
|
||||
#cmakedefine HAVE_GRP_H 1
|
||||
#cmakedefine HAVE_EXPLICIT_TEMPLATE_INSTANTIATION 1
|
||||
#cmakedefine HAVE_IA64INTRIN_H 1
|
||||
#cmakedefine HAVE_IEEEFP_H 1
|
||||
#cmakedefine HAVE_INTTYPES_H 1
|
||||
#cmakedefine HAVE_LIMITS_H 1
|
||||
|
@ -55,6 +55,3 @@ EXTRA_DIST = CMakeLists.txt
|
||||
|
||||
perror.o: perror.c
|
||||
$(COMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -1,5 +1,2 @@
|
||||
SUBDIRS = taocrypt src testsuite
|
||||
EXTRA_DIST = CMakeLists.txt
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -6,7 +6,3 @@ libyassl_la_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \
|
||||
template_instnt.cpp timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp
|
||||
EXTRA_DIST = $(wildcard ../include/*.hpp) $(wildcard ../include/openssl/*.h)
|
||||
AM_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
||||
|
@ -1,5 +1,2 @@
|
||||
SUBDIRS = src test benchmark
|
||||
EXTRA_DIST = CMakeLists.txt $(wildcard mySTL/*.hpp)
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -4,6 +4,3 @@ benchmark_SOURCES = benchmark.cpp
|
||||
benchmark_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
|
||||
benchmark_CXXFLAGS = -DYASSL_PURE_C
|
||||
EXTRA_DIST = benchmark.dsp rsa1024.der dh1024.der dsa1024.der make.bat
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -11,7 +11,3 @@ libtaocrypt_la_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp \
|
||||
libtaocrypt_la_CXXFLAGS = @yassl_taocrypt_extra_cxxflags@ -DYASSL_PURE_C
|
||||
|
||||
EXTRA_DIST = $(wildcard ../include/*.hpp)
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
||||
|
@ -4,6 +4,3 @@ test_SOURCES = test.cpp
|
||||
test_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
|
||||
test_CXXFLAGS = -DYASSL_PURE_C
|
||||
EXTRA_DIST = make.bat
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -8,7 +8,3 @@ testsuite_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX -DNO_MAIN_DRIVER
|
||||
testsuite_LDADD = $(top_builddir)/extra/yassl/src/libyassl.la \
|
||||
$(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
|
||||
EXTRA_DIST = testsuite.dsp test.hpp input quit make.bat
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
||||
|
@ -96,6 +96,3 @@ endif
|
||||
|
||||
probes_mysql_nodtrace.h: $(DTRACEPROVIDER)
|
||||
@PERL@ $(top_srcdir)/scripts/dheadgen.pl -f $(DTRACEPROVIDER) > $@
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -171,15 +171,24 @@ IF(UNIX)
|
||||
SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION})
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR})
|
||||
ENDIF()
|
||||
|
||||
IF(NOT DISABLE_SHARED)
|
||||
MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS})
|
||||
IF(UNIX)
|
||||
# libtool compatability
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
|
||||
SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}")
|
||||
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
|
||||
SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0")
|
||||
ELSE()
|
||||
SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0")
|
||||
ENDIF()
|
||||
# Name of shared library is mysqlclient on Unix
|
||||
SET_TARGET_PROPERTIES(libmysql PROPERTIES
|
||||
OUTPUT_NAME mysqlclient
|
||||
VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0"
|
||||
VERSION "${OS_SHARED_LIB_VERSION}"
|
||||
SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
|
||||
IF(LINK_FLAG_NO_UNDEFINED)
|
||||
GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
|
||||
@ -194,9 +203,16 @@ IF(NOT DISABLE_SHARED)
|
||||
SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
|
||||
# Install 3 links to libmysqlclient.so (client_r)
|
||||
FOREACH(ver "" "${SHARED_LIB_MAJOR_VERSION}"
|
||||
"${SHARED_LIB_MAJOR_VERSION}.0.0")
|
||||
# Install links to libmysqlclient.so (client_r)
|
||||
GET_VERSIONED_LIBNAME(
|
||||
"${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r"
|
||||
"${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
||||
""
|
||||
linkname)
|
||||
INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR})
|
||||
SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}")
|
||||
LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS)
|
||||
FOREACH(ver ${OS_SHARED_LIB_SYMLINKS})
|
||||
GET_VERSIONED_LIBNAME(
|
||||
"${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r"
|
||||
"${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
||||
|
@ -113,6 +113,3 @@ do-lib-dist:
|
||||
echo ' $$(AR) r $$@ $$?' >>$$dir/Makefile; \
|
||||
gtar cvzf $$dir.tar.gz $$dir; \
|
||||
cd $$dir; gmake
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -116,6 +116,3 @@ conf_to_src_LDADD=
|
||||
#force static linking of conf_to_src - essential when linking against
|
||||
#custom installation of libc
|
||||
conf_to_src_LDFLAGS=@NOINST_LDFLAGS@
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -44,6 +44,3 @@ link_sources:
|
||||
done; \
|
||||
done
|
||||
echo timestamp > link_sources
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -133,7 +133,7 @@ ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR} RENAME
|
||||
${CMAKE_STATIC_LIBRARY_PREFIX}/mysqld-debug)
|
||||
${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug)
|
||||
ENDIF()
|
||||
|
||||
IF(MSVC AND NOT DISABLE_SHARED)
|
||||
|
@ -234,6 +234,3 @@ link_sources:
|
||||
clean-local:
|
||||
rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlstoragesources) $(storagesources) | sed "s;\.lo;.c;g"`; \
|
||||
rm -f client_settings.h
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -23,7 +23,9 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY -UMYSQL_CLIENT)
|
||||
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc
|
||||
# We never use "mysql_embedded", is more of a linktest, so we don't
|
||||
# use MYSQL_ADD_EXECUTABLE as that would install it and package it
|
||||
ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc
|
||||
../../client/mysql.cc ../../client/readline.cc)
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded mysqlserver)
|
||||
IF(UNIX)
|
||||
|
@ -50,6 +50,3 @@ mysql_LDADD = @readline_link@ @TERMCAP_LIB@ $(LDADD)
|
||||
|
||||
mysql_client_test_embedded_LINK = $(CXXLINK)
|
||||
nodist_mysql_client_test_embedded_SOURCES = mysql_client_test.c
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -15,8 +15,12 @@
|
||||
|
||||
# Copy man pages
|
||||
FILE(GLOB MAN1_FILES *.1)
|
||||
FILE(GLOB MAN1_EXCLUDE make_win_bin_dist.1)
|
||||
FILE(GLOB MAN8_FILES *.8)
|
||||
IF(MAN1_FILES)
|
||||
IF(MAN1_EXCLUDE)
|
||||
LIST(REMOVE_ITEM MAN1_FILES ${MAN1_EXCLUDE})
|
||||
ENDIF()
|
||||
INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1)
|
||||
ENDIF()
|
||||
IF(MAN8_FILES)
|
||||
|
@ -24,6 +24,3 @@ EXTRA_DIST = $(man1_MANS) $(man8_MANS) CMakeLists.txt
|
||||
# "make_win_*" are not needed in Unix binary packages,
|
||||
install-data-hook:
|
||||
rm -f $(DESTDIR)$(mandir)/man1/make_win_*
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -18,6 +18,7 @@ INSTALL(
|
||||
DESTINATION ${INSTALL_MYSQLTESTDIR}
|
||||
PATTERN "var/" EXCLUDE
|
||||
PATTERN "lib/My/SafeProcess" EXCLUDE
|
||||
PATTERN "lib/t*" EXCLUDE
|
||||
PATTERN "CPack" EXCLUDE
|
||||
PATTERN "CMake*" EXCLUDE
|
||||
PATTERN "mtr.out*" EXCLUDE
|
||||
|
@ -148,6 +148,3 @@ mtr:
|
||||
mysql-test-run:
|
||||
$(RM) -f mysql-test-run
|
||||
$(LN_S) mysql-test-run.pl mysql-test-run
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -6,6 +6,8 @@ binlog.binlog_multi_engine # joro : NDB tests marked as experiment
|
||||
funcs_1.charset_collation_1 # depends on compile-time decisions
|
||||
funcs_1.myisam_views @solaris # Bug#50595 2010-03-05 alik funcs_1.myisam_views takes longer time on 6.0 branch than 5.1 branch
|
||||
|
||||
innodb.innodb_information_schema # Bug#48883 2010-05-11 alik Test "innodb_information_schema" takes fewer locks than expected
|
||||
|
||||
main.func_math @freebsd # Bug#43020 2010-05-04 alik main.func_math fails on FreeBSD in PB2
|
||||
main.gis @solaris # Bug#52208 2010-04-26 alik gis fails on some platforms (Solaris, HP-UX, Linux)
|
||||
main.gis-rtree @freebsd # Bug#38965 2010-05-04 alik test cases gis-rtree, type_float, type_newdecimal fail in embedded server
|
||||
|
@ -457,6 +457,8 @@ select * from t1;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
# Ensure that row_count() value is reset after drop table.
|
||||
select 1;
|
||||
select hex(concat(row_count()));
|
||||
create table t1 as select concat(row_count()) as c1;
|
||||
show create table t1;
|
||||
|
@ -23,7 +23,7 @@ perl;
|
||||
while (<F>) {
|
||||
next if 1../The following groups are read/;
|
||||
# formatting, skip line consisting entirely of dashes and blanks
|
||||
next if /^[\- ]+$/;
|
||||
next if /^[\- ]+\s?$/;
|
||||
next if /Value \(after reading options\)/; # skip table header
|
||||
next if /^($re1) /;
|
||||
next if /^($re2)-/;
|
||||
|
@ -23,7 +23,3 @@ my_safe_process_SOURCES = safe_process.cc
|
||||
EXTRA_DIST = safe_kill_win.cc \
|
||||
safe_process_win.cc \
|
||||
CMakeLists.txt
|
||||
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -772,6 +772,9 @@ t1 CREATE TABLE `t1` (
|
||||
`c1` varbinary(31) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
select 1;
|
||||
1
|
||||
1
|
||||
select hex(concat(row_count()));
|
||||
hex(concat(row_count()))
|
||||
2D31
|
||||
|
@ -854,6 +854,9 @@ t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(31) CHARACTER SET cp1251 DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
select 1;
|
||||
1
|
||||
1
|
||||
select hex(concat(row_count()));
|
||||
hex(concat(row_count()))
|
||||
2D31
|
||||
|
@ -1182,6 +1182,9 @@ t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(31) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
select 1;
|
||||
1
|
||||
1
|
||||
select hex(concat(row_count()));
|
||||
hex(concat(row_count()))
|
||||
2D31
|
||||
|
@ -2014,6 +2014,9 @@ t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(31) CHARACTER SET ucs2 DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
select 1;
|
||||
1
|
||||
1
|
||||
select hex(concat(row_count()));
|
||||
hex(concat(row_count()))
|
||||
002D0031
|
||||
|
@ -1,3 +1,122 @@
|
||||
SET @old_general_log= @@global.general_log;
|
||||
ok
|
||||
|
||||
# cat MYSQL_TMP_DIR/test_wl4435.out.log
|
||||
# ------------------------------------
|
||||
|
||||
exec_counter: 0
|
||||
num_fields: 4
|
||||
- 0: name: 'a1'/'a1'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 1: name: 'a2'/'a2'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 32; max_length: 0; type: 254; decimals: 0
|
||||
- 2: name: 'a3'/'a3'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
|
||||
- 3: name: 'a4'/'a4'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 5; max_length: 0; type: 246; decimals: 1
|
||||
Data:
|
||||
int: 1; str: '11'; dbl: 12.340000; dec: '56.7';
|
||||
int: 2; str: '12'; dbl: 56.780000; dec: '90.1';
|
||||
int: 3; str: '13'; dbl: 23.450000; dec: '67.8';
|
||||
EOF
|
||||
mysql_stmt_next_result(): 0; field_count: 5
|
||||
num_fields: 5
|
||||
- 0: name: 'b0'/'b0'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 1: name: 'b1'/'b1'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 2: name: 'b2'/'b2'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 32; max_length: 0; type: 254; decimals: 0
|
||||
- 3: name: 'b3'/'b3'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
|
||||
- 4: name: 'b4'/'b4'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 5; max_length: 0; type: 246; decimals: 1
|
||||
Data:
|
||||
int: 100; int: 10; str: '110'; dbl: 70.700000; dec: '10.1';
|
||||
int: 200; int: 20; str: '120'; dbl: 80.800000; dec: '20.2';
|
||||
int: 300; int: 30; str: '130'; dbl: 90.900000; dec: '30.3';
|
||||
EOF
|
||||
mysql_stmt_next_result(): 0; field_count: 8
|
||||
num_fields: 8
|
||||
- 0: name: 'v_str_1'/'v_str_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 32; max_length: 0; type: 254; decimals: 0
|
||||
- 1: name: 'v_dbl_1'/'v_dbl_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
|
||||
- 2: name: 'v_dec_1'/'v_dec_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 8; max_length: 0; type: 246; decimals: 3
|
||||
- 3: name: 'v_int_1'/'v_int_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 4: name: 'v_str_2'/'v_str_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 64; max_length: 0; type: 254; decimals: 0
|
||||
- 5: name: 'v_dbl_2'/'v_dbl_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 5; max_length: 0; type: 5; decimals: 3
|
||||
- 6: name: 'v_dec_2'/'v_dec_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 9; max_length: 0; type: 246; decimals: 4
|
||||
- 7: name: 'v_int_2'/'v_int_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
Data:
|
||||
str: 'test_1'; dbl: 12.340000; dec: '567.891'; int: 2345; str: 'test_2'; dbl: 67.891000; dec: '234.6789'; int: 6789;
|
||||
EOF
|
||||
mysql_stmt_next_result(): 0; field_count: 0
|
||||
|
||||
exec_counter: 1
|
||||
num_fields: 4
|
||||
- 0: name: 'a1'/'a1'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 1: name: 'a2'/'a2'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 32; max_length: 0; type: 254; decimals: 0
|
||||
- 2: name: 'a3'/'a3'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
|
||||
- 3: name: 'a4'/'a4'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 5; max_length: 0; type: 246; decimals: 1
|
||||
Data:
|
||||
int: 1; str: '11'; dbl: 12.340000; dec: '56.7';
|
||||
int: 2; str: '12'; dbl: 56.780000; dec: '90.1';
|
||||
int: 3; str: '13'; dbl: 23.450000; dec: '67.8';
|
||||
EOF
|
||||
mysql_stmt_next_result(): 0; field_count: 5
|
||||
num_fields: 5
|
||||
- 0: name: 'b0'/'b0'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 1: name: 'b1'/'b1'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 2: name: 'b2'/'b2'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 32; max_length: 0; type: 254; decimals: 0
|
||||
- 3: name: 'b3'/'b3'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
|
||||
- 4: name: 'b4'/'b4'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 5; max_length: 0; type: 246; decimals: 1
|
||||
Data:
|
||||
int: 100; int: 10; str: '110'; dbl: 70.700000; dec: '10.1';
|
||||
int: 200; int: 20; str: '120'; dbl: 80.800000; dec: '20.2';
|
||||
int: 300; int: 30; str: '130'; dbl: 90.900000; dec: '30.3';
|
||||
EOF
|
||||
mysql_stmt_next_result(): 0; field_count: 8
|
||||
num_fields: 8
|
||||
- 0: name: 'v_str_1'/'v_str_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 32; max_length: 0; type: 254; decimals: 0
|
||||
- 1: name: 'v_dbl_1'/'v_dbl_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
|
||||
- 2: name: 'v_dec_1'/'v_dec_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 8; max_length: 0; type: 246; decimals: 3
|
||||
- 3: name: 'v_int_1'/'v_int_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 4: name: 'v_str_2'/'v_str_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 64; max_length: 0; type: 254; decimals: 0
|
||||
- 5: name: 'v_dbl_2'/'v_dbl_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 5; max_length: 0; type: 5; decimals: 3
|
||||
- 6: name: 'v_dec_2'/'v_dec_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 9; max_length: 0; type: 246; decimals: 4
|
||||
- 7: name: 'v_int_2'/'v_int_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
Data:
|
||||
str: 'test_1'; dbl: 12.340000; dec: '567.891'; int: 2345; str: 'test_2'; dbl: 67.891000; dec: '234.6789'; int: 6789;
|
||||
EOF
|
||||
mysql_stmt_next_result(): 0; field_count: 0
|
||||
|
||||
exec_counter: 2
|
||||
num_fields: 4
|
||||
- 0: name: 'a1'/'a1'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 1: name: 'a2'/'a2'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 32; max_length: 0; type: 254; decimals: 0
|
||||
- 2: name: 'a3'/'a3'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
|
||||
- 3: name: 'a4'/'a4'; table: 't1'/'t1'; db: 'client_test_db'; catalog: 'def'; length: 5; max_length: 0; type: 246; decimals: 1
|
||||
Data:
|
||||
int: 1; str: '11'; dbl: 12.340000; dec: '56.7';
|
||||
int: 2; str: '12'; dbl: 56.780000; dec: '90.1';
|
||||
int: 3; str: '13'; dbl: 23.450000; dec: '67.8';
|
||||
EOF
|
||||
mysql_stmt_next_result(): 0; field_count: 5
|
||||
num_fields: 5
|
||||
- 0: name: 'b0'/'b0'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 1: name: 'b1'/'b1'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 2: name: 'b2'/'b2'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 32; max_length: 0; type: 254; decimals: 0
|
||||
- 3: name: 'b3'/'b3'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
|
||||
- 4: name: 'b4'/'b4'; table: 't2'/'t2'; db: 'client_test_db'; catalog: 'def'; length: 5; max_length: 0; type: 246; decimals: 1
|
||||
Data:
|
||||
int: 100; int: 10; str: '110'; dbl: 70.700000; dec: '10.1';
|
||||
int: 200; int: 20; str: '120'; dbl: 80.800000; dec: '20.2';
|
||||
int: 300; int: 30; str: '130'; dbl: 90.900000; dec: '30.3';
|
||||
EOF
|
||||
mysql_stmt_next_result(): 0; field_count: 8
|
||||
num_fields: 8
|
||||
- 0: name: 'v_str_1'/'v_str_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 32; max_length: 0; type: 254; decimals: 0
|
||||
- 1: name: 'v_dbl_1'/'v_dbl_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 4; max_length: 0; type: 5; decimals: 2
|
||||
- 2: name: 'v_dec_1'/'v_dec_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 8; max_length: 0; type: 246; decimals: 3
|
||||
- 3: name: 'v_int_1'/'v_int_1'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
- 4: name: 'v_str_2'/'v_str_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 64; max_length: 0; type: 254; decimals: 0
|
||||
- 5: name: 'v_dbl_2'/'v_dbl_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 5; max_length: 0; type: 5; decimals: 3
|
||||
- 6: name: 'v_dec_2'/'v_dec_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 9; max_length: 0; type: 246; decimals: 4
|
||||
- 7: name: 'v_int_2'/'v_int_2'; table: 'p1'/'p1'; db: 'client_test_db'; catalog: 'def'; length: 11; max_length: 0; type: 3; decimals: 0
|
||||
Data:
|
||||
str: 'test_1'; dbl: 12.340000; dec: '567.891'; int: 2345; str: 'test_2'; dbl: 67.891000; dec: '234.6789'; int: 6789;
|
||||
EOF
|
||||
mysql_stmt_next_result(): 0; field_count: 0
|
||||
# ------------------------------------
|
||||
|
||||
SET @@global.general_log= @old_general_log;
|
||||
|
@ -2112,6 +2112,26 @@ COUNT(*)
|
||||
DROP TABLE t1;
|
||||
SET SESSION SQL_MODE=DEFAULT;
|
||||
#
|
||||
# Bug#46198: Hang after failed ALTER TABLE on partitioned table.
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (s1 INT PRIMARY KEY) PARTITION BY HASH(s1);
|
||||
LOCK TABLES t1 WRITE, t1 b READ;
|
||||
UNLOCK TABLES;
|
||||
ALTER TABLE t1 DROP PARTITION p1;
|
||||
ERROR HY000: DROP PARTITION can only be used on RANGE/LIST partitions
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (s1 VARCHAR(5) PRIMARY KEY) PARTITION BY KEY(s1);
|
||||
LOCK TABLES t1 WRITE, t1 b READ;
|
||||
UNLOCK TABLES;
|
||||
ALTER TABLE t1 ADD COLUMN (s3 VARCHAR(5) UNIQUE);
|
||||
ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#51868 - crash with myisam_use_mmap and partitioned myisam tables
|
||||
#
|
||||
SET GLOBAL myisam_use_mmap=1;
|
||||
|
@ -2590,11 +2590,11 @@ row_count()
|
||||
call bug4905()|
|
||||
select row_count()|
|
||||
row_count()
|
||||
-1
|
||||
0
|
||||
call bug4905()|
|
||||
select row_count()|
|
||||
row_count()
|
||||
-1
|
||||
0
|
||||
select * from t3|
|
||||
s1
|
||||
1
|
||||
|
@ -10,6 +10,13 @@ set debug= '-P';
|
||||
select @@debug;
|
||||
@@debug
|
||||
T
|
||||
SELECT @@session.debug, @@global.debug;
|
||||
@@session.debug @@global.debug
|
||||
T
|
||||
SET SESSION debug = '';
|
||||
SELECT @@session.debug, @@global.debug;
|
||||
@@session.debug @@global.debug
|
||||
|
||||
#
|
||||
# Bug #52629: memory leak from sys_var_thd_dbug in
|
||||
# binlog.binlog_write_error
|
||||
|
@ -375,7 +375,7 @@ row_count() after delete
|
||||
2
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
-1
|
||||
0
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
qwe xyz 1998-03-26 100 uvw 1000
|
||||
|
@ -376,7 +376,7 @@ row_count() after delete
|
||||
2
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
-1
|
||||
0
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
qwe xyz 1998-03-26 100 uvw 1000
|
||||
|
@ -376,7 +376,7 @@ row_count() after delete
|
||||
2
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
-1
|
||||
0
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
qwe xyz 1998-03-26 100 uvw 1000
|
||||
|
@ -375,7 +375,7 @@ row_count() after delete
|
||||
2
|
||||
SELECT row_count();
|
||||
row_count()
|
||||
-1
|
||||
0
|
||||
SELECT * FROM temp;
|
||||
f1 f2 f3 f4 f5 f6
|
||||
qwe xyz 1998-03-26 100 uvw 1000
|
||||
|
79
mysql-test/suite/funcs_1/r/row_count_func.result
Normal file
79
mysql-test/suite/funcs_1/r/row_count_func.result
Normal file
@ -0,0 +1,79 @@
|
||||
|
||||
# --
|
||||
# -- Test case for Bug#21818.
|
||||
# --
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
|
||||
# -- Check 1.
|
||||
SELECT * FROM t1 INTO OUTFILE "MYSQL_TMP_DIR/bug21818.txt";
|
||||
affected rows: 3
|
||||
|
||||
SELECT ROW_COUNT();
|
||||
ROW_COUNT()
|
||||
3
|
||||
|
||||
# -- Check 2.
|
||||
SELECT a FROM t1 LIMIT 1 INTO @a;
|
||||
affected rows: 1
|
||||
|
||||
SELECT ROW_COUNT();
|
||||
ROW_COUNT()
|
||||
1
|
||||
|
||||
# -- Check 3.
|
||||
DROP DATABASE IF EXISTS mysqltest1;
|
||||
CREATE DATABASE mysqltest1;
|
||||
affected rows: 1
|
||||
|
||||
SELECT ROW_COUNT();
|
||||
ROW_COUNT()
|
||||
1
|
||||
DROP DATABASE mysqltest1;
|
||||
|
||||
# -- Check 4.
|
||||
DELETE FROM t1;
|
||||
LOAD DATA INFILE 'MYSQL_TMP_DIR/bug21818.txt' INTO TABLE t1(a);
|
||||
affected rows: 3
|
||||
info: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
|
||||
|
||||
SELECT ROW_COUNT();
|
||||
ROW_COUNT()
|
||||
3
|
||||
|
||||
# -- Check 5.
|
||||
ALTER TABLE t1 ADD COLUMN b VARCHAR(255);
|
||||
affected rows: 3
|
||||
info: Records: 3 Duplicates: 0 Warnings: 0
|
||||
|
||||
SELECT ROW_COUNT();
|
||||
ROW_COUNT()
|
||||
3
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# -- Check 6.
|
||||
DROP TABLE IF EXISTS t2;
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(a INT);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
INSERT INTO t2 VALUES (ROW_COUNT());
|
||||
SELECT * FROM t2;
|
||||
a
|
||||
3
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
# -- Check 7 (check that SQL errors reset row_count to -1).
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
SELECT f1();
|
||||
ERROR 42000: FUNCTION test.f1 does not exist
|
||||
SELECT ROW_COUNT();
|
||||
ROW_COUNT()
|
||||
-1
|
||||
DROP TABLE t1;
|
||||
|
||||
# -- End of test case for Bug#21818.
|
1
mysql-test/suite/funcs_1/t/row_count_func-master.opt
Normal file
1
mysql-test/suite/funcs_1/t/row_count_func-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--secure-file-priv=$MYSQL_TMP_DIR
|
115
mysql-test/suite/funcs_1/t/row_count_func.test
Normal file
115
mysql-test/suite/funcs_1/t/row_count_func.test
Normal file
@ -0,0 +1,115 @@
|
||||
--echo
|
||||
--echo # --
|
||||
--echo # -- Test case for Bug#21818.
|
||||
--echo # --
|
||||
--echo
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
|
||||
--echo
|
||||
--echo # -- Check 1.
|
||||
|
||||
--enable_info
|
||||
--echo SELECT * FROM t1 INTO OUTFILE "MYSQL_TMP_DIR/bug21818.txt";
|
||||
--disable_query_log # to avoid $MYSQL_TMP_DIR in query log
|
||||
--eval SELECT * FROM t1 INTO OUTFILE "$MYSQL_TMP_DIR/bug21818.txt"
|
||||
--enable_query_log
|
||||
--disable_info
|
||||
|
||||
--echo
|
||||
SELECT ROW_COUNT();
|
||||
|
||||
--echo
|
||||
--echo # -- Check 2.
|
||||
|
||||
--enable_info
|
||||
SELECT a FROM t1 LIMIT 1 INTO @a;
|
||||
--disable_info
|
||||
|
||||
--echo
|
||||
SELECT ROW_COUNT();
|
||||
|
||||
--echo
|
||||
--echo # -- Check 3.
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mysqltest1;
|
||||
--enable_warnings
|
||||
|
||||
--enable_info
|
||||
CREATE DATABASE mysqltest1;
|
||||
--disable_info
|
||||
|
||||
--echo
|
||||
SELECT ROW_COUNT();
|
||||
|
||||
DROP DATABASE mysqltest1;
|
||||
|
||||
--echo
|
||||
--echo # -- Check 4.
|
||||
|
||||
DELETE FROM t1;
|
||||
|
||||
--enable_info
|
||||
--echo LOAD DATA INFILE 'MYSQL_TMP_DIR/bug21818.txt' INTO TABLE t1(a);
|
||||
--disable_query_log # to avoid $MYSQL_TMP_DIR in query log
|
||||
--eval LOAD DATA INFILE '$MYSQL_TMP_DIR/bug21818.txt' INTO TABLE t1(a)
|
||||
--enable_query_log
|
||||
--disable_info
|
||||
|
||||
--echo
|
||||
SELECT ROW_COUNT();
|
||||
|
||||
--remove_file $MYSQL_TMP_DIR/bug21818.txt
|
||||
|
||||
--echo
|
||||
--echo # -- Check 5.
|
||||
|
||||
--enable_info
|
||||
ALTER TABLE t1 ADD COLUMN b VARCHAR(255);
|
||||
--disable_info
|
||||
|
||||
--echo
|
||||
SELECT ROW_COUNT();
|
||||
|
||||
--echo
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
--echo # -- Check 6.
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(a INT);
|
||||
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
INSERT INTO t2 VALUES (ROW_COUNT());
|
||||
|
||||
SELECT * FROM t2;
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
--echo
|
||||
--echo # -- Check 7 (check that SQL errors reset row_count to -1).
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
--error ER_SP_DOES_NOT_EXIST
|
||||
SELECT f1();
|
||||
|
||||
SELECT ROW_COUNT();
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
--echo # -- End of test case for Bug#21818.
|
@ -10,7 +10,6 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
rpl_row_create_table : Bug#45576 2009-12-01 joro rpl_row_create_table fails on PB2
|
||||
rpl_row_create_table : Bug#51574 Feb 27 2010 andrei failed different way than earlier with bug#45576
|
||||
rpl_spec_variables : BUG#47661 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux
|
||||
rpl_failed_optimize : WL#4284: Can't optimize table used by a pending transaction (there is metadata lock on the table).
|
||||
|
@ -16,4 +16,11 @@ SET @old_general_log= @@global.general_log;
|
||||
# End of 4.1 tests
|
||||
echo ok;
|
||||
|
||||
--echo
|
||||
--echo # cat MYSQL_TMP_DIR/test_wl4435.out.log
|
||||
--echo # ------------------------------------
|
||||
--cat_file $MYSQL_TMP_DIR/test_wl4435.out.log
|
||||
--echo # ------------------------------------
|
||||
--echo
|
||||
|
||||
SET @@global.general_log= @old_general_log;
|
||||
|
@ -399,4 +399,12 @@ delimiter ;$$
|
||||
|
||||
drop procedure p_37228;
|
||||
|
||||
#
|
||||
# Bug#27863 (excessive memory usage for many small queries in a multiquery
|
||||
# packet).
|
||||
#
|
||||
|
||||
let $i=`select repeat("set @a=1;", 65535)`;
|
||||
--disable_query_log
|
||||
eval $i;
|
||||
--enable_query_log
|
||||
|
@ -2119,6 +2119,50 @@ SET SESSION SQL_MODE=DEFAULT;
|
||||
#
|
||||
#DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#46198: Hang after failed ALTER TABLE on partitioned table.
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Case 1.
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (s1 INT PRIMARY KEY) PARTITION BY HASH(s1);
|
||||
|
||||
LOCK TABLES t1 WRITE, t1 b READ;
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
--error ER_ONLY_ON_RANGE_LIST_PARTITION
|
||||
ALTER TABLE t1 DROP PARTITION p1;
|
||||
|
||||
# The SELECT below used to hang in tdc_wait_for_old_versions().
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Case 2.
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (s1 VARCHAR(5) PRIMARY KEY) PARTITION BY KEY(s1);
|
||||
|
||||
LOCK TABLES t1 WRITE, t1 b READ;
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
|
||||
ALTER TABLE t1 ADD COLUMN (s3 VARCHAR(5) UNIQUE);
|
||||
|
||||
# The SELECT below used to hang in tdc_wait_for_old_versions().
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#51868 - crash with myisam_use_mmap and partitioned myisam tables
|
||||
--echo #
|
||||
|
@ -11,6 +11,16 @@ select @@debug;
|
||||
set debug= '-P';
|
||||
select @@debug;
|
||||
|
||||
#
|
||||
# Bug#38054: "SET SESSION debug" modifies @@global.debug variable
|
||||
#
|
||||
|
||||
SELECT @@session.debug, @@global.debug;
|
||||
|
||||
SET SESSION debug = '';
|
||||
|
||||
SELECT @@session.debug, @@global.debug;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #52629: memory leak from sys_var_thd_dbug in
|
||||
--echo # binlog.binlog_write_error
|
||||
|
@ -159,6 +159,3 @@ probes_mysql.d:
|
||||
probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
|
||||
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
|
||||
endif
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -115,6 +115,3 @@ test_db.sql: init_db.sql $(top_srcdir)/scripts/mysql_test_data_timezone.sql
|
||||
@echo "Building $@";
|
||||
@cat init_db.sql \
|
||||
$(top_srcdir)/scripts/mysql_test_data_timezone.sql > $@;
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -28,6 +28,3 @@ DIST_SUBDIRS = @mysql_pg_distdirs@
|
||||
install-exec-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(pkglibdir) $(DESTDIR)$(pkglibdir)/plugin
|
||||
test ! -d debug || $(TAR) cf - debug | ( cd $(DESTDIR)$(pkglibdir)/plugin && $(TAR) xvf - )
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -13,4 +13,4 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
MYSQL_ADD_PLUGIN(audit_null audit_null.c)
|
||||
MYSQL_ADD_PLUGIN(audit_null audit_null.c MODULE_ONLY)
|
||||
|
@ -39,6 +39,3 @@ libdaemon_example_a_CXXFLAGS = $(AM_CFLAGS)
|
||||
libdaemon_example_a_CFLAGS = $(AM_CFLAGS)
|
||||
libdaemon_example_a_SOURCES= daemon_example.cc
|
||||
EXTRA_DIST = CMakeLists.txt
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -13,5 +13,5 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
MYSQL_ADD_PLUGIN(ftexample plugin_example.c MODULE_ONLY MODULE_OUTPUT_NAME mypluglib)
|
||||
MYSQL_ADD_PLUGIN(ftexample plugin_example.c
|
||||
MODULE_ONLY MODULE_OUTPUT_NAME "mypluglib")
|
||||
|
@ -23,6 +23,3 @@ mypluglib_la_SOURCES= plugin_example.c
|
||||
mypluglib_la_LDFLAGS= -module -rpath $(pkgplugindir)
|
||||
mypluglib_la_CFLAGS= -DMYSQL_DYNAMIC_PLUGIN
|
||||
EXTRA_DIST= CMakeLists.txt
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -27,6 +27,3 @@ libpstack_a_SOURCES = bucomm.c filemode.c linuxthreads.c rddbg.c \
|
||||
debug.c ieee.c pstack.c stabs.c
|
||||
noinst_HEADERS = bucomm.h debug.h ieee.h budbg.h demangle.h \
|
||||
linuxthreads.h pstack.h pstacktrace.h
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -1,4 +1 @@
|
||||
noinst_HEADERS = aout64.h stab.def stab_gnu.h
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -31,6 +31,3 @@ test: re tests
|
||||
./re < tests
|
||||
./re -el < tests
|
||||
./re -er < tests
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -93,6 +93,10 @@ IF(CMAKE_GENERATOR MATCHES "Makefiles")
|
||||
# No multiconfig build - use CMAKE_C_FLAGS
|
||||
SET(CFLAGS "@CMAKE_C_FLAGS@")
|
||||
SET(CXXFLAGS "@CMAKE_CXX_FLAGS@")
|
||||
FOREACH(ARCH ${CMAKE_OSX_ARCHITECTURES})
|
||||
SET(CFLAGS "${CFLAGS} -arch ${ARCH}")
|
||||
SET(CXXFLAGS "${CXXFLAGS} -arch ${ARCH}")
|
||||
ENDFOREACH()
|
||||
ELSE()
|
||||
# Multiconfig build - use CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
SET(CFLAGS "@CMAKE_C_FLAGS_RELWITHDEBINFO@")
|
||||
@ -134,11 +138,10 @@ ELSE()
|
||||
SET(CHECK_PID "kill -s SIGCONT $PID > /dev/null 2> /dev/null")
|
||||
ENDIF()
|
||||
|
||||
SET(HOSTNAME "hostname")
|
||||
|
||||
ENDIF(UNIX)
|
||||
|
||||
|
||||
|
||||
|
||||
# Really ugly, one script, "mysql_install_db", needs prefix set to ".",
|
||||
# i.e. makes access relative the current directory. This matches
|
||||
# the documentation, so better not change this.
|
||||
@ -298,14 +301,13 @@ ELSE()
|
||||
mysql_secure_installation
|
||||
mysql_zap
|
||||
mysqlaccess
|
||||
mysqlaccess.conf
|
||||
mysqlbug
|
||||
mysql_convert_table_format
|
||||
mysql_find_rows
|
||||
mysqlhotcopy
|
||||
mysqldumpslow
|
||||
mysqld_multi
|
||||
mysqlaccess
|
||||
mysqlaccess.conf
|
||||
mysqld_safe
|
||||
)
|
||||
FOREACH(file ${BIN_SCRIPTS})
|
||||
|
@ -190,7 +190,3 @@ SUFFIXES = .sh
|
||||
$< > $@-t
|
||||
@CHMOD@ +x $@-t
|
||||
@MV@ $@-t $@
|
||||
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -307,7 +307,7 @@ set_malloc_lib() {
|
||||
malloc_lib=
|
||||
# This list is kept intentionally simple. Simply set --malloc-lib
|
||||
# to a full path if another location is desired.
|
||||
for libdir in /usr/lib "$pkglibdir"; do
|
||||
for libdir in /usr/lib "$pkglibdir" "$pkglibdir/mysql"; do
|
||||
for flavor in _minimal '' _and_profiler _debug; do
|
||||
tmp="$libdir/libtcmalloc$flavor.so"
|
||||
#log_notice "DEBUG: Checking for malloc lib '$tmp'"
|
||||
@ -704,7 +704,7 @@ fi
|
||||
|
||||
cmd="`mysqld_ld_preload_text`$NOHUP_NICENESS"
|
||||
|
||||
plugin_dir="${PLUGIN_DIR:-@pkgplugindir@}${PLUGIN_VARIANT}"
|
||||
plugin_dir="${PLUGIN_DIR:-$MY_BASEDIR_VERSION/lib/plugin}${PLUGIN_VARIANT}"
|
||||
|
||||
for i in "$ledir/$MYSQLD" "$defaults" "--basedir=$MY_BASEDIR_VERSION" \
|
||||
"--datadir=$DATADIR" "--plugin-dir=$plugin_dir" "$USER_OPTION"
|
||||
|
@ -18,23 +18,22 @@ FILE(GLOB all_files
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/*
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/Data/ATIS/*
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/Data/Wisconsin/*
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/Comments/*
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/limits/*
|
||||
)
|
||||
|
||||
IF(NOT INSTALL_SQLBENCHROOTDIR)
|
||||
IF(NOT INSTALL_SQLBENCHDIR)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
IF(INSTALL_SQLBENCHROOTDIR STREQUAL ".")
|
||||
IF(INSTALL_SQLBENCHDIR STREQUAL ".")
|
||||
SET(prefix)
|
||||
ELSE()
|
||||
SET(prefix ${INSTALL_SQLBENCHROOTDIR}/)
|
||||
SET(prefix ${INSTALL_SQLBENCHDIR}/)
|
||||
ENDIF()
|
||||
|
||||
GET_FILENAME_COMPONENT(basedir ${CMAKE_SOURCE_DIR} ABSOLUTE)
|
||||
FOREACH(file ${all_files})
|
||||
IF(NOT IS_DIRECTORY ${file} AND NOT ${file} MATCHES "Make" )
|
||||
IF(NOT IS_DIRECTORY ${file} AND NOT ${file} MATCHES "Make|as3ap|/example$" )
|
||||
FILE(RELATIVE_PATH relpath ${basedir} ${file})
|
||||
SET(target_relpath ${relpath})
|
||||
GET_FILENAME_COMPONENT(ext ${file} EXT)
|
||||
|
@ -81,6 +81,3 @@ SUFFIXES = .sh
|
||||
$< > $@-t
|
||||
@CHMOD@ +x $@-t
|
||||
@MV@ $@-t $@
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -15,6 +15,3 @@
|
||||
|
||||
## Process this file with automake to create Makefile.in
|
||||
EXTRA_DIST = client.c pack.c my_time.c my_user.c
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -280,7 +280,8 @@ IF(WIN32 AND MYSQLD_EXECUTABLE)
|
||||
ALL
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/data/mysql/user.frm
|
||||
)
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data/mysql DESTINATION data)
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data DESTINATION .
|
||||
PATTERN "bootstrap.sql" EXCLUDE)
|
||||
ELSE()
|
||||
# Not windows or cross compiling, just install an empty directory
|
||||
INSTALL(FILES ${DUMMY_FILE} DESTINATION data/mysql)
|
||||
|
@ -271,6 +271,3 @@ probes_libndb.o: probes_mysql.d libndb_la-ha_ndbcluster.lo
|
||||
fi
|
||||
|
||||
endif
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -263,7 +263,6 @@ static void run_query(THD *thd, char *buf, char *end,
|
||||
ulonglong save_thd_options= thd->variables.option_bits;
|
||||
DBUG_ASSERT(sizeof(save_thd_options) == sizeof(thd->variables.option_bits));
|
||||
NET save_thd_net= thd->net;
|
||||
const char* found_semicolon= NULL;
|
||||
|
||||
bzero((char*) &thd->net, sizeof(NET));
|
||||
thd->set_query(buf, (uint) (end - buf));
|
||||
@ -277,7 +276,10 @@ static void run_query(THD *thd, char *buf, char *end,
|
||||
DBUG_ASSERT(!thd->in_sub_stmt);
|
||||
DBUG_ASSERT(!thd->locked_tables_mode);
|
||||
|
||||
mysql_parse(thd, thd->query(), thd->query_length(), &found_semicolon);
|
||||
{
|
||||
Parser_state parser_state(thd, thd->query(), thd->query_length());
|
||||
mysql_parse(thd, thd->query(), thd->query_length(), &parser_state);
|
||||
}
|
||||
|
||||
if (no_print_error && thd->is_slave_error)
|
||||
{
|
||||
|
@ -6030,7 +6030,7 @@ longlong Item_func_row_count::val_int()
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
THD *thd= current_thd;
|
||||
|
||||
return thd->row_count_func;
|
||||
return thd->get_row_count_func();
|
||||
}
|
||||
|
||||
|
||||
|
@ -3287,8 +3287,8 @@ int Query_log_event::do_apply_event(Relay_log_info const *rli,
|
||||
thd->table_map_for_update= (table_map)table_map_for_update;
|
||||
|
||||
/* Execute the query (note that we bypass dispatch_command()) */
|
||||
const char* found_semicolon= NULL;
|
||||
mysql_parse(thd, thd->query(), thd->query_length(), &found_semicolon);
|
||||
Parser_state parser_state(thd, thd->query(), thd->query_length());
|
||||
mysql_parse(thd, thd->query(), thd->query_length(), &parser_state);
|
||||
log_slow_statement(thd);
|
||||
|
||||
/*
|
||||
|
@ -210,7 +210,7 @@ net_send_ok(THD *thd,
|
||||
NET *net= &thd->net;
|
||||
uchar buff[MYSQL_ERRMSG_SIZE+10],*pos;
|
||||
bool error= FALSE;
|
||||
DBUG_ENTER("my_ok");
|
||||
DBUG_ENTER("net_send_ok");
|
||||
|
||||
if (! net->vio) // hack for re-parsing queries
|
||||
{
|
||||
|
@ -58,6 +58,3 @@ distclean-local:
|
||||
|
||||
# Do nothing
|
||||
link_sources:
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -543,7 +543,7 @@ THD::THD()
|
||||
cuted_fields= 0L;
|
||||
sent_row_count= 0L;
|
||||
limit_found_rows= 0;
|
||||
row_count_func= -1;
|
||||
m_row_count_func= -1;
|
||||
statement_id_counter= 0UL;
|
||||
// Must be reset to handle error with THD's created for init of mysqld
|
||||
lex->current_select= 0;
|
||||
@ -835,9 +835,12 @@ MYSQL_ERROR* THD::raise_condition(uint sql_errno,
|
||||
else
|
||||
{
|
||||
if (! stmt_da->is_error())
|
||||
{
|
||||
set_row_count_func(-1);
|
||||
stmt_da->set_error_status(this, sql_errno, msg, sqlstate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
If a continue handler is found, the error message will be cleared
|
||||
@ -1836,11 +1839,6 @@ bool select_to_file::send_eof()
|
||||
error= 1;
|
||||
if (!error)
|
||||
{
|
||||
/*
|
||||
In order to remember the value of affected rows for ROW_COUNT()
|
||||
function, SELECT INTO has to have an own SQLCOM.
|
||||
TODO: split from SQLCOM_SELECT
|
||||
*/
|
||||
::my_ok(thd,row_count);
|
||||
}
|
||||
file= -1;
|
||||
@ -2881,11 +2879,6 @@ bool select_dumpvar::send_eof()
|
||||
if (! row_count)
|
||||
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||
ER_SP_FETCH_NO_DATA, ER(ER_SP_FETCH_NO_DATA));
|
||||
/*
|
||||
In order to remember the value of affected rows for ROW_COUNT()
|
||||
function, SELECT INTO has to have an own SQLCOM.
|
||||
TODO: split from SQLCOM_SELECT
|
||||
*/
|
||||
::my_ok(thd,row_count);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1999,7 +1999,50 @@ public:
|
||||
}
|
||||
|
||||
ulonglong limit_found_rows;
|
||||
longlong row_count_func; /* For the ROW_COUNT() function */
|
||||
|
||||
private:
|
||||
/**
|
||||
Stores the result of ROW_COUNT() function.
|
||||
|
||||
ROW_COUNT() function is a MySQL extention, but we try to keep it
|
||||
similar to ROW_COUNT member of the GET DIAGNOSTICS stack of the SQL
|
||||
standard (see SQL99, part 2, search for ROW_COUNT). It's value is
|
||||
implementation defined for anything except INSERT, DELETE, UPDATE.
|
||||
|
||||
ROW_COUNT is assigned according to the following rules:
|
||||
|
||||
- In my_ok():
|
||||
- for DML statements: to the number of affected rows;
|
||||
- for DDL statements: to 0.
|
||||
|
||||
- In my_eof(): to -1 to indicate that there was a result set.
|
||||
|
||||
We derive this semantics from the JDBC specification, where int
|
||||
java.sql.Statement.getUpdateCount() is defined to (sic) "return the
|
||||
current result as an update count; if the result is a ResultSet
|
||||
object or there are no more results, -1 is returned".
|
||||
|
||||
- In my_error(): to -1 to be compatible with the MySQL C API and
|
||||
MySQL ODBC driver.
|
||||
|
||||
- For SIGNAL statements: to 0 per WL#2110 specification (see also
|
||||
sql_signal.cc comment). Zero is used since that's the "default"
|
||||
value of ROW_COUNT in the diagnostics area.
|
||||
*/
|
||||
|
||||
longlong m_row_count_func; /* For the ROW_COUNT() function */
|
||||
|
||||
public:
|
||||
inline longlong get_row_count_func() const
|
||||
{
|
||||
return m_row_count_func;
|
||||
}
|
||||
|
||||
inline void set_row_count_func(longlong row_count_func)
|
||||
{
|
||||
m_row_count_func= row_count_func;
|
||||
}
|
||||
|
||||
ha_rows cuted_fields;
|
||||
|
||||
/*
|
||||
@ -2786,6 +2829,7 @@ inline void
|
||||
my_ok(THD *thd, ulonglong affected_rows= 0, ulonglong id= 0,
|
||||
const char *message= NULL)
|
||||
{
|
||||
thd->set_row_count_func(affected_rows);
|
||||
thd->stmt_da->set_ok_status(thd, affected_rows, id, message);
|
||||
}
|
||||
|
||||
@ -2795,6 +2839,7 @@ my_ok(THD *thd, ulonglong affected_rows= 0, ulonglong id= 0,
|
||||
inline void
|
||||
my_eof(THD *thd)
|
||||
{
|
||||
thd->set_row_count_func(-1);
|
||||
thd->stmt_da->set_eof_status(thd);
|
||||
}
|
||||
|
||||
@ -3456,7 +3501,7 @@ public:
|
||||
/* Bits in sql_command_flags */
|
||||
|
||||
#define CF_CHANGES_DATA (1U << 0)
|
||||
#define CF_HAS_ROW_COUNT (1U << 1)
|
||||
/* The 2nd bit is unused -- it used to be CF_HAS_ROW_COUNT. */
|
||||
#define CF_STATUS_COMMAND (1U << 2)
|
||||
#define CF_SHOW_TABLE_COMMAND (1U << 3)
|
||||
#define CF_WRITE_LOGS_COMMAND (1U << 4)
|
||||
|
@ -187,8 +187,8 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
|
||||
if (prune_partitions(thd, table, conds))
|
||||
{
|
||||
free_underlaid_joins(thd, select_lex);
|
||||
thd->row_count_func= 0;
|
||||
my_ok(thd, (ha_rows) thd->row_count_func); // No matching records
|
||||
// No matching record
|
||||
my_ok(thd, 0);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
#endif
|
||||
@ -204,7 +204,6 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
|
||||
{
|
||||
delete select;
|
||||
free_underlaid_joins(thd, select_lex);
|
||||
thd->row_count_func= 0;
|
||||
/*
|
||||
Error was already created by quick select evaluation (check_quick()).
|
||||
TODO: Add error code output parameter to Item::val_xxx() methods.
|
||||
@ -213,7 +212,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
|
||||
*/
|
||||
if (thd->is_error())
|
||||
DBUG_RETURN(TRUE);
|
||||
my_ok(thd, (ha_rows) thd->row_count_func);
|
||||
my_ok(thd, 0);
|
||||
/*
|
||||
We don't need to call reset_auto_increment in this case, because
|
||||
mysql_truncate always gives a NULL conds argument, hence we never
|
||||
@ -460,8 +459,7 @@ cleanup:
|
||||
If a TRUNCATE TABLE was issued, the number of rows should be reported as
|
||||
zero since the exact number is unknown.
|
||||
*/
|
||||
thd->row_count_func= reset_auto_increment ? 0 : deleted;
|
||||
my_ok(thd, (ha_rows) thd->row_count_func);
|
||||
my_ok(thd, reset_auto_increment ? 0 : deleted);
|
||||
DBUG_PRINT("info",("%ld records deleted",(long) deleted));
|
||||
}
|
||||
DBUG_RETURN(error >= 0 || thd->is_error());
|
||||
@ -1058,8 +1056,7 @@ bool multi_delete::send_eof()
|
||||
|
||||
if (!local_error)
|
||||
{
|
||||
thd->row_count_func= deleted;
|
||||
::my_ok(thd, (ha_rows) thd->row_count_func);
|
||||
::my_ok(thd, deleted);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1005,10 +1005,10 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
|
||||
if (values_list.elements == 1 && (!(thd->variables.option_bits & OPTION_WARNINGS) ||
|
||||
!thd->cuted_fields))
|
||||
{
|
||||
thd->row_count_func= info.copied + info.deleted +
|
||||
my_ok(thd, info.copied + info.deleted +
|
||||
((thd->client_capabilities & CLIENT_FOUND_ROWS) ?
|
||||
info.touched : info.updated);
|
||||
my_ok(thd, (ulong) thd->row_count_func, id);
|
||||
info.touched : info.updated),
|
||||
id);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1024,8 +1024,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
|
||||
sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records,
|
||||
(ulong) (info.deleted + updated),
|
||||
(ulong) thd->warning_info->statement_warn_count());
|
||||
thd->row_count_func= info.copied + info.deleted + updated;
|
||||
::my_ok(thd, (ulong) thd->row_count_func, id, buff);
|
||||
::my_ok(thd, info.copied + info.deleted + updated, id, buff);
|
||||
}
|
||||
thd->abort_on_warning= 0;
|
||||
DBUG_RETURN(FALSE);
|
||||
@ -3337,7 +3336,7 @@ bool select_insert::send_eof()
|
||||
{
|
||||
int error;
|
||||
bool const trans_table= table->file->has_transactions();
|
||||
ulonglong id;
|
||||
ulonglong id, row_count;
|
||||
bool changed;
|
||||
THD::killed_state killed_status= thd->killed;
|
||||
DBUG_ENTER("select_insert::send_eof");
|
||||
@ -3403,16 +3402,15 @@ bool select_insert::send_eof()
|
||||
sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records,
|
||||
(ulong) (info.deleted+info.updated),
|
||||
(ulong) thd->warning_info->statement_warn_count());
|
||||
thd->row_count_func= info.copied + info.deleted +
|
||||
row_count= info.copied + info.deleted +
|
||||
((thd->client_capabilities & CLIENT_FOUND_ROWS) ?
|
||||
info.touched : info.updated);
|
||||
|
||||
id= (thd->first_successful_insert_id_in_cur_stmt > 0) ?
|
||||
thd->first_successful_insert_id_in_cur_stmt :
|
||||
(thd->arg_of_last_insert_id_function ?
|
||||
thd->first_successful_insert_id_in_prev_stmt :
|
||||
(info.copied ? autoinc_value_of_last_inserted_row : 0));
|
||||
::my_ok(thd, (ulong) thd->row_count_func, id, buff);
|
||||
::my_ok(thd, row_count, id, buff);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
@ -142,37 +142,64 @@ st_parsing_options::reset()
|
||||
allows_derived= TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Perform initialization of Lex_input_stream instance.
|
||||
|
||||
Basically, a buffer for pre-processed query. This buffer should be large
|
||||
enough to keep multi-statement query. The allocation is done once in the
|
||||
Lex_input_stream constructor in order to prevent memory pollution when
|
||||
the server is processing large multi-statement queries.
|
||||
|
||||
@todo Check return value of THD::alloc().
|
||||
*/
|
||||
|
||||
Lex_input_stream::Lex_input_stream(THD *thd,
|
||||
const char* buffer,
|
||||
unsigned int length)
|
||||
: m_thd(thd),
|
||||
yylineno(1),
|
||||
yytoklen(0),
|
||||
yylval(NULL),
|
||||
lookahead_token(-1),
|
||||
lookahead_yylval(NULL),
|
||||
m_ptr(buffer),
|
||||
m_tok_start(NULL),
|
||||
m_tok_end(NULL),
|
||||
m_end_of_query(buffer + length),
|
||||
m_tok_start_prev(NULL),
|
||||
m_buf(buffer),
|
||||
m_buf_length(length),
|
||||
m_echo(TRUE),
|
||||
m_cpp_tok_start(NULL),
|
||||
m_cpp_tok_start_prev(NULL),
|
||||
m_cpp_tok_end(NULL),
|
||||
m_body_utf8(NULL),
|
||||
m_cpp_utf8_processed_ptr(NULL),
|
||||
next_state(MY_LEX_START),
|
||||
found_semicolon(NULL),
|
||||
ignore_space(test(thd->variables.sql_mode & MODE_IGNORE_SPACE)),
|
||||
stmt_prepare_mode(FALSE),
|
||||
multi_statements(TRUE),
|
||||
in_comment(NO_COMMENT),
|
||||
m_underscore_cs(NULL)
|
||||
:m_thd(thd)
|
||||
{
|
||||
m_cpp_buf= (char*) thd->alloc(length + 1);
|
||||
reset(buffer, length);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Prepare Lex_input_stream instance state for use for handling next SQL statement.
|
||||
|
||||
It should be called between two statements in a multi-statement query.
|
||||
The operation resets the input stream to the beginning-of-parse state,
|
||||
but does not reallocate m_cpp_buf.
|
||||
*/
|
||||
|
||||
void
|
||||
Lex_input_stream::reset(const char *buffer, unsigned int length)
|
||||
{
|
||||
yylineno= 1;
|
||||
yytoklen= 0;
|
||||
yylval= NULL;
|
||||
lookahead_token= -1;
|
||||
lookahead_yylval= NULL;
|
||||
m_ptr= buffer;
|
||||
m_tok_start= NULL;
|
||||
m_tok_end= NULL;
|
||||
m_end_of_query= buffer + length;
|
||||
m_tok_start_prev= NULL;
|
||||
m_buf= buffer;
|
||||
m_buf_length= length;
|
||||
m_echo= TRUE;
|
||||
m_cpp_tok_start= NULL;
|
||||
m_cpp_tok_start_prev= NULL;
|
||||
m_cpp_tok_end= NULL;
|
||||
m_body_utf8= NULL;
|
||||
m_cpp_utf8_processed_ptr= NULL;
|
||||
next_state= MY_LEX_START;
|
||||
found_semicolon= NULL;
|
||||
ignore_space= test(m_thd->variables.sql_mode & MODE_IGNORE_SPACE);
|
||||
stmt_prepare_mode= FALSE;
|
||||
multi_statements= TRUE;
|
||||
in_comment=NO_COMMENT;
|
||||
m_underscore_cs= NULL;
|
||||
m_cpp_ptr= m_cpp_buf;
|
||||
}
|
||||
|
||||
|
@ -1377,6 +1377,8 @@ public:
|
||||
Lex_input_stream(THD *thd, const char* buff, unsigned int length);
|
||||
~Lex_input_stream();
|
||||
|
||||
void reset(const char *buff, unsigned int length);
|
||||
|
||||
/**
|
||||
Set the echo mode.
|
||||
|
||||
@ -2207,8 +2209,8 @@ struct LEX: public Query_tables_list
|
||||
class Set_signal_information
|
||||
{
|
||||
public:
|
||||
/** Constructor. */
|
||||
Set_signal_information();
|
||||
/** Empty default constructor, use clear() */
|
||||
Set_signal_information() {}
|
||||
|
||||
/** Copy constructor. */
|
||||
Set_signal_information(const Set_signal_information& set);
|
||||
@ -2221,7 +2223,7 @@ public:
|
||||
void clear();
|
||||
|
||||
/**
|
||||
For each contition item assignment, m_item[] contains the parsed tree
|
||||
For each condition item assignment, m_item[] contains the parsed tree
|
||||
that represents the expression assigned, if any.
|
||||
m_item[] is an array indexed by Diag_condition_item_name.
|
||||
*/
|
||||
@ -2238,8 +2240,16 @@ class Yacc_state
|
||||
{
|
||||
public:
|
||||
Yacc_state()
|
||||
: yacc_yyss(NULL), yacc_yyvs(NULL)
|
||||
{}
|
||||
{
|
||||
reset();
|
||||
}
|
||||
|
||||
void reset()
|
||||
{
|
||||
yacc_yyss= NULL;
|
||||
yacc_yyvs= NULL;
|
||||
m_set_signal_info.clear();
|
||||
}
|
||||
|
||||
~Yacc_state();
|
||||
|
||||
@ -2284,6 +2294,12 @@ public:
|
||||
|
||||
Lex_input_stream m_lip;
|
||||
Yacc_state m_yacc;
|
||||
|
||||
void reset(const char *found_semicolon, unsigned int length)
|
||||
{
|
||||
m_lip.reset(found_semicolon, length);
|
||||
m_yacc.reset();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -274,22 +274,20 @@ void init_update_queries(void)
|
||||
sql_command_flags[SQLCOM_CREATE_TRIGGER]= CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_DROP_TRIGGER]= CF_AUTO_COMMIT_TRANS;
|
||||
|
||||
sql_command_flags[SQLCOM_UPDATE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT |
|
||||
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_UPDATE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT |
|
||||
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_INSERT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT |
|
||||
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_INSERT_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT |
|
||||
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_DELETE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT |
|
||||
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_DELETE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT |
|
||||
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_REPLACE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT |
|
||||
CF_REEXECUTION_FRAGILE;
|
||||
sql_command_flags[SQLCOM_REPLACE_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT |
|
||||
CF_REEXECUTION_FRAGILE;
|
||||
sql_command_flags[SQLCOM_UPDATE]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
|
||||
CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_UPDATE_MULTI]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
|
||||
CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_INSERT]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
|
||||
CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_INSERT_SELECT]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
|
||||
CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_DELETE]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
|
||||
CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_DELETE_MULTI]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
|
||||
CF_PROTECT_AGAINST_GRL;
|
||||
sql_command_flags[SQLCOM_REPLACE]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE;
|
||||
sql_command_flags[SQLCOM_REPLACE_SELECT]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE;
|
||||
sql_command_flags[SQLCOM_SELECT]= CF_REEXECUTION_FRAGILE;
|
||||
sql_command_flags[SQLCOM_SET_OPTION]= CF_REEXECUTION_FRAGILE | CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_DO]= CF_REEXECUTION_FRAGILE;
|
||||
@ -367,8 +365,7 @@ void init_update_queries(void)
|
||||
last called (or executed) statement is preserved.
|
||||
See mysql_execute_command() for how CF_ROW_COUNT is used.
|
||||
*/
|
||||
sql_command_flags[SQLCOM_CALL]= CF_HAS_ROW_COUNT | CF_REEXECUTION_FRAGILE;
|
||||
sql_command_flags[SQLCOM_EXECUTE]= CF_HAS_ROW_COUNT;
|
||||
sql_command_flags[SQLCOM_CALL]= CF_REEXECUTION_FRAGILE;
|
||||
|
||||
/*
|
||||
The following admin table operations are allowed
|
||||
@ -461,7 +458,6 @@ static void handle_bootstrap_impl(THD *thd)
|
||||
{
|
||||
MYSQL_FILE *file= bootstrap_file;
|
||||
char *buff;
|
||||
const char* found_semicolon= NULL;
|
||||
|
||||
DBUG_ENTER("handle_bootstrap");
|
||||
|
||||
@ -534,7 +530,8 @@ static void handle_bootstrap_impl(THD *thd)
|
||||
mode we have only one thread.
|
||||
*/
|
||||
thd->set_time();
|
||||
mysql_parse(thd, thd->query(), length, & found_semicolon);
|
||||
Parser_state parser_state(thd, thd->query(), length);
|
||||
mysql_parse(thd, thd->query(), length, &parser_state);
|
||||
close_thread_tables(thd); // Free tables
|
||||
|
||||
bootstrap_error= thd->is_error();
|
||||
@ -1077,19 +1074,21 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
||||
(char *) thd->security_ctx->host_or_ip);
|
||||
char *packet_end= thd->query() + thd->query_length();
|
||||
/* 'b' stands for 'buffer' parameter', special for 'my_snprintf' */
|
||||
const char* end_of_stmt= NULL;
|
||||
|
||||
general_log_write(thd, command, thd->query(), thd->query_length());
|
||||
DBUG_PRINT("query",("%-.4096s",thd->query()));
|
||||
#if defined(ENABLED_PROFILING)
|
||||
thd->profiling.set_query_source(thd->query(), thd->query_length());
|
||||
#endif
|
||||
Parser_state parser_state(thd, thd->query(), thd->query_length());
|
||||
|
||||
mysql_parse(thd, thd->query(), thd->query_length(), &end_of_stmt);
|
||||
mysql_parse(thd, thd->query(), thd->query_length(), &parser_state);
|
||||
|
||||
while (!thd->killed && (end_of_stmt != NULL) && ! thd->is_error())
|
||||
while (!thd->killed && (parser_state.m_lip.found_semicolon != NULL) &&
|
||||
! thd->is_error())
|
||||
{
|
||||
char *beginning_of_next_stmt= (char*) end_of_stmt;
|
||||
char *beginning_of_next_stmt= (char*)
|
||||
parser_state.m_lip.found_semicolon;
|
||||
|
||||
thd->protocol->end_statement();
|
||||
query_cache_end_of_result(thd);
|
||||
@ -1130,8 +1129,9 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
||||
*/
|
||||
statistic_increment(thd->status_var.questions, &LOCK_status);
|
||||
thd->set_time(); /* Reset the query start time. */
|
||||
parser_state.reset(beginning_of_next_stmt, length);
|
||||
/* TODO: set thd->lex->sql_command to SQLCOM_END here */
|
||||
mysql_parse(thd, beginning_of_next_stmt, length, &end_of_stmt);
|
||||
mysql_parse(thd, beginning_of_next_stmt, length, &parser_state);
|
||||
}
|
||||
|
||||
DBUG_PRINT("info",("query ready"));
|
||||
@ -3199,7 +3199,7 @@ end_with_restore_list:
|
||||
res= mysql_insert(thd, all_tables, lex->field_list, lex->many_values,
|
||||
lex->update_list, lex->value_list,
|
||||
lex->duplicates, lex->ignore);
|
||||
MYSQL_INSERT_DONE(res, (ulong) thd->row_count_func);
|
||||
MYSQL_INSERT_DONE(res, (ulong) thd->get_row_count_func());
|
||||
/*
|
||||
If we have inserted into a VIEW, and the base table has
|
||||
AUTO_INCREMENT column, but this column is not accessible through
|
||||
@ -3265,7 +3265,7 @@ end_with_restore_list:
|
||||
delete sel_result;
|
||||
}
|
||||
/* revert changes for SP */
|
||||
MYSQL_INSERT_SELECT_DONE(res, (ulong) thd->row_count_func);
|
||||
MYSQL_INSERT_SELECT_DONE(res, (ulong) thd->get_row_count_func());
|
||||
select_lex->table_list.first= (uchar*) first_table;
|
||||
}
|
||||
/*
|
||||
@ -3311,7 +3311,7 @@ end_with_restore_list:
|
||||
&select_lex->order_list,
|
||||
unit->select_limit_cnt, select_lex->options,
|
||||
FALSE);
|
||||
MYSQL_DELETE_DONE(res, (ulong) thd->row_count_func);
|
||||
MYSQL_DELETE_DONE(res, (ulong) thd->get_row_count_func());
|
||||
break;
|
||||
}
|
||||
case SQLCOM_DELETE_MULTI:
|
||||
@ -4314,8 +4314,9 @@ create_sp_error:
|
||||
thd->server_status&= ~bits_to_be_cleared;
|
||||
|
||||
if (!res)
|
||||
my_ok(thd, (ulong) (thd->row_count_func < 0 ? 0 :
|
||||
thd->row_count_func));
|
||||
{
|
||||
my_ok(thd, (thd->get_row_count_func() < 0) ? 0 : thd->get_row_count_func());
|
||||
}
|
||||
else
|
||||
{
|
||||
DBUG_ASSERT(thd->is_error() || thd->killed);
|
||||
@ -4702,15 +4703,6 @@ create_sp_error:
|
||||
if (thd->one_shot_set && lex->sql_command != SQLCOM_SET_OPTION)
|
||||
reset_one_shot_variables(thd);
|
||||
|
||||
/*
|
||||
The return value for ROW_COUNT() is "implementation dependent" if the
|
||||
statement is not DELETE, INSERT or UPDATE, but -1 is what JDBC and ODBC
|
||||
wants. We also keep the last value in case of SQLCOM_CALL or
|
||||
SQLCOM_EXECUTE.
|
||||
*/
|
||||
if (!(sql_command_flags[lex->sql_command] & CF_HAS_ROW_COUNT))
|
||||
thd->row_count_func= -1;
|
||||
|
||||
goto finish;
|
||||
|
||||
error:
|
||||
@ -5747,7 +5739,7 @@ void mysql_init_multi_delete(LEX *lex)
|
||||
*/
|
||||
|
||||
void mysql_parse(THD *thd, const char *inBuf, uint length,
|
||||
const char ** found_semicolon)
|
||||
Parser_state *parser_state)
|
||||
{
|
||||
int error;
|
||||
DBUG_ENTER("mysql_parse");
|
||||
@ -5777,10 +5769,7 @@ void mysql_parse(THD *thd, const char *inBuf, uint length,
|
||||
{
|
||||
LEX *lex= thd->lex;
|
||||
|
||||
Parser_state parser_state(thd, inBuf, length);
|
||||
|
||||
bool err= parse_sql(thd, & parser_state, NULL);
|
||||
*found_semicolon= parser_state.m_lip.found_semicolon;
|
||||
bool err= parse_sql(thd, parser_state, NULL);
|
||||
|
||||
if (!err)
|
||||
{
|
||||
@ -5795,6 +5784,7 @@ void mysql_parse(THD *thd, const char *inBuf, uint length,
|
||||
{
|
||||
if (! thd->is_error())
|
||||
{
|
||||
const char *found_semicolon= parser_state->m_lip.found_semicolon;
|
||||
/*
|
||||
Binlog logs a string starting from thd->query and having length
|
||||
thd->query_length; so we set thd->query_length correctly (to not
|
||||
@ -5805,12 +5795,12 @@ void mysql_parse(THD *thd, const char *inBuf, uint length,
|
||||
PROCESSLIST.
|
||||
Note that we don't need LOCK_thread_count to modify query_length.
|
||||
*/
|
||||
if (*found_semicolon && (ulong) (*found_semicolon - thd->query()))
|
||||
if (found_semicolon && (ulong) (found_semicolon - thd->query()))
|
||||
thd->set_query_inner(thd->query(),
|
||||
(uint32) (*found_semicolon -
|
||||
(uint32) (found_semicolon -
|
||||
thd->query() - 1));
|
||||
/* Actually execute the query */
|
||||
if (*found_semicolon)
|
||||
if (found_semicolon)
|
||||
{
|
||||
lex->safe_to_cache_query= 0;
|
||||
thd->server_status|= SERVER_MORE_RESULTS_EXISTS;
|
||||
@ -5847,11 +5837,6 @@ void mysql_parse(THD *thd, const char *inBuf, uint length,
|
||||
thd->cleanup_after_query();
|
||||
DBUG_ASSERT(thd->change_list.is_empty());
|
||||
}
|
||||
else
|
||||
{
|
||||
/* There are no multi queries in the cache. */
|
||||
*found_semicolon= NULL;
|
||||
}
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ bool is_log_table_write_query(enum enum_sql_command command);
|
||||
bool alloc_query(THD *thd, const char *packet, uint packet_length);
|
||||
void mysql_init_select(LEX *lex);
|
||||
void mysql_parse(THD *thd, const char *inBuf, uint length,
|
||||
const char ** semicolon);
|
||||
Parser_state *parser_state);
|
||||
void mysql_reset_thd_for_next_command(THD *thd);
|
||||
bool mysql_new_select(LEX *lex, bool move_down);
|
||||
void create_select_for_variable(const char *var_name);
|
||||
|
@ -75,10 +75,6 @@ const LEX_STRING Diag_statement_item_names[]=
|
||||
{ C_STRING_WITH_LEN("TRANSACTION_ACTIVE") }
|
||||
};
|
||||
|
||||
Set_signal_information::Set_signal_information()
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
Set_signal_information::Set_signal_information(
|
||||
const Set_signal_information& set)
|
||||
@ -458,8 +454,20 @@ bool Signal_statement::execute(THD *thd)
|
||||
|
||||
DBUG_ENTER("Signal_statement::execute");
|
||||
|
||||
/*
|
||||
WL#2110 SIGNAL specification says:
|
||||
|
||||
When SIGNAL is executed, it has five effects, in the following order:
|
||||
|
||||
(1) First, the diagnostics area is completely cleared. So if the
|
||||
SIGNAL is in a DECLARE HANDLER then any pending errors or warnings
|
||||
are gone. So is 'row count'.
|
||||
|
||||
This has roots in the SQL standard specification for SIGNAL.
|
||||
*/
|
||||
|
||||
thd->stmt_da->reset_diagnostics_area();
|
||||
thd->row_count_func= 0;
|
||||
thd->set_row_count_func(0);
|
||||
thd->warning_info->clear_warning_info(thd->query_id);
|
||||
|
||||
result= raise_condition(thd, &cond);
|
||||
|
@ -843,9 +843,8 @@ int mysql_update(THD *thd,
|
||||
my_snprintf(buff, sizeof(buff), ER(ER_UPDATE_INFO), (ulong) found,
|
||||
(ulong) updated,
|
||||
(ulong) thd->warning_info->statement_warn_count());
|
||||
thd->row_count_func=
|
||||
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated;
|
||||
my_ok(thd, (ulong) thd->row_count_func, id, buff);
|
||||
my_ok(thd, (thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
|
||||
id, buff);
|
||||
DBUG_PRINT("info",("%ld records updated", (long) updated));
|
||||
}
|
||||
thd->count_cuted_fields= CHECK_FIELD_IGNORE; /* calc cuted fields */
|
||||
@ -2160,8 +2159,7 @@ bool multi_update::send_eof()
|
||||
thd->first_successful_insert_id_in_prev_stmt : 0;
|
||||
my_snprintf(buff, sizeof(buff), ER(ER_UPDATE_INFO),
|
||||
(ulong) found, (ulong) updated, (ulong) thd->cuted_fields);
|
||||
thd->row_count_func=
|
||||
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated;
|
||||
::my_ok(thd, (ulong) thd->row_count_func, id, buff);
|
||||
::my_ok(thd, (thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
|
||||
id, buff);
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
@ -20,6 +20,3 @@ AUTOMAKE_OPTIONS = foreign
|
||||
# These are built from source in the Docs directory
|
||||
SUBDIRS = @mysql_se_dirs@
|
||||
DIST_SUBDIRS = @mysql_se_distdirs@
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -102,6 +102,3 @@ probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
|
||||
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
|
||||
|
||||
endif
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -83,6 +83,3 @@ probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
|
||||
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
|
||||
|
||||
endif
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -62,6 +62,3 @@ probes_mysql.d:
|
||||
probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
|
||||
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
|
||||
endif
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -83,6 +83,3 @@ probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
|
||||
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
|
||||
|
||||
endif
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -84,6 +84,3 @@ probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
|
||||
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
|
||||
|
||||
endif
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -71,6 +71,3 @@ probes_mysql.d:
|
||||
probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
|
||||
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
|
||||
endif
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -50,5 +50,3 @@ libibmdb2i_a_SOURCES= $(ha_ibmdb2i_la_SOURCES)
|
||||
|
||||
|
||||
EXTRA_DIST = CMakeLists.txt plug.in
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
@ -337,6 +337,3 @@ ha_innodb_la_SOURCES= $(libinnobase_a_SOURCES)
|
||||
EXTRA_DIST= CMakeLists.txt plug.in \
|
||||
pars/make_bison.sh pars/make_flex.sh \
|
||||
pars/pars0grm.y pars/pars0lex.l
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user