mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Manual merge of mysql-trunk into mysql-trunk-merge.
Conflicts: Text conflict in client/mysqlbinlog.cc Text conflict in mysql-test/Makefile.am Text conflict in mysql-test/collections/default.daily Text conflict in mysql-test/r/mysqlbinlog_row_innodb.result Text conflict in mysql-test/suite/rpl/r/rpl_typeconv_innodb.result Text conflict in mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test Text conflict in mysql-test/suite/rpl/t/rpl_row_create_table.test Text conflict in mysql-test/suite/rpl/t/rpl_slave_skip.test Text conflict in mysql-test/suite/rpl/t/rpl_typeconv_innodb.test Text conflict in mysys/charset.c Text conflict in sql/field.cc Text conflict in sql/field.h Text conflict in sql/item.h Text conflict in sql/item_func.cc Text conflict in sql/log.cc Text conflict in sql/log_event.cc Text conflict in sql/log_event_old.cc Text conflict in sql/mysqld.cc Text conflict in sql/rpl_utility.cc Text conflict in sql/rpl_utility.h Text conflict in sql/set_var.cc Text conflict in sql/share/Makefile.am Text conflict in sql/sql_delete.cc Text conflict in sql/sql_plugin.cc Text conflict in sql/sql_select.cc Text conflict in sql/sql_table.cc Text conflict in storage/example/ha_example.h Text conflict in storage/federated/ha_federated.cc Text conflict in storage/myisammrg/ha_myisammrg.cc Text conflict in storage/myisammrg/myrg_open.c
This commit is contained in:
@ -13,65 +13,334 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Build mysql_fix_privilege_tables.sql
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables.sql
|
||||
COMMAND copy /b
|
||||
mysql_system_tables.sql + mysql_system_tables_fix.sql
|
||||
mysql_fix_privilege_tables.sql
|
||||
DEPENDS
|
||||
${PROJECT_SOURCE_DIR}/scripts/mysql_system_tables.sql
|
||||
${PROJECT_SOURCE_DIR}/scripts/mysql_system_tables_fix.sql)
|
||||
|
||||
# Build comp_sql - used for embedding SQL in C or C++ programs
|
||||
ADD_EXECUTABLE(comp_sql comp_sql.c)
|
||||
TARGET_LINK_LIBRARIES(comp_sql dbug mysys strings)
|
||||
IF(NOT CMAKE_CROSSCOMPILING)
|
||||
ADD_EXECUTABLE(comp_sql comp_sql.c)
|
||||
TARGET_LINK_LIBRARIES(comp_sql)
|
||||
ENDIF()
|
||||
|
||||
# Use comp_sql to build mysql_fix_privilege_tables_sql.c
|
||||
GET_TARGET_PROPERTY(COMP_SQL_EXE comp_sql LOCATION)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables_sql.c
|
||||
COMMAND ${COMP_SQL_EXE}
|
||||
mysql_fix_privilege_tables
|
||||
mysql_fix_privilege_tables.sql
|
||||
mysql_fix_privilege_tables_sql.c
|
||||
DEPENDS comp_sql ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables.sql)
|
||||
# Build mysql_fix_privilege_tables.sql (concatenate 2 sql scripts)
|
||||
IF(NOT WIN32 OR CMAKE_CROSSCOMPILING)
|
||||
FIND_PROGRAM(CAT_EXECUTABLE cat DOC "path to the executable")
|
||||
ENDIF()
|
||||
|
||||
# Add dummy target for the above to be built
|
||||
IF(CAT_EXECUTABLE)
|
||||
SET(CAT_COMMAND COMMAND
|
||||
${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CAT_EXECUTABLE} mysql_system_tables.sql mysql_system_tables_fix.sql >
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables.sql
|
||||
)
|
||||
ELSEIF(WIN32)
|
||||
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables.sql
|
||||
native_outfile )
|
||||
SET(CAT_COMMAND
|
||||
COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
cmd /c copy /b mysql_system_tables.sql + mysql_system_tables_fix.sql
|
||||
${native_outfile} )
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Cannot concatenate files")
|
||||
ENDIF()
|
||||
|
||||
# Build mysql_fix_privilege_tables.c
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables_sql.c
|
||||
${CAT_COMMAND}
|
||||
COMMAND comp_sql
|
||||
mysql_fix_privilege_tables
|
||||
mysql_fix_privilege_tables.sql
|
||||
mysql_fix_privilege_tables_sql.c
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
DEPENDS comp_sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_fix.sql
|
||||
)
|
||||
|
||||
# Add target for the above to be built
|
||||
ADD_CUSTOM_TARGET(GenFixPrivs
|
||||
ALL
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables_sql.c)
|
||||
ALL
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables_sql.c
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Replace some variables @foo@ in the .in/.sh file, and write the new script
|
||||
# ----------------------------------------------------------------------
|
||||
IF(UNIX)
|
||||
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution
|
||||
"cd ${CMAKE_BINARY_DIR} && '${CMAKE_CPACK_COMMAND}' -G TGZ --config CPackConfig.cmake" )
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
SET(CFLAGS "-D_WINDOWS ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
SET(prefix "${CMAKE_INSTALL_PREFIX}/MySQL Server ${MYSQL_BASE_VERSION}")
|
||||
SET(sysconfdir ${prefix})
|
||||
SET(bindir ${prefix}/bin)
|
||||
SET(libexecdir ${prefix}/bin)
|
||||
SET(scriptdir ${prefix}/bin)
|
||||
SET(datadir ${prefix}/share)
|
||||
SET(pkgdatadir ${prefix}/share)
|
||||
SET(localstatedir ${prefix}/data)
|
||||
INSTALL(FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_data.sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fill_help_tables.sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_test_data_timezone.sql
|
||||
${FIX_PRIVILEGES_SQL}
|
||||
DESTINATION ${INSTALL_MYSQLSHAREDIR}
|
||||
)
|
||||
|
||||
CONFIGURE_FILE(mysql_config.pl.in
|
||||
scripts/mysql_config.pl ESCAPE_QUOTES @ONLY)
|
||||
# TCMalloc hacks
|
||||
IF($ENV{MALLOC_LIB})
|
||||
SET(MALLOC_LIB $ENV{MALLOC_LIB} CACHE STRING "malloc library")
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(mysql_convert_table_format.sh
|
||||
scripts/mysql_convert_table_format.pl ESCAPE_QUOTES @ONLY)
|
||||
IF(MALLOC_LIB)
|
||||
INSTALL(FILES ${MALLOC_LIB} DESTINATION lib OPTIONAL)
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(mysql_install_db.pl.in
|
||||
scripts/mysql_install_db.pl ESCAPE_QUOTES @ONLY)
|
||||
IF(CMAKE_GENERATOR MATCHES "Makefiles")
|
||||
# No multiconfig build - use CMAKE_C_FLAGS
|
||||
SET(CFLAGS "@CMAKE_C_FLAGS@")
|
||||
SET(CXXFLAGS "@CMAKE_CXX_FLAGS@")
|
||||
ELSE()
|
||||
# Multiconfig build - use CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
SET(CFLAGS "@CMAKE_C_FLAGS_RELWITHDEBINFO@")
|
||||
SET(CXXFLAGS "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(mysql_secure_installation.pl.in
|
||||
scripts/mysql_secure_installation.pl ESCAPE_QUOTES @ONLY)
|
||||
IF(UNIX)
|
||||
# FIND_PROC and CHECK_PID are used by mysqld_safe
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
SET (FIND_PROC
|
||||
"ps wwwp $PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" > /dev/null")
|
||||
ENDIF()
|
||||
IF(NOT FIND_PROC AND CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||
SET (FIND_PROC
|
||||
"ps -p $PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" > /dev/null")
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(mysqld_multi.sh
|
||||
scripts/mysqld_multi.pl ESCAPE_QUOTES @ONLY)
|
||||
IF(NOT FIND_PROC)
|
||||
# BSD style
|
||||
EXECUTE_PROCESS(COMMAND ps -uaxww OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result)
|
||||
IF(result MATCHES 0)
|
||||
SET( FIND_PROC
|
||||
"ps -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" | grep \" $PID \" > /dev/null")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(mysqldumpslow.sh
|
||||
scripts/mysqldumpslow.pl ESCAPE_QUOTES @ONLY)
|
||||
IF(NOT FIND_PROC)
|
||||
# SysV style
|
||||
EXECUTE_PROCESS(COMMAND ps -ef OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result)
|
||||
IF(result MATCHES 0)
|
||||
SET( FIND_PROC "ps -ef | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" | grep \" $PID \" > /dev/null")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
EXECUTE_PROCESS(COMMAND sh -c "kill -0 $$" OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result)
|
||||
IF(result MATCHES 0)
|
||||
SET(CHECK_PID "kill -0 $PID > /dev/null 2> /dev/null")
|
||||
ELSE()
|
||||
SET(CHECK_PID "kill -s SIGCONT $PID > /dev/null 2> /dev/null")
|
||||
ENDIF()
|
||||
|
||||
ENDIF(UNIX)
|
||||
|
||||
|
||||
|
||||
|
||||
# Really ugly, one script, "mysql_install_db", needs prefix set to ".",
|
||||
# i.e. makes access relative the current directory. This matches
|
||||
# the documentation, so better not change this.
|
||||
|
||||
IF(INSTALL_LAYOUT MATCHES "STANDALONE")
|
||||
SET(prefix ".")
|
||||
ELSE()
|
||||
SET(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
ENDIF()
|
||||
|
||||
SET(bindir ${prefix}/${INSTALL_BINDIR})
|
||||
SET(sbindir ${prefix}/${INSTALL_SBINDIR})
|
||||
SET(scriptdir ${prefix}/${INSTALL_BINDIR})
|
||||
SET(libexecdir ${prefix}/${INSTALL_SBINDIR})
|
||||
SET(pkgdatadir ${prefix}/${INSTALL_MYSQLSHAREDIR})
|
||||
IF(INSTALL_LAYOUT MATCHES "STANDALONE")
|
||||
SET(localstatedir ${prefix}/data)
|
||||
ELSE()
|
||||
SET(localstatedir ${MYSQL_DATADIR})
|
||||
ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_install_db.sh
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db ESCAPE_QUOTES @ONLY)
|
||||
SET(DEST ${INSTALL_SCRIPTDIR})
|
||||
SET(EXT)
|
||||
ELSE()
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_install_db.pl.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db.pl ESCAPE_QUOTES @ONLY)
|
||||
SET(DEST ${INSTALL_SCRIPTDIR})
|
||||
SET(EXT ".pl")
|
||||
ENDIF()
|
||||
|
||||
INSTALL(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db${EXT}"
|
||||
DESTINATION ${DEST}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE
|
||||
OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
|
||||
|
||||
SET(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
SET(sysconfdir ${prefix})
|
||||
SET(bindir ${prefix}/${INSTALL_BINDIR})
|
||||
SET(libexecdir ${prefix}/${INSTALL_SBINDIR})
|
||||
SET(scriptdir ${prefix}/${INSTALL_BINDIR})
|
||||
SET(datadir ${prefix}/${INSTALL_MYSQLSHAREDIR})
|
||||
SET(pkgdatadir ${prefix}/${INSTALL_MYSQLSHAREDIR})
|
||||
SET(pkgincludedir ${prefix}/${INSTALL_INCLUDEDIR})
|
||||
SET(pkglibdir ${prefix}/${INSTALL_LIBDIR})
|
||||
SET(pkgplugindir ${prefix}/${INSTALL_PLUGINDIR})
|
||||
SET(localstatedir ${MYSQL_DATADIR})
|
||||
|
||||
# some scripts use @TARGET_LINUX@
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
SET(TARGET_LINUX 1)
|
||||
ELSE()
|
||||
SET(TARGET_LINUX 0)
|
||||
ENDIF()
|
||||
|
||||
# Use cmake variables to inspect dependencies for
|
||||
# mysqlclient library (add -l stuff)
|
||||
SET(CLIENT_LIBS "")
|
||||
SET(LIBS "")
|
||||
|
||||
# Avoid compatibility warning about lists with empty elements
|
||||
IF(POLICY CMP0011)
|
||||
CMAKE_POLICY(SET CMP0011 NEW)
|
||||
ENDIF()
|
||||
IF(POLICY CMP0007)
|
||||
CMAKE_POLICY(SET CMP0007 OLD)
|
||||
ENDIF()
|
||||
|
||||
LIST(REMOVE_ITEM mysqlclient_LIB_DEPENDS "")
|
||||
LIST(REMOVE_DUPLICATES mysqlclient_LIB_DEPENDS)
|
||||
FOREACH(lib ${mysqlclient_LIB_DEPENDS})
|
||||
# Filter out "general", it is not a library, just CMake hint
|
||||
IF(NOT lib STREQUAL "general" AND NOT CLIENT_LIBS MATCHES "-l${lib} ")
|
||||
IF (lib MATCHES "^\\-l")
|
||||
SET(CLIENT_LIBS "${CLIENT_LIBS} ${lib} ")
|
||||
ELSEIF(lib MATCHES "^/")
|
||||
# Full path, convert to just filename, strip "lib" prefix and extension
|
||||
GET_FILENAME_COMPONENT(lib "${lib}" NAME_WE)
|
||||
STRING(REGEX REPLACE "^lib" "" lib "${lib}")
|
||||
SET(CLIENT_LIBS "${CLIENT_LIBS}-l${lib} " )
|
||||
ELSE()
|
||||
SET(CLIENT_LIBS "${CLIENT_LIBS}-l${lib} " )
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
IF(LIBDL AND NOT LIBDL MATCHES "-l")
|
||||
SET(LIBDL "-l${LIBDL}")
|
||||
ENDIF()
|
||||
|
||||
IF(LIBWRAP)
|
||||
SET(WRAPLIBS "-lwrap")
|
||||
ENDIF()
|
||||
|
||||
SET(LIBS "${CLIENT_LIBS}")
|
||||
|
||||
IF(LIBCRYPT)
|
||||
SET(LIBS "${LIBS} -l${LIBCRYPT}")
|
||||
ENDIF()
|
||||
|
||||
IF(MSVC)
|
||||
STRING(REPLACE "-l" "" CLIENT_LIBS "${CLIENT_LIBS}")
|
||||
STRING(REPLACE "-l" "" LIBS "${LIBS}" )
|
||||
ENDIF()
|
||||
|
||||
SET(NON_THREADED_LIBS ${CLIENT_LIBS})
|
||||
|
||||
IF(WIN32)
|
||||
# On Windows, some .sh and some .pl.in files are configured
|
||||
# The resulting files will have .pl extension (those are perl scripts)
|
||||
|
||||
# Input files with pl.in extension
|
||||
SET(PLIN_FILES mysql_config mysql_secure_installation)
|
||||
# Input files with .sh extension
|
||||
|
||||
SET(SH_FILES mysql_convert_table_format mysqld_multi mysqldumpslow
|
||||
mysqlhotcopy)
|
||||
|
||||
FOREACH(file ${PLIN_FILES})
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.pl.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file}.pl ESCAPE_QUOTES @ONLY)
|
||||
|
||||
INSTALL(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file}.pl
|
||||
DESTINATION scripts
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE
|
||||
OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
ENDFOREACH()
|
||||
|
||||
FOREACH(file ${SH_FILES})
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file}.pl ESCAPE_QUOTES @ONLY)
|
||||
INSTALL(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file}.pl
|
||||
DESTINATION scripts
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE
|
||||
OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
ENDFOREACH()
|
||||
ELSE()
|
||||
# On Unix, most of the files end up in the bin directory
|
||||
SET(BIN_SCRIPTS
|
||||
msql2mysql
|
||||
mysql_config
|
||||
mysql_fix_extensions
|
||||
mysql_setpermission
|
||||
mysql_secure_installation
|
||||
mysql_zap
|
||||
mysqlaccess
|
||||
mysqlbug
|
||||
mysql_convert_table_format
|
||||
mysql_find_rows
|
||||
mysqlhotcopy
|
||||
mysqldumpslow
|
||||
mysqld_multi
|
||||
mysqlaccess
|
||||
mysqlaccess.conf
|
||||
mysqld_safe
|
||||
)
|
||||
FOREACH(file ${BIN_SCRIPTS})
|
||||
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh)
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY)
|
||||
ELSEIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file})
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file} COPYONLY)
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Can not find ${file}.sh or ${file} in "
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}" )
|
||||
ENDIF()
|
||||
INSTALL(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file}
|
||||
DESTINATION ${INSTALL_BINDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE
|
||||
OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
||||
# Install libgcc as mylibgcc.a
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_FLAGS MATCHES "-static")
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}
|
||||
${CMAKE_CXX_FLAGS} --print-libgcc
|
||||
OUTPUT_VARIABLE LIBGCC_LOCATION
|
||||
RESULT_VARIABLE RESULT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET
|
||||
)
|
||||
IF(${RESULT} EQUAL 0 AND EXISTS ${LIBGCC_LOCATION})
|
||||
INSTALL(FILES "${LIBGCC_LOCATION}" DESTINATION ${INSTALL_LIBDIR})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(mysqlhotcopy.sh
|
||||
scripts/mysqlhotcopy.pl ESCAPE_QUOTES @ONLY)
|
||||
|
@ -23,7 +23,6 @@ EXTRA_PROGRAMS = comp_sql
|
||||
bin_SCRIPTS = @server_scripts@ \
|
||||
msql2mysql \
|
||||
mysql_config \
|
||||
mysql_fix_privilege_tables \
|
||||
mysql_fix_extensions \
|
||||
mysql_setpermission \
|
||||
mysql_secure_installation \
|
||||
@ -45,7 +44,6 @@ EXTRA_SCRIPTS = make_binary_distribution.sh \
|
||||
msql2mysql.sh \
|
||||
mysql_config.sh \
|
||||
mysql_config.pl.in \
|
||||
mysql_fix_privilege_tables.sh \
|
||||
mysql_fix_extensions.sh \
|
||||
mysql_install_db.sh \
|
||||
mysql_install_db.pl.in \
|
||||
@ -69,7 +67,7 @@ EXTRA_DIST = $(EXTRA_SCRIPTS) \
|
||||
make_win_bin_dist \
|
||||
mysql_fix_privilege_tables_sql.c \
|
||||
mysql_system_tables_fix.sql \
|
||||
CMakeLists.txt
|
||||
CMakeLists.txt
|
||||
|
||||
dist_pkgdata_DATA = fill_help_tables.sql \
|
||||
mysql_fix_privilege_tables.sql \
|
||||
@ -82,7 +80,6 @@ CLEANFILES = @server_scripts@ \
|
||||
make_sharedlib_distribution \
|
||||
msql2mysql \
|
||||
mysql_config \
|
||||
mysql_fix_privilege_tables \
|
||||
mysql_fix_extensions \
|
||||
mysql_setpermission \
|
||||
mysql_secure_installation \
|
||||
|
@ -158,7 +158,6 @@ cp tests/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp libmysql/$TARGET/libmysql.dll $DESTDIR/bin/
|
||||
|
||||
cp sql/$TARGET/mysqld.exe $DESTDIR/bin/mysqld$EXE_SUFFIX.exe
|
||||
cp sql/$TARGET/mysqld.map $DESTDIR/bin/mysqld$EXE_SUFFIX.map
|
||||
if [ x"$TARGET" != x"release" ] ; then
|
||||
cp sql/$TARGET/mysqld.pdb $DESTDIR/bin/mysqld$EXE_SUFFIX.pdb
|
||||
fi
|
||||
@ -167,7 +166,6 @@ if [ x"$PACK_DEBUG" = x"" -a -f "sql/debug/mysqld.exe" -o \
|
||||
x"$PACK_DEBUG" = x"yes" ] ; then
|
||||
cp sql/debug/mysqld.exe $DESTDIR/bin/mysqld-debug.exe
|
||||
cp sql/debug/mysqld.pdb $DESTDIR/bin/mysqld-debug.pdb
|
||||
cp sql/debug/mysqld.map $DESTDIR/bin/mysqld-debug.map
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
|
@ -1,223 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2000-2006 MySQL AB
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# This script is a wrapper to pipe the mysql_fix_privilege_tables.sql
|
||||
# through the mysql client program to the mysqld server
|
||||
|
||||
# Default values (Can be changed in my.cnf)
|
||||
password=""
|
||||
host="localhost"
|
||||
user="root"
|
||||
sql_only=0
|
||||
basedir="@prefix@"
|
||||
verbose=0
|
||||
args=""
|
||||
# no elaborate fallback here; with no argument, it will happen in "mysql"
|
||||
port=""
|
||||
socket=""
|
||||
database="mysql"
|
||||
bindir=""
|
||||
pkgdatadir="@pkgdatadir@"
|
||||
print_defaults_bindir="."
|
||||
|
||||
file=mysql_fix_privilege_tables.sql
|
||||
|
||||
# The following test is to make this script compatible with the 4.0 where
|
||||
# the single argument could be a password
|
||||
if test "$#" = 1
|
||||
then
|
||||
case "$1" in
|
||||
--*) ;;
|
||||
*) old_style_password="$1" ; shift ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# The following code is almost identical to the code in mysql_install_db.sh
|
||||
|
||||
case "$1" in
|
||||
--no-defaults|--defaults-file=*|--defaults-extra-file=*)
|
||||
defaults="$1"; shift
|
||||
;;
|
||||
esac
|
||||
|
||||
parse_arguments() {
|
||||
# We only need to pass arguments through to the server if we don't
|
||||
# handle them here. So, we collect unrecognized options (passed on
|
||||
# the command line) into the args variable.
|
||||
pick_args=
|
||||
if test "$1" = PICK-ARGS-FROM-ARGV
|
||||
then
|
||||
pick_args=1
|
||||
shift
|
||||
fi
|
||||
|
||||
for arg do
|
||||
case "$arg" in
|
||||
--basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
||||
--user=*) user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
||||
--password=*) password=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
||||
--host=*) host=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
||||
--sql|--sql-only) sql_only=1 ;;
|
||||
--verbose) verbose=1 ;;
|
||||
--port=*) port=`echo "$arg" | sed -e "s;--port=;;"` ;;
|
||||
--socket=*) socket=`echo "$arg" | sed -e "s;--socket=;;"` ;;
|
||||
--database=*) database=`echo "$arg" | sed -e "s;--database=;;"` ;;
|
||||
--bindir=*) bindir=`echo "$arg" | sed -e "s;--bindir=;;"`
|
||||
print_defaults_bindir=$bindir
|
||||
;;
|
||||
*)
|
||||
if test -n "$pick_args"
|
||||
then
|
||||
# This sed command makes sure that any special chars are quoted,
|
||||
# so the arg gets passed exactly to the server.
|
||||
args="$args "`echo "$arg" | sed -e 's,\([^=a-zA-Z0-9_.-]\),\\\\\1,g'`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Get first arguments from the my.cfg file, groups [mysqld] and
|
||||
# [mysql_install_db], and then merge with the command line arguments
|
||||
|
||||
print_defaults=my_print_defaults
|
||||
for dir in ./bin @bindir@ @bindir@ extra $print_defaults_bindir/../bin $print_defaults_bindir/../extra
|
||||
do
|
||||
if test -x $dir/my_print_defaults
|
||||
then
|
||||
print_defaults="$dir/my_print_defaults"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
parse_arguments `$print_defaults $defaults mysql_install_db mysql_fix_privilege_tables`
|
||||
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
||||
|
||||
if test -z "$password"
|
||||
then
|
||||
password=$old_style_password
|
||||
fi
|
||||
|
||||
# Find where 'mysql' command is located
|
||||
|
||||
dirname=`dirname "$0"`
|
||||
|
||||
if test -z "$bindir"
|
||||
then
|
||||
for i in @bindir@ $basedir/bin "$dirname/../client"
|
||||
do
|
||||
if test -f $i/mysql
|
||||
then
|
||||
bindir=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if test -z "$bindir"
|
||||
then
|
||||
echo "Could not find MySQL command-line client (mysql)."
|
||||
echo "Please use --basedir to specify the directory where MySQL is installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cmd="$bindir/mysql --no-defaults --default-character-set=latin1 --force --user=$user --host=$host"
|
||||
if test ! -z "$port"; then
|
||||
cmd="$cmd --port=$port"
|
||||
fi
|
||||
if test ! -z "$socket"; then
|
||||
cmd="$cmd --socket=$socket"
|
||||
fi
|
||||
cmd="$cmd --database=$database"
|
||||
|
||||
if test $sql_only = 1
|
||||
then
|
||||
cmd="cat"
|
||||
fi
|
||||
|
||||
# Find where first mysql_fix_privilege_tables.sql is located
|
||||
for i in $basedir/support-files $basedir/share $basedir/share/mysql \
|
||||
$basedir/scripts $pkgdatadir . "$dirname"
|
||||
do
|
||||
if test -f $i/$file
|
||||
then
|
||||
pkgdatadir=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
sql_file="$pkgdatadir/$file"
|
||||
if test ! -f $sql_file
|
||||
then
|
||||
echo "Could not find file '$file'."
|
||||
echo "Please use --basedir to specify the directory where MySQL is installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
s_echo()
|
||||
{
|
||||
if test $sql_only = 0
|
||||
then
|
||||
echo $1
|
||||
fi
|
||||
}
|
||||
|
||||
s_echo "This script updates all the mysql privilege tables to be usable by"
|
||||
s_echo "the current version of MySQL"
|
||||
s_echo ""
|
||||
|
||||
if test $verbose = 1
|
||||
then
|
||||
s_echo "You can safely ignore all 'Duplicate column' and 'Unknown column' errors"
|
||||
s_echo "because these just mean that your tables are already up to date."
|
||||
s_echo "This script is safe to run even if your tables are already up to date!"
|
||||
s_echo ""
|
||||
fi
|
||||
|
||||
run_cmd() {
|
||||
# Password argument is added here to allow for spaces in password.
|
||||
|
||||
if test ! -z "$password"
|
||||
then
|
||||
cat $sql_file | $cmd --password="$password"
|
||||
else
|
||||
cat $sql_file | $cmd
|
||||
fi
|
||||
}
|
||||
|
||||
if test $verbose = 0
|
||||
then
|
||||
run_cmd > /dev/null 2>&1
|
||||
else
|
||||
run_cmd > /dev/null
|
||||
fi
|
||||
if test $? = 0
|
||||
then
|
||||
s_echo "done"
|
||||
else
|
||||
s_echo "Got a failure from command:"
|
||||
s_echo "cat $sql_file | $cmd"
|
||||
s_echo "Please check the above output and try again."
|
||||
if test $verbose = 0
|
||||
then
|
||||
s_echo ""
|
||||
s_echo "Running the script with the --verbose option may give you some information"
|
||||
s_echo "of what went wrong."
|
||||
fi
|
||||
s_echo ""
|
||||
s_echo "If you get an 'Access denied' error, you should run this script again and"
|
||||
s_echo "give the MySQL root user password as an argument with the --password= option"
|
||||
fi
|
@ -358,9 +358,15 @@ do
|
||||
mkdir -p $dir
|
||||
chmod 700 $dir
|
||||
fi
|
||||
if test -w / -a ! -z "$user"
|
||||
if test -n "$user"
|
||||
then
|
||||
chown $user $dir
|
||||
if test $? -ne 0
|
||||
then
|
||||
echo "Cannot change ownership of the database directories to the '$user'"
|
||||
echo "user. Check that you have the necessary permissions and try again."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
|
@ -1,3 +1,18 @@
|
||||
-- Copyright (C) 2008, 2010 Oracle and/or its affiliates. All rights reserved.
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or modify
|
||||
-- it under the terms of the GNU General Public License as published by
|
||||
-- the Free Software Foundation; version 2 of the License.
|
||||
--
|
||||
-- This program is distributed in the hope that it will be useful,
|
||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-- GNU General Public License for more details.
|
||||
--
|
||||
-- You should have received a copy of the GNU General Public License
|
||||
-- along with this program; if not, write to the Free Software
|
||||
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
--
|
||||
-- The system tables of MySQL Server
|
||||
--
|
||||
@ -28,9 +43,9 @@ CREATE TABLE IF NOT EXISTS plugin ( name varchar(64) DEFAULT '' NOT NULL, dl var
|
||||
CREATE TABLE IF NOT EXISTS servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp(14), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
|
||||
CREATE TABLE IF NOT EXISTS tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp(14), Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
|
||||
CREATE TABLE IF NOT EXISTS columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS help_topic ( help_topic_id int unsigned not null, name char(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url char(128) not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
|
||||
@ -62,7 +77,7 @@ CREATE TABLE IF NOT EXISTS time_zone_leap_second ( Transition_time bigint sign
|
||||
|
||||
CREATE TABLE IF NOT EXISTS proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum( 'CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA') DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns longblob DEFAULT '' NOT NULL, body longblob NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp, modified timestamp, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NOT_USED', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', 'PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment text collate utf8_bin NOT NULL, character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db,name,type)) engine=MyISAM character set utf8 comment='Stored Procedures';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) COLLATE utf8_general_ci DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp(14), PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
|
||||
CREATE TABLE IF NOT EXISTS procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) COLLATE utf8_general_ci DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
|
||||
|
||||
-- Create general_log if CSV is enabled.
|
||||
|
||||
@ -85,3 +100,421 @@ CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_b
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ndb_binlog_index (Position BIGINT UNSIGNED NOT NULL, File VARCHAR(255) NOT NULL, epoch BIGINT UNSIGNED NOT NULL, inserts BIGINT UNSIGNED NOT NULL, updates BIGINT UNSIGNED NOT NULL, deletes BIGINT UNSIGNED NOT NULL, schemaops BIGINT UNSIGNED NOT NULL, PRIMARY KEY(epoch)) ENGINE=MYISAM;
|
||||
|
||||
--
|
||||
-- PERFORMANCE SCHEMA INSTALLATION
|
||||
-- Note that this script is also reused by mysql_upgrade,
|
||||
-- so we have to be very careful here to not destroy any
|
||||
-- existing database named 'performance_schema' if it
|
||||
-- can contain user data.
|
||||
-- In case of downgrade, it's ok to drop unknown tables
|
||||
-- from a future version, as long as they belong to the
|
||||
-- performance schema engine.
|
||||
--
|
||||
|
||||
set @have_old_pfs= (select count(*) from information_schema.schemata where schema_name='performance_schema');
|
||||
|
||||
SET @l1="SET @broken_tables = (select count(*) from information_schema.tables";
|
||||
SET @l2=" where engine != \'PERFORMANCE_SCHEMA\' and table_schema=\'performance_schema\')";
|
||||
SET @cmd=concat(@l1,@l2);
|
||||
|
||||
-- Work around for bug#49542
|
||||
SET @str = IF(@have_old_pfs = 1, @cmd, 'SET @broken_tables = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
SET @l1="SET @broken_views = (select count(*) from information_schema.views";
|
||||
SET @l2=" where table_schema='performance_schema')";
|
||||
SET @cmd=concat(@l1,@l2);
|
||||
|
||||
-- Work around for bug#49542
|
||||
SET @str = IF(@have_old_pfs = 1, @cmd, 'SET @broken_views = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
SET @broken_routines = (select count(*) from mysql.proc where db='performance_schema');
|
||||
|
||||
SET @broken_events = (select count(*) from mysql.event where db='performance_schema');
|
||||
|
||||
SET @broken_pfs= (select @broken_tables + @broken_views + @broken_routines + @broken_events);
|
||||
|
||||
--
|
||||
-- The performance schema database.
|
||||
-- Only drop and create the database if this is safe (no broken_pfs).
|
||||
-- This database is created, even in --without-perfschema builds,
|
||||
-- so that the database name is always reserved by the MySQL implementation.
|
||||
--
|
||||
|
||||
SET @cmd= "DROP DATABASE IF EXISTS performance_schema";
|
||||
|
||||
SET @str = IF(@broken_pfs = 0, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
SET @cmd= "CREATE DATABASE performance_schema character set utf8";
|
||||
|
||||
SET @str = IF(@broken_pfs = 0, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- Unlike 'performance_schema', the 'mysql' database is reserved already,
|
||||
-- so no user procedure is supposed to be there
|
||||
--
|
||||
drop procedure if exists mysql.die;
|
||||
create procedure mysql.die() signal sqlstate 'HY000' set message_text='Unexpected content found in the performance_schema database.';
|
||||
|
||||
--
|
||||
-- For broken upgrades, SIGNAL the error
|
||||
--
|
||||
|
||||
SET @cmd="call mysql.die()";
|
||||
|
||||
SET @str = IF(@broken_pfs > 0, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
drop procedure mysql.die;
|
||||
|
||||
--
|
||||
-- From this point, only create the performance schema tables
|
||||
-- if the server is build with performance schema
|
||||
--
|
||||
|
||||
set @have_pfs= (select count(engine) from information_schema.engines where engine='PERFORMANCE_SCHEMA' and support != 'NO');
|
||||
|
||||
--
|
||||
-- TABLE COND_INSTANCES
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.COND_INSTANCES(";
|
||||
SET @l2="NAME VARCHAR(128) not null,";
|
||||
SET @l3="OBJECT_INSTANCE_BEGIN BIGINT not null";
|
||||
SET @l4=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE EVENTS_WAITS_CURRENT
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.EVENTS_WAITS_CURRENT(";
|
||||
SET @l2="THREAD_ID INTEGER not null,";
|
||||
SET @l3="EVENT_ID BIGINT unsigned not null,";
|
||||
SET @l4="EVENT_NAME VARCHAR(128) not null,";
|
||||
SET @l5="SOURCE VARCHAR(64),";
|
||||
SET @l6="TIMER_START BIGINT unsigned,";
|
||||
SET @l7="TIMER_END BIGINT unsigned,";
|
||||
SET @l8="TIMER_WAIT BIGINT unsigned,";
|
||||
SET @l9="SPINS INTEGER unsigned,";
|
||||
SET @l10="OBJECT_SCHEMA VARCHAR(64),";
|
||||
SET @l11="OBJECT_NAME VARCHAR(512),";
|
||||
SET @l12="OBJECT_TYPE VARCHAR(64),";
|
||||
SET @l13="OBJECT_INSTANCE_BEGIN BIGINT not null,";
|
||||
SET @l14="NESTING_EVENT_ID BIGINT unsigned,";
|
||||
SET @l15="OPERATION VARCHAR(16) not null,";
|
||||
SET @l16="NUMBER_OF_BYTES BIGINT unsigned,";
|
||||
SET @l17="FLAGS INTEGER unsigned";
|
||||
SET @l18=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8,@l9,@l10,@l11,@l12,@l13,@l14,@l15,@l16,@l17,@l18);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE EVENTS_WAITS_HISTORY
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.EVENTS_WAITS_HISTORY(";
|
||||
-- lines 2 to 18 are unchanged from EVENTS_WAITS_CURRENT
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8,@l9,@l10,@l11,@l12,@l13,@l14,@l15,@l16,@l17,@l18);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE EVENTS_WAITS_HISTORY_LONG
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.EVENTS_WAITS_HISTORY_LONG(";
|
||||
-- lines 2 to 18 are unchanged from EVENTS_WAITS_CURRENT
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8,@l9,@l10,@l11,@l12,@l13,@l14,@l15,@l16,@l17,@l18);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME(";
|
||||
SET @l2="EVENT_NAME VARCHAR(128) not null,";
|
||||
SET @l3="COUNT_STAR BIGINT unsigned not null,";
|
||||
SET @l4="SUM_TIMER_WAIT BIGINT unsigned not null,";
|
||||
SET @l5="MIN_TIMER_WAIT BIGINT unsigned not null,";
|
||||
SET @l6="AVG_TIMER_WAIT BIGINT unsigned not null,";
|
||||
SET @l7="MAX_TIMER_WAIT BIGINT unsigned not null";
|
||||
SET @l8=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE EVENTS_WAITS_SUMMARY_BY_INSTANCE
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE(";
|
||||
SET @l2="EVENT_NAME VARCHAR(128) not null,";
|
||||
SET @l3="OBJECT_INSTANCE_BEGIN BIGINT not null,";
|
||||
SET @l4="COUNT_STAR BIGINT unsigned not null,";
|
||||
SET @l5="SUM_TIMER_WAIT BIGINT unsigned not null,";
|
||||
SET @l6="MIN_TIMER_WAIT BIGINT unsigned not null,";
|
||||
SET @l7="AVG_TIMER_WAIT BIGINT unsigned not null,";
|
||||
SET @l8="MAX_TIMER_WAIT BIGINT unsigned not null";
|
||||
SET @l9=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8,@l9);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME(";
|
||||
SET @l2="THREAD_ID INTEGER not null,";
|
||||
SET @l3="EVENT_NAME VARCHAR(128) not null,";
|
||||
SET @l4="COUNT_STAR BIGINT unsigned not null,";
|
||||
SET @l5="SUM_TIMER_WAIT BIGINT unsigned not null,";
|
||||
SET @l6="MIN_TIMER_WAIT BIGINT unsigned not null,";
|
||||
SET @l7="AVG_TIMER_WAIT BIGINT unsigned not null,";
|
||||
SET @l8="MAX_TIMER_WAIT BIGINT unsigned not null";
|
||||
SET @l9=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8,@l9);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE FILE_INSTANCES
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.FILE_INSTANCES(";
|
||||
SET @l2="FILE_NAME VARCHAR(512) not null,";
|
||||
SET @l3="EVENT_NAME VARCHAR(128) not null,";
|
||||
SET @l4="OPEN_COUNT INTEGER unsigned not null";
|
||||
SET @l5=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE FILE_SUMMARY_BY_EVENT_NAME
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.FILE_SUMMARY_BY_EVENT_NAME(";
|
||||
SET @l2="EVENT_NAME VARCHAR(128) not null,";
|
||||
SET @l3="COUNT_READ BIGINT unsigned not null,";
|
||||
SET @l4="COUNT_WRITE BIGINT unsigned not null,";
|
||||
SET @l5="SUM_NUMBER_OF_BYTES_READ BIGINT unsigned not null,";
|
||||
SET @l6="SUM_NUMBER_OF_BYTES_WRITE BIGINT unsigned not null";
|
||||
SET @l7=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE FILE_SUMMARY_BY_INSTANCE
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.FILE_SUMMARY_BY_INSTANCE(";
|
||||
SET @l2="FILE_NAME VARCHAR(512) not null,";
|
||||
SET @l3="EVENT_NAME VARCHAR(128) not null,";
|
||||
SET @l4="COUNT_READ BIGINT unsigned not null,";
|
||||
SET @l5="COUNT_WRITE BIGINT unsigned not null,";
|
||||
SET @l6="SUM_NUMBER_OF_BYTES_READ BIGINT unsigned not null,";
|
||||
SET @l7="SUM_NUMBER_OF_BYTES_WRITE BIGINT unsigned not null";
|
||||
SET @l8=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE MUTEX_INSTANCES
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.MUTEX_INSTANCES(";
|
||||
SET @l2="NAME VARCHAR(128) not null,";
|
||||
SET @l3="OBJECT_INSTANCE_BEGIN BIGINT not null,";
|
||||
SET @l4="LOCKED_BY_THREAD_ID INTEGER";
|
||||
SET @l5=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE PERFORMANCE_TIMERS
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.PERFORMANCE_TIMERS(";
|
||||
SET @l2="TIMER_NAME ENUM ('CYCLE', 'NANOSECOND', 'MICROSECOND', 'MILLISECOND', 'TICK') not null,";
|
||||
SET @l3="TIMER_FREQUENCY BIGINT,";
|
||||
SET @l4="TIMER_RESOLUTION BIGINT,";
|
||||
SET @l5="TIMER_OVERHEAD BIGINT";
|
||||
SET @l6=") ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE PROCESSLIST
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.PROCESSLIST(";
|
||||
SET @l2="THREAD_ID INTEGER not null,";
|
||||
SET @l3="ID INTEGER not null,";
|
||||
SET @l4="NAME VARCHAR(64) not null";
|
||||
SET @l5=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE RWLOCK_INSTANCES
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.RWLOCK_INSTANCES(";
|
||||
SET @l2="NAME VARCHAR(128) not null,";
|
||||
SET @l3="OBJECT_INSTANCE_BEGIN BIGINT not null,";
|
||||
SET @l4="WRITE_LOCKED_BY_THREAD_ID INTEGER,";
|
||||
SET @l5="READ_LOCKED_BY_COUNT INTEGER unsigned not null";
|
||||
SET @l6=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE SETUP_CONSUMERS
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.SETUP_CONSUMERS(";
|
||||
SET @l2="NAME VARCHAR(64) not null,";
|
||||
SET @l3="ENABLED ENUM ('YES', 'NO') not null";
|
||||
SET @l4=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE SETUP_INSTRUMENTS
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.SETUP_INSTRUMENTS(";
|
||||
SET @l2="NAME VARCHAR(128) not null,";
|
||||
SET @l3="ENABLED ENUM ('YES', 'NO') not null,";
|
||||
SET @l4="TIMED ENUM ('YES', 'NO') not null";
|
||||
SET @l5=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE SETUP_OBJECTS
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.SETUP_OBJECTS(";
|
||||
SET @l2="OBJECT_TYPE VARCHAR(64),";
|
||||
SET @l3="OBJECT_SCHEMA VARCHAR(64),";
|
||||
SET @l4="OBJECT_NAME VARCHAR(64),";
|
||||
SET @l5="ENABLED ENUM ('YES', 'NO') not null,";
|
||||
SET @l6="TIMED ENUM ('YES', 'NO') not null,";
|
||||
SET @l7="AGGREGATED ENUM ('YES', 'NO') not null";
|
||||
SET @l8=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
--
|
||||
-- TABLE SETUP_TIMERS
|
||||
--
|
||||
|
||||
SET @l1="CREATE TABLE performance_schema.SETUP_TIMERS(";
|
||||
SET @l2="NAME VARCHAR(64) not null,";
|
||||
SET @l3="TIMER_NAME ENUM ('CYCLE', 'NANOSECOND', 'MICROSECOND', 'MILLISECOND', 'TICK') not null";
|
||||
SET @l4=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||
|
||||
SET @cmd=concat(@l1,@l2,@l3,@l4);
|
||||
|
||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||
PREPARE stmt FROM @str;
|
||||
EXECUTE stmt;
|
||||
DROP PREPARE stmt;
|
||||
|
||||
|
@ -24,6 +24,7 @@ set @current_hostname= @@hostname;
|
||||
INSERT INTO tmp_user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
|
||||
REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0 FROM dual WHERE LOWER( @current_hostname) != 'localhost';
|
||||
REPLACE INTO tmp_user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
|
||||
REPLACE INTO tmp_user VALUES ('::1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
|
||||
INSERT INTO tmp_user (host,user) VALUES ('localhost','');
|
||||
INSERT INTO tmp_user (host,user) SELECT @current_hostname,'' FROM dual WHERE LOWER(@current_hostname ) != 'localhost';
|
||||
INSERT INTO user SELECT * FROM tmp_user WHERE @had_user_table=0;
|
||||
|
@ -5,10 +5,6 @@
|
||||
# because these just mean that your tables are already up to date.
|
||||
# This script is safe to run even if your tables are already up to date!
|
||||
|
||||
# On unix, you should use the mysql_fix_privilege_tables script to execute
|
||||
# this sql script.
|
||||
# On windows you should do 'mysql --force mysql < mysql_fix_privilege_tables.sql'
|
||||
|
||||
set sql_mode='';
|
||||
set storage_engine=MyISAM;
|
||||
|
||||
@ -368,7 +364,7 @@ ALTER TABLE procs_priv
|
||||
COLLATE utf8_general_ci NOT NULL AFTER Routine_name;
|
||||
|
||||
ALTER TABLE procs_priv
|
||||
MODIFY Timestamp timestamp(14) AFTER Proc_priv;
|
||||
MODIFY Timestamp timestamp AFTER Proc_priv;
|
||||
|
||||
#
|
||||
# proc
|
||||
|
@ -59,20 +59,6 @@ sub main
|
||||
push @defaults_options, (shift @ARGV);
|
||||
}
|
||||
|
||||
# Handle deprecated --config-file option: convert to --defaults-extra-file
|
||||
foreach my $arg (@ARGV)
|
||||
{
|
||||
if ($arg =~ m/^--config-file=(.*)/)
|
||||
{
|
||||
# Put it at the beginning of the list, so it has lower precedence
|
||||
# than a correct --defaults-extra-file option
|
||||
|
||||
unshift @defaults_options, "--defaults-extra-file=$1";
|
||||
print "WARNING: --config-file is deprecated and will be removed\n";
|
||||
print "in MySQL 5.6. Please use --defaults-extra-file instead\n";
|
||||
}
|
||||
}
|
||||
|
||||
foreach (@defaults_options)
|
||||
{
|
||||
$_ = quote_shell_word($_);
|
||||
@ -81,11 +67,6 @@ sub main
|
||||
# Add [mysqld_multi] options to front of @ARGV, ready for GetOptions()
|
||||
unshift @ARGV, defaults_for_group('mysqld_multi');
|
||||
|
||||
# The --config-file option can be ignored; if passed on the command
|
||||
# line, it's already handled; if specified in the configuration file,
|
||||
# it's redundant and not useful
|
||||
@ARGV= grep { not /^--config-file=/ } @ARGV;
|
||||
|
||||
# We've already handled --no-defaults, --defaults-file, etc.
|
||||
if (!GetOptions("help", "example", "version", "mysqld=s", "mysqladmin=s",
|
||||
"user=s", "password=s", "log=s", "no-log",
|
||||
@ -742,8 +723,8 @@ from both [mysqld_multi] and [mysqld#], a group that is tried to be
|
||||
used, $my_progname will abort with an error.
|
||||
|
||||
$my_progname will search for groups named [mysqld#] from my.cnf (or
|
||||
the given --config-file=...), where '#' can be any positive integer
|
||||
starting from 1. These groups should be the same as the regular
|
||||
the given --defaults-extra-file=...), where '#' can be any positive
|
||||
integer starting from 1. These groups should be the same as the regular
|
||||
[mysqld] group, but with those port, socket and any other options
|
||||
that are to be used with each separate mysqld process. The number
|
||||
in the group name has another function; it can be used for starting,
|
||||
@ -769,7 +750,6 @@ These options must be given before any others:
|
||||
standard system-wide and user-specific files
|
||||
Using: @{[join ' ', @defaults_options]}
|
||||
|
||||
--config-file=... Deprecated, please use --defaults-extra-file instead
|
||||
--example Give an example of a config file with extra information.
|
||||
--help Print this help and exit.
|
||||
--log=... Log file. Full path to and the name for the log file. NOTE:
|
||||
|
@ -54,6 +54,8 @@ Usage: $0 [OPTIONS]
|
||||
--mysqld=FILE Use the specified file as mysqld
|
||||
--mysqld-version=VERSION Use "mysqld-VERSION" as mysqld
|
||||
--nice=NICE Set the scheduling priority of mysqld
|
||||
--plugin-dir=DIR Plugins are under DIR or DIR/VERSION, if
|
||||
VERSION is given
|
||||
--skip-kill-mysqld Don't try to kill stray mysqld processes
|
||||
--syslog Log messages to syslog with 'logger'
|
||||
--skip-syslog Log messages to error log (default)
|
||||
@ -160,12 +162,19 @@ parse_arguments() {
|
||||
fi
|
||||
|
||||
for arg do
|
||||
val=`echo "$arg" | sed -e "s;--[^=]*=;;"`
|
||||
# the parameter after "=", or the whole $arg if no match
|
||||
val=`echo "$arg" | sed -e 's;^--[^=]*=;;'`
|
||||
# what's before "=", or the whole $arg if no match
|
||||
optname=`echo "$arg" | sed -e 's/^\(--[^=]*\)=.*$/\1/'`
|
||||
# replace "_" by "-" ; mysqld_safe must accept "_" like mysqld does.
|
||||
optname_subst=`echo "$optname" | sed 's/_/-/g'`
|
||||
arg=`echo $arg | sed "s/^$optname/$optname_subst/"`
|
||||
case "$arg" in
|
||||
# these get passed explicitly to mysqld
|
||||
--basedir=*) MY_BASEDIR_VERSION="$val" ;;
|
||||
--datadir=*) DATADIR="$val" ;;
|
||||
--pid-file=*) pid_file="$val" ;;
|
||||
--plugin-dir=*) PLUGIN_DIR="$val" ;;
|
||||
--user=*) user="$val"; SET_USER=1 ;;
|
||||
|
||||
# these might have been set in a [mysqld_safe] section of my.cnf
|
||||
@ -183,6 +192,7 @@ parse_arguments() {
|
||||
if test -n "$val"
|
||||
then
|
||||
MYSQLD="mysqld-$val"
|
||||
PLUGIN_VARIANT="/$val"
|
||||
else
|
||||
MYSQLD="mysqld"
|
||||
fi
|
||||
@ -355,6 +365,9 @@ then
|
||||
if test -x "$MY_BASEDIR_VERSION/libexec/mysqld"
|
||||
then
|
||||
ledir="$MY_BASEDIR_VERSION/libexec"
|
||||
elif test -x "$MY_BASEDIR_VERSION/sbin/mysqld"
|
||||
then
|
||||
ledir="$MY_BASEDIR_VERSION/sbin"
|
||||
else
|
||||
ledir="$MY_BASEDIR_VERSION/bin"
|
||||
fi
|
||||
@ -367,6 +380,10 @@ elif test -f "$relpkgdata"/english/errmsg.sys -a -x "$MY_PWD/libexec/mysqld"
|
||||
then
|
||||
MY_BASEDIR_VERSION="$MY_PWD" # Where libexec, share and var are
|
||||
ledir="$MY_PWD/libexec" # Where mysqld is
|
||||
elif test -f "$relpkgdata"/english/errmsg.sys -a -x "$MY_PWD/sbin/mysqld"
|
||||
then
|
||||
MY_BASEDIR_VERSION="$MY_PWD" # Where sbin, share and var are
|
||||
ledir="$MY_PWD/sbin" # Where mysqld is
|
||||
# Since we didn't find anything, used the compiled-in defaults
|
||||
else
|
||||
MY_BASEDIR_VERSION='@prefix@'
|
||||
@ -682,8 +699,10 @@ fi
|
||||
|
||||
cmd="`mysqld_ld_preload_text`$NOHUP_NICENESS"
|
||||
|
||||
plugin_dir="${PLUGIN_DIR:-@pkgplugindir@}${PLUGIN_VARIANT}"
|
||||
|
||||
for i in "$ledir/$MYSQLD" "$defaults" "--basedir=$MY_BASEDIR_VERSION" \
|
||||
"--datadir=$DATADIR" "$USER_OPTION"
|
||||
"--datadir=$DATADIR" "--plugin-dir=$plugin_dir" "$USER_OPTION"
|
||||
do
|
||||
cmd="$cmd "`shell_quote_string "$i"`
|
||||
done
|
||||
|
@ -56,6 +56,8 @@ Usage: $0 db_name[./table_regex/] [new_db_name | directory]
|
||||
-h, --host=# hostname for local server when connecting over TCP/IP
|
||||
-P, --port=# port to use when connecting to local server with TCP/IP
|
||||
-S, --socket=# socket to use when connecting to local server
|
||||
--old_server connect to old MySQL-server (before v5.5) which
|
||||
doesn't have FLUSH TABLES WITH READ LOCK fully implemented.
|
||||
|
||||
--allowold don\'t abort if target dir already exists (rename it _old)
|
||||
--addtodest don\'t rename target dir if it exists, just add files to it
|
||||
@ -103,6 +105,7 @@ GetOptions( \%opt,
|
||||
"password|p=s",
|
||||
"port|P=s",
|
||||
"socket|S=s",
|
||||
"old_server",
|
||||
"allowold!",
|
||||
"keepold!",
|
||||
"addtodest!",
|
||||
@ -441,21 +444,37 @@ if ( $opt{checkpoint} || $opt{record_log_pos} ) {
|
||||
my $hc_started = time; # count from time lock is granted
|
||||
|
||||
if ( $opt{dryrun} ) {
|
||||
print "LOCK TABLES $hc_locks\n";
|
||||
print "FLUSH TABLES /*!32323 $hc_tables */\n";
|
||||
if ( $opt{old_server} ) {
|
||||
print "LOCK TABLES $hc_locks\n";
|
||||
print "FLUSH TABLES /*!32323 $hc_tables */\n";
|
||||
}
|
||||
else {
|
||||
print "FLUSH TABLES $hc_tables WITH READ LOCK\n";
|
||||
}
|
||||
|
||||
print "FLUSH LOGS\n" if ( $opt{flushlog} );
|
||||
print "RESET MASTER\n" if ( $opt{resetmaster} );
|
||||
print "RESET SLAVE\n" if ( $opt{resetslave} );
|
||||
}
|
||||
else {
|
||||
my $start = time;
|
||||
$dbh->do("LOCK TABLES $hc_locks");
|
||||
printf "Locked $num_tables tables in %d seconds.\n", time-$start unless $opt{quiet};
|
||||
$hc_started = time; # count from time lock is granted
|
||||
if ( $opt{old_server} ) {
|
||||
$dbh->do("LOCK TABLES $hc_locks");
|
||||
printf "Locked $num_tables tables in %d seconds.\n", time-$start unless $opt{quiet};
|
||||
$hc_started = time; # count from time lock is granted
|
||||
|
||||
# flush tables to make on-disk copy up to date
|
||||
$start = time;
|
||||
$dbh->do("FLUSH TABLES /*!32323 $hc_tables */");
|
||||
# flush tables to make on-disk copy up to date
|
||||
$start = time;
|
||||
$dbh->do("FLUSH TABLES /*!32323 $hc_tables */");
|
||||
}
|
||||
else {
|
||||
$dbh->do("FLUSH TABLES $hc_tables WITH READ LOCK");
|
||||
printf "Locked $num_tables tables in %d seconds.\n", time-$start unless $opt{quiet};
|
||||
$hc_started = time; # count from time lock is granted
|
||||
|
||||
# flush tables to make on-disk copy up to date
|
||||
$start = time;
|
||||
}
|
||||
printf "Flushed tables ($hc_tables) in %d seconds.\n", time-$start unless $opt{quiet};
|
||||
$dbh->do( "FLUSH LOGS" ) if ( $opt{flushlog} );
|
||||
$dbh->do( "RESET MASTER" ) if ( $opt{resetmaster} );
|
||||
@ -975,6 +994,10 @@ when using the --host option.
|
||||
|
||||
UNIX domain socket to use when connecting to local server.
|
||||
|
||||
=item --old_server
|
||||
|
||||
Use old server (pre v5.5) commands.
|
||||
|
||||
=item --noindices
|
||||
|
||||
Don\'t include index files in copy. Only up to the first 2048 bytes
|
||||
|
Reference in New Issue
Block a user