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:
Alexander Nozdrin 2010-05-20 16:35:28 +04:00
commit eff442964a
149 changed files with 1362 additions and 1186 deletions

View File

@ -78,6 +78,3 @@ EXTRA_DIST = FINISH.sh \
compile-solaris-sparc-debug \ compile-solaris-sparc-debug \
compile-solaris-sparc-forte \ compile-solaris-sparc-forte \
compile-solaris-sparc-purify compile-solaris-sparc-purify
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -189,8 +189,11 @@ ELSE()
ENDIF() ENDIF()
SET(DEFAULT_BASEDIR "${DEFAULT_MYSQL_HOME}") SET(DEFAULT_BASEDIR "${DEFAULT_MYSQL_HOME}")
SET(MYSQL_DATADIR "${DEFAULT_MYSQL_HOME}/${INSTALL_MYSQLDATADIR}" CACHE PATH IF(INSTALL_MYSQLDATADIR MATCHES "^/.*")
"default MySQL data directory") 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(DEFAULT_CHARSET_HOME "${DEFAULT_MYSQL_HOME}")
SET(PLUGINDIR "${DEFAULT_MYSQL_HOME}/${INSTALL_PLUGINDIR}") SET(PLUGINDIR "${DEFAULT_MYSQL_HOME}/${INSTALL_PLUGINDIR}")
IF(SYSCONFDIR) IF(SYSCONFDIR)
@ -274,20 +277,28 @@ ELSE()
SET(CPACK_GENERATOR "TGZ") SET(CPACK_GENERATOR "TGZ")
ENDIF() ENDIF()
INCLUDE(CPack) INCLUDE(CPack)
INSTALL(FILES COPYING EXCEPTIONS-CLIENT LICENSE.mysql DESTINATION ${INSTALL_DOCREADMEDIR} OPTIONAL)
INSTALL(FILES README DESTINATION ${INSTALL_DOCREADMEDIR})
IF(UNIX) IF(UNIX)
INSTALL(FILES Docs/INSTALL-BINARY DESTINATION INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR} OPTIONAL)
${INSTALL_DOCREADMEDIR}) ENDIF()
#
# 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 "glibc*" EXCLUDE
PATTERN "linuxthreads.txt" EXCLUDE
PATTERN "myisam.txt" EXCLUDE
PATTERN "mysql.info" EXCLUDE
PATTERN "sp-imp-spec.txt" EXCLUDE
)
ENDIF() 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
)

View File

@ -37,6 +37,3 @@ uninstall-local:
@RM@ -f $(DESTDIR)$(infodir)/mysql.info ; \ @RM@ -f $(DESTDIR)$(infodir)/mysql.info ; \
@RM@ -f $(DESTDIR)$(pkgdatadir)/ChangeLog ; \ @RM@ -f $(DESTDIR)$(pkgdatadir)/ChangeLog ; \
fi fi
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -328,6 +328,3 @@ do_abi_check:
@DIFF@ -w $$file.pp $(top_builddir)/abi_check.out; \ @DIFF@ -w $$file.pp $(top_builddir)/abi_check.out; \
@RM@ $(top_builddir)/abi_check.out; \ @RM@ $(top_builddir)/abi_check.out; \
done done
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -124,6 +124,3 @@ link_sources:
rm -f $(srcdir)/my_user.c; \ rm -f $(srcdir)/my_user.c; \
@LN_CP_F@ $(top_srcdir)/sql-common/my_user.c my_user.c; @LN_CP_F@ $(top_srcdir)/sql-common/my_user.c my_user.c;
echo timestamp > link_sources; echo timestamp > link_sources;
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -80,9 +80,6 @@ IF(FEATURE_SET)
ENDFOREACH() ENDFOREACH()
ENDIF() ENDIF()
SET(WITHOUT_AUDIT_NULL ON CACHE BOOL "")
SET(WITHOUT_DAEMON_EXAMPLE ON CACHE BOOL "")
OPTION(ENABLE_LOCAL_INFILE "" ON) OPTION(ENABLE_LOCAL_INFILE "" ON)
SET(WITH_SSL bundled CACHE STRING "") SET(WITH_SSL bundled CACHE STRING "")
SET(WITH_ZLIB bundled CACHE STRING "") SET(WITH_ZLIB bundled CACHE STRING "")
@ -122,8 +119,12 @@ IF(UNIX)
IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX") IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
IF(CMAKE_C_COMPILER_ID MATCHES "HP") IF(CMAKE_C_COMPILER_ID MATCHES "HP")
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64") IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g +O2 +DD64 +DSitanium2 -mt -AC99") SET(CMAKE_C_FLAGS
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g +O2 +DD64 +DSitanium2 -mt -Aa") "${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()
ENDIF() ENDIF()
SET(WITH_SSL) SET(WITH_SSL)
@ -132,15 +133,16 @@ IF(UNIX)
# Linux flags # Linux flags
IF(CMAKE_SYSTEM_NAME MATCHES "Linux") IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
IF(CMAKE_C_COMPILER_ID MATCHES "Intel") IF(CMAKE_C_COMPILER_ID MATCHES "Intel")
SET(CMAKE_C_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 -g -O3 -unroll2 -ip -mp -restrict") 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()
ENDIF() ENDIF()
# OSX flags # OSX flags
IF(APPLE) IF(APPLE)
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-Os ${CMAKE_C_FLAGS_RELWITHDEBINFO}") SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -Os -fno-common")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Os ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -Os -felide-constructors -fno-common")
ENDIF() ENDIF()
# Solaris flags # Solaris flags

View File

@ -14,99 +14,184 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# The purpose of this file is to set the default installation layout. # 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:
# - INSTALL_SBINDIR (directory with mysqld) #
# - INSTALL_LIBDIR (directory with client end embedded libraries) # STANDALONE
# - INSTALL_PLUGINDIR (directory for plugins) # Build with prefix=/usr/local/mysql, create tarball with install prefix="."
# - INSTALL_INCLUDEDIR (directory for MySQL headers) # and relative links. Windows zip uses the same tarball layout but without
# - INSTALL_DOCDIR (documentation) # the build prefix.
# - INSTALL_MANDIR (man pages) #
# - INSTALL_SCRIPTDIR (several scripts, rarely used) # RPM
# - INSTALL_MYSQLSHAREDIR (MySQL character sets and localized error messages) # Build as per default RPM layout, with prefix=/usr
# - INSTALL_SHAREDIR (location of aclocal/mysql.m4) #
# - INSTALL_SQLBENCHDIR (sql-bench) # DEB
# - INSTALL_MYSQLTESTDIR (mysql-test) # Build as per STANDALONE, prefix=/opt/mysql-$major.$minor
# - INSTALL_DOCREADMEDIR (readme and similar) #
# - INSTALL_SUPPORTFILESDIR (used only in standalone installer) # 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_DOCREADMEDIR (readme and similar)
# - 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(NOT INSTALL_LAYOUT)
IF(WIN32) SET(DEFAULT_INSTALL_LAYOUT "STANDALONE")
SET(DEFAULT_INSTALL_LAYOUT "STANDALONE")
ELSE()
SET(DEFAULT_INSTALL_LAYOUT "UNIX")
ENDIF()
ENDIF() ENDIF()
SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}" SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}"
CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) or UNIX") 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(UNIX)
IF(INSTALL_LAYOUT MATCHES "UNIX") IF(INSTALL_LAYOUT MATCHES "RPM")
SET(default_prefix "/usr") 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() ELSE()
SET(default_prefix "/usr/local/mysql") SET(default_prefix "/usr/local/mysql")
ENDIF() ENDIF()
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
SET(CMAKE_INSTALL_PREFIX ${default_prefix} SET(CMAKE_INSTALL_PREFIX ${default_prefix}
CACHE PATH "install prefix" FORCE) CACHE PATH "install prefix" FORCE)
ENDIF() ENDIF()
SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc"
CACHE PATH "config directory (for my.cnf)") CACHE PATH "config directory (for my.cnf)")
MARK_AS_ADVANCED(SYSCONFDIR) MARK_AS_ADVANCED(SYSCONFDIR)
ENDIF() ENDIF()
#
# STANDALONE layout
# STANDALONE layout #
SET(INSTALL_BINDIR_STANDALONE "bin") SET(INSTALL_BINDIR_STANDALONE "bin")
SET(INSTALL_SBINDIR_STANDALONE "bin") SET(INSTALL_SBINDIR_STANDALONE "bin")
SET(INSTALL_LIBDIR_STANDALONE "lib") SET(INSTALL_SCRIPTDIR_STANDALONE "scripts")
SET(INSTALL_INCLUDEDIR_STANDALONE "include") #
SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") SET(INSTALL_LIBDIR_STANDALONE "lib")
SET(INSTALL_DOCDIR_STANDALONE "docs") SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin")
SET(INSTALL_MANDIR_STANDALONE "man") #
SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share") SET(INSTALL_INCLUDEDIR_STANDALONE "include")
SET(INSTALL_SHAREDIR_STANDALONE "share") #
SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") SET(INSTALL_DOCDIR_STANDALONE "docs")
SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test") SET(INSTALL_DOCREADMEDIR_STANDALONE ".")
SET(INSTALL_SQLBENCHROOTDIR_STANDALONE ".") SET(INSTALL_MANDIR_STANDALONE "man")
SET(INSTALL_DOCREADMEDIR_STANDALONE ".") SET(INSTALL_INFODIR_STANDALONE "docs")
SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files") #
SET(INSTALL_MYSQLDATADIR_STANDALONE "data") SET(INSTALL_SHAREDIR_STANDALONE "share")
SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share")
# UNIX layout SET(INSTALL_MYSQLTESTDIR_STANDALONE "mysql-test")
SET(INSTALL_BINDIR_UNIX "bin") SET(INSTALL_SQLBENCHDIR_STANDALONE ".")
SET(INSTALL_SBINDIR_UNIX "sbin") SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files")
SET(INSTALL_LIBDIR_UNIX "lib/mysql") #
SET(INSTALL_PLUGINDIR_UNIX "lib/mysql/plugin") SET(INSTALL_MYSQLDATADIR_STANDALONE "data")
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") # RPM layout
SET(INSTALL_MYSQLSHAREDIR_UNIX "share/mysql") #
SET(INSTALL_SHAREDIR_UNIX "share") SET(INSTALL_BINDIR_RPM "bin")
SET(INSTALL_SCRIPTDIR_UNIX "bin") SET(INSTALL_SBINDIR_RPM "sbin")
SET(INSTALL_MYSQLTESTDIR_UNIX "mysql-test") SET(INSTALL_SCRIPTDIR_RPM "bin")
SET(INSTALL_SQLBENCHROOTDIR_UNIX "") #
SET(INSTALL_DOCREADMEDIR_UNIX "share/mysql/doc/MySQL-server-${MYSQL_NO_DASH_VERSION}") IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
SET(INSTALL_SUPPORTFILESDIR_UNIX "") SET(INSTALL_LIBDIR_RPM "lib64")
SET(INSTALL_MYSQLDATADIR_UNIX "var") 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")
#
# 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")
#
# 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 # Clear cached variables if install layout was changed
@ -117,12 +202,12 @@ IF(OLD_INSTALL_LAYOUT)
ENDIF() ENDIF()
SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "") SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "")
# Set INSTALL_FOODIR variables for chosen layout # Set INSTALL_FOODIR variables for chosen layout (for example, INSTALL_BINDIR
# (for example, INSTALL_BINDIR will be defined as # will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE
# ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE layout is chosen) # layout is chosen)
FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN 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}} SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}}
CACHE STRING "${var} installation directory" ${FORCE}) CACHE STRING "${var} installation directory" ${FORCE})
MARK_AS_ADVANCED(INSTALL_${var}DIR) MARK_AS_ADVANCED(INSTALL_${var}DIR)
ENDFOREACH() ENDFOREACH()

View File

@ -173,7 +173,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target)
"" ""
${ARGN} ${ARGN}
) )
GET_TARGET_PROPERTY(target_type ${target} TYPE) GET_TARGET_PROPERTY(target_type ${target} TYPE)
IF(ARG_RENAME) IF(ARG_RENAME)
SET(RENAME_PARAM RENAME ${ARG_RENAME}${CMAKE_${target_type}_SUFFIX}) SET(RENAME_PARAM RENAME ${ARG_RENAME}${CMAKE_${target_type}_SUFFIX})
ELSE() ELSE()
@ -189,9 +189,40 @@ FUNCTION(INSTALL_DEBUG_TARGET target)
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" ) STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" )
ENDIF() 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} INSTALL(FILES ${debug_target_location}
DESTINATION ${ARG_DESTINATION} DESTINATION ${ARG_DESTINATION}
${RENAME_PARAM} ${RENAME_PARAM}
${PERMISSIONS_${target_type}}
CONFIGURATIONS Release RelWithDebInfo CONFIGURATIONS Release RelWithDebInfo
OPTIONAL) OPTIONAL)

View File

@ -55,6 +55,7 @@ MACRO(GET_MYSQL_VERSION)
ENDIF() ENDIF()
SET(VERSION ${VERSION_STRING}) SET(VERSION ${VERSION_STRING})
STRING(REPLACE "-" "_" MYSQL_U_SCORE_VERSION "${VERSION_STRING}")
# Remove trailing (non-numeric) part of the version string # Remove trailing (non-numeric) part of the version string
STRING(REGEX REPLACE "[^\\.0-9].*" "" VERSION_STRING ${VERSION_STRING}) STRING(REGEX REPLACE "[^\\.0-9].*" "" VERSION_STRING ${VERSION_STRING})
@ -106,6 +107,7 @@ ENDIF()
IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME) IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME)
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mysql-${VERSION}") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mysql-${VERSION}")
ENDIF() ENDIF()
SET(CPACK_PACKAGE_CONTACT "MySQL Build Team <build@mysql.com>")
SET(CPACK_PACKAGE_VENDOR "Sun Microsystems, Inc") SET(CPACK_PACKAGE_VENDOR "Sun Microsystems, Inc")
SET(CPACK_SOURCE_GENERATOR "TGZ") SET(CPACK_SOURCE_GENERATOR "TGZ")
INCLUDE(cpack_source_ignore_files) INCLUDE(cpack_source_ignore_files)
@ -114,6 +116,16 @@ INCLUDE(cpack_source_ignore_files)
SET(PRODUCTNAME "MySQL Server") SET(PRODUCTNAME "MySQL Server")
SET(COMPANYNAME ${CPACK_PACKAGE_VENDOR}) 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 # Add version information to the exe and dll files
# Refer to http://msdn.microsoft.com/en-us/library/aa381058(VS.85).aspx # Refer to http://msdn.microsoft.com/en-us/library/aa381058(VS.85).aspx
# for more info. # for more info.

View File

@ -174,6 +174,7 @@ MACRO(MYSQL_ADD_PLUGIN)
OUTPUT_NAME "${ARG_MODULE_OUTPUT_NAME}") OUTPUT_NAME "${ARG_MODULE_OUTPUT_NAME}")
# Install dynamic library # Install dynamic library
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR}) MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR})
INSTALL_DEBUG_TARGET(${target} DESTINATION ${INSTALL_PLUGINDIR}/debug)
ENDIF() ENDIF()
ENDMACRO() ENDMACRO()

View File

@ -19,6 +19,3 @@
SUBDIRS= @readline_basedir@ SUBDIRS= @readline_basedir@
DIST_SUBDIRS= libedit readline DIST_SUBDIRS= libedit readline
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -32,6 +32,3 @@ noinst_HEADERS = readline.h chardefs.h keymaps.h \
EXTRA_DIST= emacs_keymap.c vi_keymap.c CMakeLists.txt EXTRA_DIST= emacs_keymap.c vi_keymap.c CMakeLists.txt
DEFS = -DMYSQL_CLIENT_NO_THREADS -DHAVE_CONFIG_H -DNO_KILL_INTR DEFS = -DMYSQL_CLIENT_NO_THREADS -DHAVE_CONFIG_H -DNO_KILL_INTR
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -38,6 +38,7 @@
#cmakedefine HAVE_FPU_CONTROL_H 1 #cmakedefine HAVE_FPU_CONTROL_H 1
#cmakedefine HAVE_GRP_H 1 #cmakedefine HAVE_GRP_H 1
#cmakedefine HAVE_EXPLICIT_TEMPLATE_INSTANTIATION 1 #cmakedefine HAVE_EXPLICIT_TEMPLATE_INSTANTIATION 1
#cmakedefine HAVE_IA64INTRIN_H 1
#cmakedefine HAVE_IEEEFP_H 1 #cmakedefine HAVE_IEEEFP_H 1
#cmakedefine HAVE_INTTYPES_H 1 #cmakedefine HAVE_INTTYPES_H 1
#cmakedefine HAVE_LIMITS_H 1 #cmakedefine HAVE_LIMITS_H 1

View File

@ -55,6 +55,3 @@ EXTRA_DIST = CMakeLists.txt
perror.o: perror.c perror.o: perror.c
$(COMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $< $(COMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -1,5 +1,2 @@
SUBDIRS = taocrypt src testsuite SUBDIRS = taocrypt src testsuite
EXTRA_DIST = CMakeLists.txt EXTRA_DIST = CMakeLists.txt
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -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 template_instnt.cpp timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp
EXTRA_DIST = $(wildcard ../include/*.hpp) $(wildcard ../include/openssl/*.h) EXTRA_DIST = $(wildcard ../include/*.hpp) $(wildcard ../include/openssl/*.h)
AM_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX AM_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -1,5 +1,2 @@
SUBDIRS = src test benchmark SUBDIRS = src test benchmark
EXTRA_DIST = CMakeLists.txt $(wildcard mySTL/*.hpp) EXTRA_DIST = CMakeLists.txt $(wildcard mySTL/*.hpp)
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -4,6 +4,3 @@ benchmark_SOURCES = benchmark.cpp
benchmark_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la benchmark_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
benchmark_CXXFLAGS = -DYASSL_PURE_C benchmark_CXXFLAGS = -DYASSL_PURE_C
EXTRA_DIST = benchmark.dsp rsa1024.der dh1024.der dsa1024.der make.bat EXTRA_DIST = benchmark.dsp rsa1024.der dh1024.der dsa1024.der make.bat
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -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 libtaocrypt_la_CXXFLAGS = @yassl_taocrypt_extra_cxxflags@ -DYASSL_PURE_C
EXTRA_DIST = $(wildcard ../include/*.hpp) EXTRA_DIST = $(wildcard ../include/*.hpp)
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -4,6 +4,3 @@ test_SOURCES = test.cpp
test_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la test_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
test_CXXFLAGS = -DYASSL_PURE_C test_CXXFLAGS = -DYASSL_PURE_C
EXTRA_DIST = make.bat EXTRA_DIST = make.bat
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -8,7 +8,3 @@ testsuite_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX -DNO_MAIN_DRIVER
testsuite_LDADD = $(top_builddir)/extra/yassl/src/libyassl.la \ testsuite_LDADD = $(top_builddir)/extra/yassl/src/libyassl.la \
$(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
EXTRA_DIST = testsuite.dsp test.hpp input quit make.bat EXTRA_DIST = testsuite.dsp test.hpp input quit make.bat
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -96,6 +96,3 @@ endif
probes_mysql_nodtrace.h: $(DTRACEPROVIDER) probes_mysql_nodtrace.h: $(DTRACEPROVIDER)
@PERL@ $(top_srcdir)/scripts/dheadgen.pl -f $(DTRACEPROVIDER) > $@ @PERL@ $(top_srcdir)/scripts/dheadgen.pl -f $(DTRACEPROVIDER) > $@
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -171,15 +171,24 @@ IF(UNIX)
SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION}) SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION})
ENDIF() ENDIF()
ENDMACRO() ENDMACRO()
INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR})
ENDIF() ENDIF()
IF(NOT DISABLE_SHARED) IF(NOT DISABLE_SHARED)
MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}) MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS})
IF(UNIX) 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 # Name of shared library is mysqlclient on Unix
SET_TARGET_PROPERTIES(libmysql PROPERTIES SET_TARGET_PROPERTIES(libmysql PROPERTIES
OUTPUT_NAME mysqlclient OUTPUT_NAME mysqlclient
VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0" VERSION "${OS_SHARED_LIB_VERSION}"
SOVERSION "${SHARED_LIB_MAJOR_VERSION}") SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
IF(LINK_FLAG_NO_UNDEFINED) IF(LINK_FLAG_NO_UNDEFINED)
GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS) GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
@ -194,14 +203,21 @@ IF(NOT DISABLE_SHARED)
SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1)
SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1)
# Install 3 links to libmysqlclient.so (client_r) # Install links to libmysqlclient.so (client_r)
FOREACH(ver "" "${SHARED_LIB_MAJOR_VERSION}" GET_VERSIONED_LIBNAME(
"${SHARED_LIB_MAJOR_VERSION}.0.0") "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r"
GET_VERSIONED_LIBNAME( "${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r" ""
"${CMAKE_SHARED_LIBRARY_SUFFIX}" linkname)
"${ver}" INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR})
linkname) 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}"
"${ver}"
linkname)
INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR}) INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR})
ENDFOREACH() ENDFOREACH()
ENDIF() ENDIF()

View File

@ -113,6 +113,3 @@ do-lib-dist:
echo ' $$(AR) r $$@ $$?' >>$$dir/Makefile; \ echo ' $$(AR) r $$@ $$?' >>$$dir/Makefile; \
gtar cvzf $$dir.tar.gz $$dir; \ gtar cvzf $$dir.tar.gz $$dir; \
cd $$dir; gmake cd $$dir; gmake
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -116,6 +116,3 @@ conf_to_src_LDADD=
#force static linking of conf_to_src - essential when linking against #force static linking of conf_to_src - essential when linking against
#custom installation of libc #custom installation of libc
conf_to_src_LDFLAGS=@NOINST_LDFLAGS@ conf_to_src_LDFLAGS=@NOINST_LDFLAGS@
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -44,6 +44,3 @@ link_sources:
done; \ done; \
done done
echo timestamp > link_sources echo timestamp > link_sources
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -133,7 +133,7 @@ ENDIF()
IF(UNIX) IF(UNIX)
INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR} RENAME INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR} RENAME
${CMAKE_STATIC_LIBRARY_PREFIX}/mysqld-debug) ${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug)
ENDIF() ENDIF()
IF(MSVC AND NOT DISABLE_SHARED) IF(MSVC AND NOT DISABLE_SHARED)

View File

@ -234,6 +234,3 @@ link_sources:
clean-local: clean-local:
rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlstoragesources) $(storagesources) | sed "s;\.lo;.c;g"`; \ rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlstoragesources) $(storagesources) | sed "s;\.lo;.c;g"`; \
rm -f client_settings.h rm -f client_settings.h
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -23,7 +23,9 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY -UMYSQL_CLIENT) 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) ../../client/mysql.cc ../../client/readline.cc)
TARGET_LINK_LIBRARIES(mysql_embedded mysqlserver) TARGET_LINK_LIBRARIES(mysql_embedded mysqlserver)
IF(UNIX) IF(UNIX)

View File

@ -50,6 +50,3 @@ mysql_LDADD = @readline_link@ @TERMCAP_LIB@ $(LDADD)
mysql_client_test_embedded_LINK = $(CXXLINK) mysql_client_test_embedded_LINK = $(CXXLINK)
nodist_mysql_client_test_embedded_SOURCES = mysql_client_test.c nodist_mysql_client_test_embedded_SOURCES = mysql_client_test.c
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -15,8 +15,12 @@
# Copy man pages # Copy man pages
FILE(GLOB MAN1_FILES *.1) FILE(GLOB MAN1_FILES *.1)
FILE(GLOB MAN1_EXCLUDE make_win_bin_dist.1)
FILE(GLOB MAN8_FILES *.8) FILE(GLOB MAN8_FILES *.8)
IF(MAN1_FILES) IF(MAN1_FILES)
IF(MAN1_EXCLUDE)
LIST(REMOVE_ITEM MAN1_FILES ${MAN1_EXCLUDE})
ENDIF()
INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1) INSTALL(FILES ${MAN1_FILES} DESTINATION ${INSTALL_MANDIR}/man1)
ENDIF() ENDIF()
IF(MAN8_FILES) IF(MAN8_FILES)

View File

@ -24,6 +24,3 @@ EXTRA_DIST = $(man1_MANS) $(man8_MANS) CMakeLists.txt
# "make_win_*" are not needed in Unix binary packages, # "make_win_*" are not needed in Unix binary packages,
install-data-hook: install-data-hook:
rm -f $(DESTDIR)$(mandir)/man1/make_win_* rm -f $(DESTDIR)$(mandir)/man1/make_win_*
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -18,6 +18,7 @@ INSTALL(
DESTINATION ${INSTALL_MYSQLTESTDIR} DESTINATION ${INSTALL_MYSQLTESTDIR}
PATTERN "var/" EXCLUDE PATTERN "var/" EXCLUDE
PATTERN "lib/My/SafeProcess" EXCLUDE PATTERN "lib/My/SafeProcess" EXCLUDE
PATTERN "lib/t*" EXCLUDE
PATTERN "CPack" EXCLUDE PATTERN "CPack" EXCLUDE
PATTERN "CMake*" EXCLUDE PATTERN "CMake*" EXCLUDE
PATTERN "mtr.out*" EXCLUDE PATTERN "mtr.out*" EXCLUDE

View File

@ -148,6 +148,3 @@ mtr:
mysql-test-run: mysql-test-run:
$(RM) -f mysql-test-run $(RM) -f mysql-test-run
$(LN_S) mysql-test-run.pl mysql-test-run $(LN_S) mysql-test-run.pl mysql-test-run
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -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.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 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.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 @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 main.gis-rtree @freebsd # Bug#38965 2010-05-04 alik test cases gis-rtree, type_float, type_newdecimal fail in embedded server

View File

@ -457,6 +457,8 @@ select * from t1;
show create table t1; show create table t1;
drop table t1; drop table t1;
# Ensure that row_count() value is reset after drop table.
select 1;
select hex(concat(row_count())); select hex(concat(row_count()));
create table t1 as select concat(row_count()) as c1; create table t1 as select concat(row_count()) as c1;
show create table t1; show create table t1;

View File

@ -23,7 +23,7 @@ perl;
while (<F>) { while (<F>) {
next if 1../The following groups are read/; next if 1../The following groups are read/;
# formatting, skip line consisting entirely of dashes and blanks # 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 /Value \(after reading options\)/; # skip table header
next if /^($re1) /; next if /^($re1) /;
next if /^($re2)-/; next if /^($re2)-/;

View File

@ -23,7 +23,3 @@ my_safe_process_SOURCES = safe_process.cc
EXTRA_DIST = safe_kill_win.cc \ EXTRA_DIST = safe_kill_win.cc \
safe_process_win.cc \ safe_process_win.cc \
CMakeLists.txt CMakeLists.txt
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -772,6 +772,9 @@ t1 CREATE TABLE `t1` (
`c1` varbinary(31) DEFAULT NULL `c1` varbinary(31) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
select 1;
1
1
select hex(concat(row_count())); select hex(concat(row_count()));
hex(concat(row_count())) hex(concat(row_count()))
2D31 2D31

View File

@ -854,6 +854,9 @@ t1 CREATE TABLE `t1` (
`c1` varchar(31) CHARACTER SET cp1251 DEFAULT NULL `c1` varchar(31) CHARACTER SET cp1251 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
select 1;
1
1
select hex(concat(row_count())); select hex(concat(row_count()));
hex(concat(row_count())) hex(concat(row_count()))
2D31 2D31

View File

@ -1182,6 +1182,9 @@ t1 CREATE TABLE `t1` (
`c1` varchar(31) DEFAULT NULL `c1` varchar(31) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
select 1;
1
1
select hex(concat(row_count())); select hex(concat(row_count()));
hex(concat(row_count())) hex(concat(row_count()))
2D31 2D31

View File

@ -2014,6 +2014,9 @@ t1 CREATE TABLE `t1` (
`c1` varchar(31) CHARACTER SET ucs2 DEFAULT NULL `c1` varchar(31) CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
select 1;
1
1
select hex(concat(row_count())); select hex(concat(row_count()));
hex(concat(row_count())) hex(concat(row_count()))
002D0031 002D0031

View File

@ -1,3 +1,122 @@
SET @old_general_log= @@global.general_log; SET @old_general_log= @@global.general_log;
ok 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; SET @@global.general_log= @old_general_log;

View File

@ -2112,6 +2112,26 @@ COUNT(*)
DROP TABLE t1; DROP TABLE t1;
SET SESSION SQL_MODE=DEFAULT; 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 # BUG#51868 - crash with myisam_use_mmap and partitioned myisam tables
# #
SET GLOBAL myisam_use_mmap=1; SET GLOBAL myisam_use_mmap=1;

View File

@ -2590,11 +2590,11 @@ row_count()
call bug4905()| call bug4905()|
select row_count()| select row_count()|
row_count() row_count()
-1 0
call bug4905()| call bug4905()|
select row_count()| select row_count()|
row_count() row_count()
-1 0
select * from t3| select * from t3|
s1 s1
1 1

View File

@ -10,6 +10,13 @@ set debug= '-P';
select @@debug; select @@debug;
@@debug @@debug
T 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 # Bug #52629: memory leak from sys_var_thd_dbug in
# binlog.binlog_write_error # binlog.binlog_write_error

View File

@ -375,7 +375,7 @@ row_count() after delete
2 2
SELECT row_count(); SELECT row_count();
row_count() row_count()
-1 0
SELECT * FROM temp; SELECT * FROM temp;
f1 f2 f3 f4 f5 f6 f1 f2 f3 f4 f5 f6
qwe xyz 1998-03-26 100 uvw 1000 qwe xyz 1998-03-26 100 uvw 1000

View File

@ -376,7 +376,7 @@ row_count() after delete
2 2
SELECT row_count(); SELECT row_count();
row_count() row_count()
-1 0
SELECT * FROM temp; SELECT * FROM temp;
f1 f2 f3 f4 f5 f6 f1 f2 f3 f4 f5 f6
qwe xyz 1998-03-26 100 uvw 1000 qwe xyz 1998-03-26 100 uvw 1000

View File

@ -376,7 +376,7 @@ row_count() after delete
2 2
SELECT row_count(); SELECT row_count();
row_count() row_count()
-1 0
SELECT * FROM temp; SELECT * FROM temp;
f1 f2 f3 f4 f5 f6 f1 f2 f3 f4 f5 f6
qwe xyz 1998-03-26 100 uvw 1000 qwe xyz 1998-03-26 100 uvw 1000

View File

@ -375,7 +375,7 @@ row_count() after delete
2 2
SELECT row_count(); SELECT row_count();
row_count() row_count()
-1 0
SELECT * FROM temp; SELECT * FROM temp;
f1 f2 f3 f4 f5 f6 f1 f2 f3 f4 f5 f6
qwe xyz 1998-03-26 100 uvw 1000 qwe xyz 1998-03-26 100 uvw 1000

View 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.

View File

@ -0,0 +1 @@
--secure-file-priv=$MYSQL_TMP_DIR

View 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.

View File

@ -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_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_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). rpl_failed_optimize : WL#4284: Can't optimize table used by a pending transaction (there is metadata lock on the table).

View File

@ -16,4 +16,11 @@ SET @old_general_log= @@global.general_log;
# End of 4.1 tests # End of 4.1 tests
echo ok; 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; SET @@global.general_log= @old_general_log;

View File

@ -399,4 +399,12 @@ delimiter ;$$
drop procedure p_37228; 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

View File

@ -2119,6 +2119,50 @@ SET SESSION SQL_MODE=DEFAULT;
# #
#DROP TABLE t1; #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 #
--echo # BUG#51868 - crash with myisam_use_mmap and partitioned myisam tables --echo # BUG#51868 - crash with myisam_use_mmap and partitioned myisam tables
--echo # --echo #

View File

@ -11,6 +11,16 @@ select @@debug;
set debug= '-P'; set debug= '-P';
select @@debug; 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 #
--echo # Bug #52629: memory leak from sys_var_thd_dbug in --echo # Bug #52629: memory leak from sys_var_thd_dbug in
--echo # binlog.binlog_write_error --echo # binlog.binlog_write_error

View File

@ -159,6 +159,3 @@ probes_mysql.d:
probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES) probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@ $(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
endif endif
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -115,6 +115,3 @@ test_db.sql: init_db.sql $(top_srcdir)/scripts/mysql_test_data_timezone.sql
@echo "Building $@"; @echo "Building $@";
@cat init_db.sql \ @cat init_db.sql \
$(top_srcdir)/scripts/mysql_test_data_timezone.sql > $@; $(top_srcdir)/scripts/mysql_test_data_timezone.sql > $@;
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -28,6 +28,3 @@ DIST_SUBDIRS = @mysql_pg_distdirs@
install-exec-hook: install-exec-hook:
$(mkinstalldirs) $(DESTDIR)$(pkglibdir) $(DESTDIR)$(pkglibdir)/plugin $(mkinstalldirs) $(DESTDIR)$(pkglibdir) $(DESTDIR)$(pkglibdir)/plugin
test ! -d debug || $(TAR) cf - debug | ( cd $(DESTDIR)$(pkglibdir)/plugin && $(TAR) xvf - ) test ! -d debug || $(TAR) cf - debug | ( cd $(DESTDIR)$(pkglibdir)/plugin && $(TAR) xvf - )
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -13,4 +13,4 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # 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)

View File

@ -39,6 +39,3 @@ libdaemon_example_a_CXXFLAGS = $(AM_CFLAGS)
libdaemon_example_a_CFLAGS = $(AM_CFLAGS) libdaemon_example_a_CFLAGS = $(AM_CFLAGS)
libdaemon_example_a_SOURCES= daemon_example.cc libdaemon_example_a_SOURCES= daemon_example.cc
EXTRA_DIST = CMakeLists.txt EXTRA_DIST = CMakeLists.txt
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -13,5 +13,5 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
MYSQL_ADD_PLUGIN(ftexample plugin_example.c
MYSQL_ADD_PLUGIN(ftexample plugin_example.c MODULE_ONLY MODULE_OUTPUT_NAME mypluglib) MODULE_ONLY MODULE_OUTPUT_NAME "mypluglib")

View File

@ -23,6 +23,3 @@ mypluglib_la_SOURCES= plugin_example.c
mypluglib_la_LDFLAGS= -module -rpath $(pkgplugindir) mypluglib_la_LDFLAGS= -module -rpath $(pkgplugindir)
mypluglib_la_CFLAGS= -DMYSQL_DYNAMIC_PLUGIN mypluglib_la_CFLAGS= -DMYSQL_DYNAMIC_PLUGIN
EXTRA_DIST= CMakeLists.txt EXTRA_DIST= CMakeLists.txt
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -27,6 +27,3 @@ libpstack_a_SOURCES = bucomm.c filemode.c linuxthreads.c rddbg.c \
debug.c ieee.c pstack.c stabs.c debug.c ieee.c pstack.c stabs.c
noinst_HEADERS = bucomm.h debug.h ieee.h budbg.h demangle.h \ noinst_HEADERS = bucomm.h debug.h ieee.h budbg.h demangle.h \
linuxthreads.h pstack.h pstacktrace.h linuxthreads.h pstack.h pstacktrace.h
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -1,4 +1 @@
noinst_HEADERS = aout64.h stab.def stab_gnu.h noinst_HEADERS = aout64.h stab.def stab_gnu.h
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -31,6 +31,3 @@ test: re tests
./re < tests ./re < tests
./re -el < tests ./re -el < tests
./re -er < tests ./re -er < tests
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -93,6 +93,10 @@ IF(CMAKE_GENERATOR MATCHES "Makefiles")
# No multiconfig build - use CMAKE_C_FLAGS # No multiconfig build - use CMAKE_C_FLAGS
SET(CFLAGS "@CMAKE_C_FLAGS@") SET(CFLAGS "@CMAKE_C_FLAGS@")
SET(CXXFLAGS "@CMAKE_CXX_FLAGS@") SET(CXXFLAGS "@CMAKE_CXX_FLAGS@")
FOREACH(ARCH ${CMAKE_OSX_ARCHITECTURES})
SET(CFLAGS "${CFLAGS} -arch ${ARCH}")
SET(CXXFLAGS "${CXXFLAGS} -arch ${ARCH}")
ENDFOREACH()
ELSE() ELSE()
# Multiconfig build - use CMAKE_C_FLAGS_RELWITHDEBINFO # Multiconfig build - use CMAKE_C_FLAGS_RELWITHDEBINFO
SET(CFLAGS "@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") SET(CHECK_PID "kill -s SIGCONT $PID > /dev/null 2> /dev/null")
ENDIF() ENDIF()
SET(HOSTNAME "hostname")
ENDIF(UNIX) ENDIF(UNIX)
# Really ugly, one script, "mysql_install_db", needs prefix set to ".", # Really ugly, one script, "mysql_install_db", needs prefix set to ".",
# i.e. makes access relative the current directory. This matches # i.e. makes access relative the current directory. This matches
# the documentation, so better not change this. # the documentation, so better not change this.
@ -298,14 +301,13 @@ ELSE()
mysql_secure_installation mysql_secure_installation
mysql_zap mysql_zap
mysqlaccess mysqlaccess
mysqlaccess.conf
mysqlbug mysqlbug
mysql_convert_table_format mysql_convert_table_format
mysql_find_rows mysql_find_rows
mysqlhotcopy mysqlhotcopy
mysqldumpslow mysqldumpslow
mysqld_multi mysqld_multi
mysqlaccess
mysqlaccess.conf
mysqld_safe mysqld_safe
) )
FOREACH(file ${BIN_SCRIPTS}) FOREACH(file ${BIN_SCRIPTS})

View File

@ -190,7 +190,3 @@ SUFFIXES = .sh
$< > $@-t $< > $@-t
@CHMOD@ +x $@-t @CHMOD@ +x $@-t
@MV@ $@-t $@ @MV@ $@-t $@
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -307,7 +307,7 @@ set_malloc_lib() {
malloc_lib= malloc_lib=
# This list is kept intentionally simple. Simply set --malloc-lib # This list is kept intentionally simple. Simply set --malloc-lib
# to a full path if another location is desired. # 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 for flavor in _minimal '' _and_profiler _debug; do
tmp="$libdir/libtcmalloc$flavor.so" tmp="$libdir/libtcmalloc$flavor.so"
#log_notice "DEBUG: Checking for malloc lib '$tmp'" #log_notice "DEBUG: Checking for malloc lib '$tmp'"
@ -704,7 +704,7 @@ fi
cmd="`mysqld_ld_preload_text`$NOHUP_NICENESS" 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" \ for i in "$ledir/$MYSQLD" "$defaults" "--basedir=$MY_BASEDIR_VERSION" \
"--datadir=$DATADIR" "--plugin-dir=$plugin_dir" "$USER_OPTION" "--datadir=$DATADIR" "--plugin-dir=$plugin_dir" "$USER_OPTION"

View File

@ -18,23 +18,22 @@ FILE(GLOB all_files
${CMAKE_SOURCE_DIR}/sql-bench/* ${CMAKE_SOURCE_DIR}/sql-bench/*
${CMAKE_SOURCE_DIR}/sql-bench/Data/ATIS/* ${CMAKE_SOURCE_DIR}/sql-bench/Data/ATIS/*
${CMAKE_SOURCE_DIR}/sql-bench/Data/Wisconsin/* ${CMAKE_SOURCE_DIR}/sql-bench/Data/Wisconsin/*
${CMAKE_SOURCE_DIR}/sql-bench/Comments/*
${CMAKE_SOURCE_DIR}/sql-bench/limits/* ${CMAKE_SOURCE_DIR}/sql-bench/limits/*
) )
IF(NOT INSTALL_SQLBENCHROOTDIR) IF(NOT INSTALL_SQLBENCHDIR)
RETURN() RETURN()
ENDIF() ENDIF()
IF(INSTALL_SQLBENCHROOTDIR STREQUAL ".") IF(INSTALL_SQLBENCHDIR STREQUAL ".")
SET(prefix) SET(prefix)
ELSE() ELSE()
SET(prefix ${INSTALL_SQLBENCHROOTDIR}/) SET(prefix ${INSTALL_SQLBENCHDIR}/)
ENDIF() ENDIF()
GET_FILENAME_COMPONENT(basedir ${CMAKE_SOURCE_DIR} ABSOLUTE) GET_FILENAME_COMPONENT(basedir ${CMAKE_SOURCE_DIR} ABSOLUTE)
FOREACH(file ${all_files}) 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}) FILE(RELATIVE_PATH relpath ${basedir} ${file})
SET(target_relpath ${relpath}) SET(target_relpath ${relpath})
GET_FILENAME_COMPONENT(ext ${file} EXT) GET_FILENAME_COMPONENT(ext ${file} EXT)

View File

@ -81,6 +81,3 @@ SUFFIXES = .sh
$< > $@-t $< > $@-t
@CHMOD@ +x $@-t @CHMOD@ +x $@-t
@MV@ $@-t $@ @MV@ $@-t $@
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -15,6 +15,3 @@
## Process this file with automake to create Makefile.in ## Process this file with automake to create Makefile.in
EXTRA_DIST = client.c pack.c my_time.c my_user.c EXTRA_DIST = client.c pack.c my_time.c my_user.c
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -280,7 +280,8 @@ IF(WIN32 AND MYSQLD_EXECUTABLE)
ALL ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/data/mysql/user.frm 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() ELSE()
# Not windows or cross compiling, just install an empty directory # Not windows or cross compiling, just install an empty directory
INSTALL(FILES ${DUMMY_FILE} DESTINATION data/mysql) INSTALL(FILES ${DUMMY_FILE} DESTINATION data/mysql)

View File

@ -271,6 +271,3 @@ probes_libndb.o: probes_mysql.d libndb_la-ha_ndbcluster.lo
fi fi
endif endif
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -263,7 +263,6 @@ static void run_query(THD *thd, char *buf, char *end,
ulonglong save_thd_options= thd->variables.option_bits; ulonglong save_thd_options= thd->variables.option_bits;
DBUG_ASSERT(sizeof(save_thd_options) == sizeof(thd->variables.option_bits)); DBUG_ASSERT(sizeof(save_thd_options) == sizeof(thd->variables.option_bits));
NET save_thd_net= thd->net; NET save_thd_net= thd->net;
const char* found_semicolon= NULL;
bzero((char*) &thd->net, sizeof(NET)); bzero((char*) &thd->net, sizeof(NET));
thd->set_query(buf, (uint) (end - buf)); 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->in_sub_stmt);
DBUG_ASSERT(!thd->locked_tables_mode); 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) if (no_print_error && thd->is_slave_error)
{ {

View File

@ -6030,7 +6030,7 @@ longlong Item_func_row_count::val_int()
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
THD *thd= current_thd; THD *thd= current_thd;
return thd->row_count_func; return thd->get_row_count_func();
} }

View File

@ -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; thd->table_map_for_update= (table_map)table_map_for_update;
/* Execute the query (note that we bypass dispatch_command()) */ /* Execute the query (note that we bypass dispatch_command()) */
const char* found_semicolon= NULL; Parser_state parser_state(thd, thd->query(), thd->query_length());
mysql_parse(thd, thd->query(), thd->query_length(), &found_semicolon); mysql_parse(thd, thd->query(), thd->query_length(), &parser_state);
log_slow_statement(thd); log_slow_statement(thd);
/* /*

View File

@ -210,7 +210,7 @@ net_send_ok(THD *thd,
NET *net= &thd->net; NET *net= &thd->net;
uchar buff[MYSQL_ERRMSG_SIZE+10],*pos; uchar buff[MYSQL_ERRMSG_SIZE+10],*pos;
bool error= FALSE; bool error= FALSE;
DBUG_ENTER("my_ok"); DBUG_ENTER("net_send_ok");
if (! net->vio) // hack for re-parsing queries if (! net->vio) // hack for re-parsing queries
{ {

View File

@ -58,6 +58,3 @@ distclean-local:
# Do nothing # Do nothing
link_sources: link_sources:
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -543,7 +543,7 @@ THD::THD()
cuted_fields= 0L; cuted_fields= 0L;
sent_row_count= 0L; sent_row_count= 0L;
limit_found_rows= 0; limit_found_rows= 0;
row_count_func= -1; m_row_count_func= -1;
statement_id_counter= 0UL; statement_id_counter= 0UL;
// Must be reset to handle error with THD's created for init of mysqld // Must be reset to handle error with THD's created for init of mysqld
lex->current_select= 0; lex->current_select= 0;
@ -835,7 +835,10 @@ MYSQL_ERROR* THD::raise_condition(uint sql_errno,
else else
{ {
if (! stmt_da->is_error()) if (! stmt_da->is_error())
{
set_row_count_func(-1);
stmt_da->set_error_status(this, sql_errno, msg, sqlstate); stmt_da->set_error_status(this, sql_errno, msg, sqlstate);
}
} }
} }
@ -1836,11 +1839,6 @@ bool select_to_file::send_eof()
error= 1; error= 1;
if (!error) 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); ::my_ok(thd,row_count);
} }
file= -1; file= -1;
@ -2881,11 +2879,6 @@ bool select_dumpvar::send_eof()
if (! row_count) if (! row_count)
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_SP_FETCH_NO_DATA, ER(ER_SP_FETCH_NO_DATA)); 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); ::my_ok(thd,row_count);
return 0; return 0;
} }

View File

@ -1999,7 +1999,50 @@ public:
} }
ulonglong limit_found_rows; 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; ha_rows cuted_fields;
/* /*
@ -2786,6 +2829,7 @@ inline void
my_ok(THD *thd, ulonglong affected_rows= 0, ulonglong id= 0, my_ok(THD *thd, ulonglong affected_rows= 0, ulonglong id= 0,
const char *message= NULL) const char *message= NULL)
{ {
thd->set_row_count_func(affected_rows);
thd->stmt_da->set_ok_status(thd, affected_rows, id, message); 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 inline void
my_eof(THD *thd) my_eof(THD *thd)
{ {
thd->set_row_count_func(-1);
thd->stmt_da->set_eof_status(thd); thd->stmt_da->set_eof_status(thd);
} }
@ -3456,7 +3501,7 @@ public:
/* Bits in sql_command_flags */ /* Bits in sql_command_flags */
#define CF_CHANGES_DATA (1U << 0) #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_STATUS_COMMAND (1U << 2)
#define CF_SHOW_TABLE_COMMAND (1U << 3) #define CF_SHOW_TABLE_COMMAND (1U << 3)
#define CF_WRITE_LOGS_COMMAND (1U << 4) #define CF_WRITE_LOGS_COMMAND (1U << 4)

View File

@ -187,8 +187,8 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
if (prune_partitions(thd, table, conds)) if (prune_partitions(thd, table, conds))
{ {
free_underlaid_joins(thd, select_lex); free_underlaid_joins(thd, select_lex);
thd->row_count_func= 0; // No matching record
my_ok(thd, (ha_rows) thd->row_count_func); // No matching records my_ok(thd, 0);
DBUG_RETURN(0); DBUG_RETURN(0);
} }
#endif #endif
@ -204,7 +204,6 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
{ {
delete select; delete select;
free_underlaid_joins(thd, select_lex); free_underlaid_joins(thd, select_lex);
thd->row_count_func= 0;
/* /*
Error was already created by quick select evaluation (check_quick()). Error was already created by quick select evaluation (check_quick()).
TODO: Add error code output parameter to Item::val_xxx() methods. 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()) if (thd->is_error())
DBUG_RETURN(TRUE); 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 We don't need to call reset_auto_increment in this case, because
mysql_truncate always gives a NULL conds argument, hence we never 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 If a TRUNCATE TABLE was issued, the number of rows should be reported as
zero since the exact number is unknown. zero since the exact number is unknown.
*/ */
thd->row_count_func= reset_auto_increment ? 0 : deleted; my_ok(thd, reset_auto_increment ? 0 : deleted);
my_ok(thd, (ha_rows) thd->row_count_func);
DBUG_PRINT("info",("%ld records deleted",(long) deleted)); DBUG_PRINT("info",("%ld records deleted",(long) deleted));
} }
DBUG_RETURN(error >= 0 || thd->is_error()); DBUG_RETURN(error >= 0 || thd->is_error());
@ -1058,8 +1056,7 @@ bool multi_delete::send_eof()
if (!local_error) if (!local_error)
{ {
thd->row_count_func= deleted; ::my_ok(thd, deleted);
::my_ok(thd, (ha_rows) thd->row_count_func);
} }
return 0; return 0;
} }

View File

@ -1005,10 +1005,10 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
if (values_list.elements == 1 && (!(thd->variables.option_bits & OPTION_WARNINGS) || if (values_list.elements == 1 && (!(thd->variables.option_bits & OPTION_WARNINGS) ||
!thd->cuted_fields)) !thd->cuted_fields))
{ {
thd->row_count_func= info.copied + info.deleted + my_ok(thd, info.copied + info.deleted +
((thd->client_capabilities & CLIENT_FOUND_ROWS) ? ((thd->client_capabilities & CLIENT_FOUND_ROWS) ?
info.touched : info.updated); info.touched : info.updated),
my_ok(thd, (ulong) thd->row_count_func, id); id);
} }
else else
{ {
@ -1024,8 +1024,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records, sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records,
(ulong) (info.deleted + updated), (ulong) (info.deleted + updated),
(ulong) thd->warning_info->statement_warn_count()); (ulong) thd->warning_info->statement_warn_count());
thd->row_count_func= info.copied + info.deleted + updated; ::my_ok(thd, info.copied + info.deleted + updated, id, buff);
::my_ok(thd, (ulong) thd->row_count_func, id, buff);
} }
thd->abort_on_warning= 0; thd->abort_on_warning= 0;
DBUG_RETURN(FALSE); DBUG_RETURN(FALSE);
@ -3337,7 +3336,7 @@ bool select_insert::send_eof()
{ {
int error; int error;
bool const trans_table= table->file->has_transactions(); bool const trans_table= table->file->has_transactions();
ulonglong id; ulonglong id, row_count;
bool changed; bool changed;
THD::killed_state killed_status= thd->killed; THD::killed_state killed_status= thd->killed;
DBUG_ENTER("select_insert::send_eof"); DBUG_ENTER("select_insert::send_eof");
@ -3403,16 +3402,15 @@ bool select_insert::send_eof()
sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records, sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records,
(ulong) (info.deleted+info.updated), (ulong) (info.deleted+info.updated),
(ulong) thd->warning_info->statement_warn_count()); (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) ? ((thd->client_capabilities & CLIENT_FOUND_ROWS) ?
info.touched : info.updated); info.touched : info.updated);
id= (thd->first_successful_insert_id_in_cur_stmt > 0) ? id= (thd->first_successful_insert_id_in_cur_stmt > 0) ?
thd->first_successful_insert_id_in_cur_stmt : thd->first_successful_insert_id_in_cur_stmt :
(thd->arg_of_last_insert_id_function ? (thd->arg_of_last_insert_id_function ?
thd->first_successful_insert_id_in_prev_stmt : thd->first_successful_insert_id_in_prev_stmt :
(info.copied ? autoinc_value_of_last_inserted_row : 0)); (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); DBUG_RETURN(0);
} }

View File

@ -142,37 +142,64 @@ st_parsing_options::reset()
allows_derived= TRUE; 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, Lex_input_stream::Lex_input_stream(THD *thd,
const char* buffer, const char* buffer,
unsigned int length) unsigned int length)
: m_thd(thd), :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_cpp_buf= (char*) thd->alloc(length + 1); 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; m_cpp_ptr= m_cpp_buf;
} }

View File

@ -1377,6 +1377,8 @@ public:
Lex_input_stream(THD *thd, const char* buff, unsigned int length); Lex_input_stream(THD *thd, const char* buff, unsigned int length);
~Lex_input_stream(); ~Lex_input_stream();
void reset(const char *buff, unsigned int length);
/** /**
Set the echo mode. Set the echo mode.
@ -2207,8 +2209,8 @@ struct LEX: public Query_tables_list
class Set_signal_information class Set_signal_information
{ {
public: public:
/** Constructor. */ /** Empty default constructor, use clear() */
Set_signal_information(); Set_signal_information() {}
/** Copy constructor. */ /** Copy constructor. */
Set_signal_information(const Set_signal_information& set); Set_signal_information(const Set_signal_information& set);
@ -2221,7 +2223,7 @@ public:
void clear(); 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. that represents the expression assigned, if any.
m_item[] is an array indexed by Diag_condition_item_name. m_item[] is an array indexed by Diag_condition_item_name.
*/ */
@ -2238,8 +2240,16 @@ class Yacc_state
{ {
public: public:
Yacc_state() Yacc_state()
: yacc_yyss(NULL), yacc_yyvs(NULL) {
{} reset();
}
void reset()
{
yacc_yyss= NULL;
yacc_yyvs= NULL;
m_set_signal_info.clear();
}
~Yacc_state(); ~Yacc_state();
@ -2284,6 +2294,12 @@ public:
Lex_input_stream m_lip; Lex_input_stream m_lip;
Yacc_state m_yacc; Yacc_state m_yacc;
void reset(const char *found_semicolon, unsigned int length)
{
m_lip.reset(found_semicolon, length);
m_yacc.reset();
}
}; };

View File

@ -274,22 +274,20 @@ void init_update_queries(void)
sql_command_flags[SQLCOM_CREATE_TRIGGER]= CF_AUTO_COMMIT_TRANS; sql_command_flags[SQLCOM_CREATE_TRIGGER]= CF_AUTO_COMMIT_TRANS;
sql_command_flags[SQLCOM_DROP_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 | sql_command_flags[SQLCOM_UPDATE]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL; CF_PROTECT_AGAINST_GRL;
sql_command_flags[SQLCOM_UPDATE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | sql_command_flags[SQLCOM_UPDATE_MULTI]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL; CF_PROTECT_AGAINST_GRL;
sql_command_flags[SQLCOM_INSERT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | sql_command_flags[SQLCOM_INSERT]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL; CF_PROTECT_AGAINST_GRL;
sql_command_flags[SQLCOM_INSERT_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | sql_command_flags[SQLCOM_INSERT_SELECT]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL; CF_PROTECT_AGAINST_GRL;
sql_command_flags[SQLCOM_DELETE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | sql_command_flags[SQLCOM_DELETE]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL; CF_PROTECT_AGAINST_GRL;
sql_command_flags[SQLCOM_DELETE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | sql_command_flags[SQLCOM_DELETE_MULTI]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE |
CF_REEXECUTION_FRAGILE | CF_PROTECT_AGAINST_GRL; CF_PROTECT_AGAINST_GRL;
sql_command_flags[SQLCOM_REPLACE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | sql_command_flags[SQLCOM_REPLACE]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE;
CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_REPLACE_SELECT]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE;
sql_command_flags[SQLCOM_REPLACE_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT |
CF_REEXECUTION_FRAGILE;
sql_command_flags[SQLCOM_SELECT]= 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_SET_OPTION]= CF_REEXECUTION_FRAGILE | CF_AUTO_COMMIT_TRANS;
sql_command_flags[SQLCOM_DO]= CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_DO]= CF_REEXECUTION_FRAGILE;
@ -367,8 +365,7 @@ void init_update_queries(void)
last called (or executed) statement is preserved. last called (or executed) statement is preserved.
See mysql_execute_command() for how CF_ROW_COUNT is used. 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_CALL]= CF_REEXECUTION_FRAGILE;
sql_command_flags[SQLCOM_EXECUTE]= CF_HAS_ROW_COUNT;
/* /*
The following admin table operations are allowed The following admin table operations are allowed
@ -461,7 +458,6 @@ static void handle_bootstrap_impl(THD *thd)
{ {
MYSQL_FILE *file= bootstrap_file; MYSQL_FILE *file= bootstrap_file;
char *buff; char *buff;
const char* found_semicolon= NULL;
DBUG_ENTER("handle_bootstrap"); DBUG_ENTER("handle_bootstrap");
@ -534,7 +530,8 @@ static void handle_bootstrap_impl(THD *thd)
mode we have only one thread. mode we have only one thread.
*/ */
thd->set_time(); 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 close_thread_tables(thd); // Free tables
bootstrap_error= thd->is_error(); 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 *) thd->security_ctx->host_or_ip);
char *packet_end= thd->query() + thd->query_length(); char *packet_end= thd->query() + thd->query_length();
/* 'b' stands for 'buffer' parameter', special for 'my_snprintf' */ /* '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()); general_log_write(thd, command, thd->query(), thd->query_length());
DBUG_PRINT("query",("%-.4096s",thd->query())); DBUG_PRINT("query",("%-.4096s",thd->query()));
#if defined(ENABLED_PROFILING) #if defined(ENABLED_PROFILING)
thd->profiling.set_query_source(thd->query(), thd->query_length()); thd->profiling.set_query_source(thd->query(), thd->query_length());
#endif #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(); thd->protocol->end_statement();
query_cache_end_of_result(thd); 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); statistic_increment(thd->status_var.questions, &LOCK_status);
thd->set_time(); /* Reset the query start time. */ 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 */ /* 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")); 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, res= mysql_insert(thd, all_tables, lex->field_list, lex->many_values,
lex->update_list, lex->value_list, lex->update_list, lex->value_list,
lex->duplicates, lex->ignore); 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 If we have inserted into a VIEW, and the base table has
AUTO_INCREMENT column, but this column is not accessible through AUTO_INCREMENT column, but this column is not accessible through
@ -3265,7 +3265,7 @@ end_with_restore_list:
delete sel_result; delete sel_result;
} }
/* revert changes for SP */ /* 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; select_lex->table_list.first= (uchar*) first_table;
} }
/* /*
@ -3311,7 +3311,7 @@ end_with_restore_list:
&select_lex->order_list, &select_lex->order_list,
unit->select_limit_cnt, select_lex->options, unit->select_limit_cnt, select_lex->options,
FALSE); FALSE);
MYSQL_DELETE_DONE(res, (ulong) thd->row_count_func); MYSQL_DELETE_DONE(res, (ulong) thd->get_row_count_func());
break; break;
} }
case SQLCOM_DELETE_MULTI: case SQLCOM_DELETE_MULTI:
@ -4314,8 +4314,9 @@ create_sp_error:
thd->server_status&= ~bits_to_be_cleared; thd->server_status&= ~bits_to_be_cleared;
if (!res) 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 else
{ {
DBUG_ASSERT(thd->is_error() || thd->killed); 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) if (thd->one_shot_set && lex->sql_command != SQLCOM_SET_OPTION)
reset_one_shot_variables(thd); 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; goto finish;
error: error:
@ -5747,7 +5739,7 @@ void mysql_init_multi_delete(LEX *lex)
*/ */
void mysql_parse(THD *thd, const char *inBuf, uint length, void mysql_parse(THD *thd, const char *inBuf, uint length,
const char ** found_semicolon) Parser_state *parser_state)
{ {
int error; int error;
DBUG_ENTER("mysql_parse"); DBUG_ENTER("mysql_parse");
@ -5777,10 +5769,7 @@ void mysql_parse(THD *thd, const char *inBuf, uint length,
{ {
LEX *lex= thd->lex; LEX *lex= thd->lex;
Parser_state parser_state(thd, inBuf, length); bool err= parse_sql(thd, parser_state, NULL);
bool err= parse_sql(thd, & parser_state, NULL);
*found_semicolon= parser_state.m_lip.found_semicolon;
if (!err) if (!err)
{ {
@ -5795,6 +5784,7 @@ void mysql_parse(THD *thd, const char *inBuf, uint length,
{ {
if (! thd->is_error()) 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 Binlog logs a string starting from thd->query and having length
thd->query_length; so we set thd->query_length correctly (to not 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. PROCESSLIST.
Note that we don't need LOCK_thread_count to modify query_length. 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(), thd->set_query_inner(thd->query(),
(uint32) (*found_semicolon - (uint32) (found_semicolon -
thd->query() - 1)); thd->query() - 1));
/* Actually execute the query */ /* Actually execute the query */
if (*found_semicolon) if (found_semicolon)
{ {
lex->safe_to_cache_query= 0; lex->safe_to_cache_query= 0;
thd->server_status|= SERVER_MORE_RESULTS_EXISTS; 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(); thd->cleanup_after_query();
DBUG_ASSERT(thd->change_list.is_empty()); DBUG_ASSERT(thd->change_list.is_empty());
} }
else
{
/* There are no multi queries in the cache. */
*found_semicolon= NULL;
}
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }

View File

@ -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); bool alloc_query(THD *thd, const char *packet, uint packet_length);
void mysql_init_select(LEX *lex); void mysql_init_select(LEX *lex);
void mysql_parse(THD *thd, const char *inBuf, uint length, 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); void mysql_reset_thd_for_next_command(THD *thd);
bool mysql_new_select(LEX *lex, bool move_down); bool mysql_new_select(LEX *lex, bool move_down);
void create_select_for_variable(const char *var_name); void create_select_for_variable(const char *var_name);

View File

@ -75,10 +75,6 @@ const LEX_STRING Diag_statement_item_names[]=
{ C_STRING_WITH_LEN("TRANSACTION_ACTIVE") } { C_STRING_WITH_LEN("TRANSACTION_ACTIVE") }
}; };
Set_signal_information::Set_signal_information()
{
clear();
}
Set_signal_information::Set_signal_information( Set_signal_information::Set_signal_information(
const Set_signal_information& set) const Set_signal_information& set)
@ -458,8 +454,20 @@ bool Signal_statement::execute(THD *thd)
DBUG_ENTER("Signal_statement::execute"); 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->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); thd->warning_info->clear_warning_info(thd->query_id);
result= raise_condition(thd, &cond); result= raise_condition(thd, &cond);

View File

@ -843,9 +843,8 @@ int mysql_update(THD *thd,
my_snprintf(buff, sizeof(buff), ER(ER_UPDATE_INFO), (ulong) found, my_snprintf(buff, sizeof(buff), ER(ER_UPDATE_INFO), (ulong) found,
(ulong) updated, (ulong) updated,
(ulong) thd->warning_info->statement_warn_count()); (ulong) thd->warning_info->statement_warn_count());
thd->row_count_func= my_ok(thd, (thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated; id, buff);
my_ok(thd, (ulong) thd->row_count_func, id, buff);
DBUG_PRINT("info",("%ld records updated", (long) updated)); DBUG_PRINT("info",("%ld records updated", (long) updated));
} }
thd->count_cuted_fields= CHECK_FIELD_IGNORE; /* calc cuted fields */ 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; thd->first_successful_insert_id_in_prev_stmt : 0;
my_snprintf(buff, sizeof(buff), ER(ER_UPDATE_INFO), my_snprintf(buff, sizeof(buff), ER(ER_UPDATE_INFO),
(ulong) found, (ulong) updated, (ulong) thd->cuted_fields); (ulong) found, (ulong) updated, (ulong) thd->cuted_fields);
thd->row_count_func= ::my_ok(thd, (thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated; id, buff);
::my_ok(thd, (ulong) thd->row_count_func, id, buff);
DBUG_RETURN(FALSE); DBUG_RETURN(FALSE);
} }

View File

@ -20,6 +20,3 @@ AUTOMAKE_OPTIONS = foreign
# These are built from source in the Docs directory # These are built from source in the Docs directory
SUBDIRS = @mysql_se_dirs@ SUBDIRS = @mysql_se_dirs@
DIST_SUBDIRS = @mysql_se_distdirs@ DIST_SUBDIRS = @mysql_se_distdirs@
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -102,6 +102,3 @@ probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@ $(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
endif endif
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -83,6 +83,3 @@ probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@ $(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
endif endif
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -62,6 +62,3 @@ probes_mysql.d:
probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES) probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@ $(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
endif endif
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -83,6 +83,3 @@ probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@ $(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
endif endif
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -84,6 +84,3 @@ probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@ $(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
endif endif
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -71,6 +71,3 @@ probes_mysql.d:
probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES) probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@ $(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
endif endif
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -50,5 +50,3 @@ libibmdb2i_a_SOURCES= $(ha_ibmdb2i_la_SOURCES)
EXTRA_DIST = CMakeLists.txt plug.in EXTRA_DIST = CMakeLists.txt plug.in
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -337,6 +337,3 @@ ha_innodb_la_SOURCES= $(libinnobase_a_SOURCES)
EXTRA_DIST= CMakeLists.txt plug.in \ EXTRA_DIST= CMakeLists.txt plug.in \
pars/make_bison.sh pars/make_flex.sh \ pars/make_bison.sh pars/make_flex.sh \
pars/pars0grm.y pars/pars0lex.l 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