mirror of
https://github.com/MariaDB/server.git
synced 2025-01-26 16:54:15 +01:00
Merge 10.2
Signed-off-by: Daniel Black <daniel.black@au.ibm.com>
This commit is contained in:
commit
f05dfbebcc
1013 changed files with 189602 additions and 92139 deletions
.gitignore.gitmodules
BUILD
CMakeLists.txtclient
CMakeLists.txtclient_priv.hmysql.ccmysql_plugin.cmysqladmin.ccmysqlbinlog.ccmysqlcheck.cmysqldump.cmysqlimport.cmysqlshow.cmysqltest.cc
cmake
CPackRPM.cmakeFindJNI.cmakeFindJava.cmakecompile_flags.cmakecpack_rpm.cmakelibutils.cmakemake_dist.cmake.inmariadb_connector_c.cmakemisc.cmakemysql_version.cmakessl.cmake
configure.cmakedbug
debian
extra
include
CMakeLists.txtbase64.hdur_prop.hmy_base.hmy_global.hmy_handler_errors.hmy_pthread.hmy_sys.hmy_time.hmy_valgrind.h
libmariadbmysql/psi
mysql_com.hpack.hsql_common.hlibmysql
libmysqld
mysql-test
extra/rpl_tests
include
expect_crash.inchave_innodb_32k.inchave_innodb_4k.inchave_innodb_64k.inchave_innodb_8k.inchave_xtradb.combinationsmix1.incmtr_check.sqlwait_for_slave_io_error.incwait_until_connected_again.incwait_until_disconnected.inc
mysql-test-run.plr
alter_table.resultcte_recursive.resultgroup_min_max_innodb.resultindex_intersect_innodb.resultinnodb_icp.resultmerge_debug.resultmysqlbinlog_row_minimal.resultmysqld--help,win.rdiffmysqld--help.resultopenssl_1.resultopenssl_6975,tlsv10.resultopenssl_6975,tlsv12.resultorder_by_optimizer_innodb.resultpartition_innodb.resultpartition_innodb_plugin.resultrange_vs_index_merge_innodb.resultrow-checksum-old.resultrow-checksum.resultselectivity_innodb.resultssl.resultssl_8k_key.resultssl_ca.resultstat_tables_innodb.resulttype_bit_innodb.resultuserstat.resultwin.result
suite/encryption
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -3,16 +3,18 @@
|
|||
*.reject
|
||||
*.spec
|
||||
*.bak
|
||||
*.rpm
|
||||
.*.swp
|
||||
*.ninja
|
||||
.ninja_*
|
||||
.gdb_history
|
||||
errmsg.sys
|
||||
typescript
|
||||
_CPack_Packages
|
||||
CMakeCache.txt
|
||||
CMakeFiles/
|
||||
MakeFile
|
||||
install_manifest.txt
|
||||
install_manifest*.txt
|
||||
CPackConfig.cmake
|
||||
CPackSourceConfig.cmake
|
||||
CTestTestfile.cmake
|
||||
|
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "libmariadb"]
|
||||
path = libmariadb
|
||||
url = https://github.com/MariaDB/mariadb-connector-c
|
|
@ -170,7 +170,7 @@ debug_cflags="-DEXTRA_DEBUG -DSAFE_MUTEX -DSAFEMALLOC"
|
|||
error_inject="--with-error-inject "
|
||||
#
|
||||
# Base C++ flags for all builds
|
||||
base_cxxflags="-felide-constructors -fno-exceptions -fno-rtti"
|
||||
base_cxxflags="-felide-constructors -fexceptions -fno-rtti"
|
||||
#
|
||||
# Flags for optimizing builds.
|
||||
# Be as fast as we can be without losing our ability to backtrace.
|
||||
|
|
|
@ -31,6 +31,9 @@ IF(CMAKE_VERSION VERSION_EQUAL "3.0.0" OR
|
|||
CMAKE_POLICY(SET CMP0045 OLD)
|
||||
CMAKE_POLICY(SET CMP0042 OLD)
|
||||
ENDIF()
|
||||
IF(POLICY CMP0054)
|
||||
CMAKE_POLICY(SET CMP0054 NEW)
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
|
||||
|
||||
|
@ -112,6 +115,11 @@ FOREACH(_base
|
|||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
FOREACH(tool gtar tar git)
|
||||
STRING(TOUPPER ${tool} TOOL)
|
||||
FIND_PROGRAM(${TOOL}_EXECUTABLE ${tool} DOC "path to the executable")
|
||||
MARK_AS_ADVANCED(${TOOL}_EXECUTABLE)
|
||||
ENDFOREACH()
|
||||
|
||||
# Following autotools tradition, add preprocessor definitions
|
||||
# specified in environment variable CPPFLAGS
|
||||
|
@ -364,7 +372,7 @@ ADD_SUBDIRECTORY(strings)
|
|||
ADD_SUBDIRECTORY(vio)
|
||||
ADD_SUBDIRECTORY(mysys)
|
||||
ADD_SUBDIRECTORY(mysys_ssl)
|
||||
ADD_SUBDIRECTORY(libmysql)
|
||||
INCLUDE(mariadb_connector_c) # this does ADD_SUBDIRECTORY(libmariadb)
|
||||
ADD_SUBDIRECTORY(client)
|
||||
ADD_SUBDIRECTORY(extra)
|
||||
ADD_SUBDIRECTORY(libservices)
|
||||
|
|
|
@ -19,20 +19,25 @@ INCLUDE_DIRECTORIES(
|
|||
${CMAKE_SOURCE_DIR}/mysys_ssl
|
||||
${ZLIB_INCLUDE_DIR}
|
||||
${SSL_INCLUDE_DIRS}
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/strings
|
||||
${MY_READLINE_INCLUDE_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
INCLUDE_DIRECTORIES(BEFORE
|
||||
${CMAKE_BINARY_DIR}/libmariadb/include
|
||||
${CMAKE_SOURCE_DIR}/libmariadb/include)
|
||||
|
||||
## We will need libeay32.dll and ssleay32.dll when running client executables.
|
||||
COPY_OPENSSL_DLLS(copy_openssl_client)
|
||||
|
||||
SET(CLIENT_LIB mariadbclient mysys)
|
||||
|
||||
ADD_DEFINITIONS(${SSL_DEFINES})
|
||||
MYSQL_ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc
|
||||
${CMAKE_SOURCE_DIR}/sql/sql_string.cc)
|
||||
TARGET_LINK_LIBRARIES(mysql mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(mysql ${CLIENT_LIB})
|
||||
IF(UNIX)
|
||||
TARGET_LINK_LIBRARIES(mysql ${MY_READLINE_LIBRARY})
|
||||
SET_TARGET_PROPERTIES(mysql PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
|
@ -40,39 +45,40 @@ ENDIF(UNIX)
|
|||
|
||||
MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc COMPONENT Test)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqltest mysqlclient pcre pcreposix)
|
||||
TARGET_LINK_LIBRARIES(mysqltest ${CLIENT_LIB} pcre pcreposix)
|
||||
SET_TARGET_PROPERTIES(mysqltest PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(mysqlcheck ${CLIENT_LIB})
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c)
|
||||
TARGET_LINK_LIBRARIES(mysqldump mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(mysqldump ${CLIENT_LIB})
|
||||
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqlimport.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(mysqlimport ${CLIENT_LIB})
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c COMPONENT Server)
|
||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(mysql_upgrade ${CLIENT_LIB})
|
||||
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqlshow mysqlshow.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(mysqlshow ${CLIENT_LIB})
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysql_plugin mysql_plugin.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_plugin mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(mysql_plugin ${CLIENT_LIB})
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc)
|
||||
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(mysqlbinlog ${CLIENT_LIB})
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
|
||||
TARGET_LINK_LIBRARIES(mysqladmin mysqlclient)
|
||||
MYSQL_ADD_EXECUTABLE(mysqladmin mysqladmin.cc ../sql/password.c)
|
||||
TARGET_LINK_LIBRARIES(mysqladmin ${CLIENT_LIB})
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqlslap mysqlslap.c)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqlslap mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(mysqlslap ${CLIENT_LIB})
|
||||
|
||||
# "WIN32" also covers 64 bit. "echo" is used in some files below "mysql-test/".
|
||||
IF(WIN32)
|
||||
|
@ -81,10 +87,16 @@ ENDIF(WIN32)
|
|||
|
||||
# async_example is just a code example, do not install it.
|
||||
ADD_EXECUTABLE(async_example async_example.c)
|
||||
TARGET_LINK_LIBRARIES(async_example mysqlclient)
|
||||
TARGET_LINK_LIBRARIES(async_example ${CLIENT_LIB})
|
||||
|
||||
SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap mysql_plugin async_example
|
||||
PROPERTIES HAS_CXX TRUE)
|
||||
|
||||
|
||||
FOREACH(t mysql mysqltest mysqltest mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysql_plugin mysqlbinlog
|
||||
mysqladmin mysqlslap async_example)
|
||||
ADD_DEPENDENCIES(${t} GenError ${CLIENT_LIB})
|
||||
ENDFOREACH()
|
||||
|
||||
ADD_DEFINITIONS(-DHAVE_DLOPEN)
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <mysql.h>
|
||||
#include <errmsg.h>
|
||||
#include <my_getopt.h>
|
||||
#include <mysql_version.h>
|
||||
|
||||
#ifndef WEXITSTATUS
|
||||
# ifdef __WIN__
|
||||
|
|
|
@ -1143,6 +1143,9 @@ int main(int argc,char *argv[])
|
|||
|
||||
outfile[0]=0; // no (default) outfile
|
||||
strmov(pager, "stdout"); // the default, if --pager wasn't given
|
||||
|
||||
mysql_init(&mysql);
|
||||
|
||||
{
|
||||
char *tmp=getenv("PAGER");
|
||||
if (tmp && strlen(tmp))
|
||||
|
@ -1203,7 +1206,6 @@ int main(int argc,char *argv[])
|
|||
glob_buffer.realloc(512);
|
||||
completion_hash_init(&ht, 128);
|
||||
init_alloc_root(&hash_mem_root, 16384, 0, MYF(0));
|
||||
bzero((char*) &mysql, sizeof(mysql));
|
||||
if (sql_connect(current_host,current_db,current_user,opt_password,
|
||||
opt_silent))
|
||||
{
|
||||
|
@ -4641,12 +4643,13 @@ sql_real_connect(char *host,char *database,char *user,char *password,
|
|||
}
|
||||
return -1; // Retryable
|
||||
}
|
||||
|
||||
charset_info= mysql.charset;
|
||||
|
||||
charset_info= get_charset_by_name(mysql.charset->name, MYF(0));
|
||||
|
||||
|
||||
connected=1;
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
mysql.reconnect= debug_info_flag; // We want to know if this happens
|
||||
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &debug_info_flag);
|
||||
|
||||
/*
|
||||
CLIENT_PROGRESS_OBSOLETE is set only if we requested it in
|
||||
|
@ -4655,7 +4658,10 @@ sql_real_connect(char *host,char *database,char *user,char *password,
|
|||
if (mysql.client_flag & CLIENT_PROGRESS_OBSOLETE)
|
||||
mysql_options(&mysql, MYSQL_PROGRESS_CALLBACK, (void*) report_progress);
|
||||
#else
|
||||
mysql.reconnect= 1;
|
||||
{
|
||||
my_bool reconnect= 1;
|
||||
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_READLINE
|
||||
build_completion_hash(opt_rehash, 1);
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <mysql.h>
|
||||
#include <my_getopt.h>
|
||||
#include <my_dir.h>
|
||||
#include <mysql_version.h>
|
||||
|
||||
#define SHOW_VERSION "1.0.0"
|
||||
#define PRINT_VERSION do { printf("%s Ver %s Distrib %s\n", \
|
||||
|
|
|
@ -22,9 +22,10 @@
|
|||
#include <my_pthread.h> /* because of signal() */
|
||||
#include <sys/stat.h>
|
||||
#include <mysql.h>
|
||||
#include <sql_common.h>
|
||||
#include <mysql_version.h>
|
||||
#include <welcome_copyright_notice.h>
|
||||
#include <my_rnd.h>
|
||||
#include <password.h>
|
||||
|
||||
#define ADMIN_VERSION "9.1"
|
||||
#define MAX_MYSQL_VAR 512
|
||||
|
@ -440,7 +441,7 @@ int main(int argc,char *argv[])
|
|||
didn't signal for us to die. Otherwise, signal failure.
|
||||
*/
|
||||
|
||||
if (mysql.net.vio == 0)
|
||||
if (mysql.net.pvio == 0)
|
||||
{
|
||||
if (option_wait && !interrupted)
|
||||
{
|
||||
|
@ -521,7 +522,8 @@ static my_bool sql_connect(MYSQL *mysql, uint wait)
|
|||
if (mysql_real_connect(mysql,host,user,opt_password,NullS,tcp_port,
|
||||
unix_port, CLIENT_REMEMBER_OPTIONS))
|
||||
{
|
||||
mysql->reconnect= 1;
|
||||
my_bool reconnect= 1;
|
||||
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
if (info)
|
||||
{
|
||||
fputs("\n",stderr);
|
||||
|
@ -1077,9 +1079,9 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
|||
}
|
||||
}
|
||||
if (old)
|
||||
make_scrambled_password_323(crypted_pw, typed_password);
|
||||
my_make_scrambled_password_323(crypted_pw, typed_password, strlen(typed_password));
|
||||
else
|
||||
make_scrambled_password(crypted_pw, typed_password);
|
||||
my_make_scrambled_password(crypted_pw, typed_password, strlen(typed_password));
|
||||
}
|
||||
else
|
||||
crypted_pw[0]=0; /* No password */
|
||||
|
@ -1187,7 +1189,9 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
|||
break;
|
||||
}
|
||||
case ADMIN_PING:
|
||||
mysql->reconnect=0; /* We want to know of reconnects */
|
||||
{
|
||||
my_bool reconnect= 0;
|
||||
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
if (!mysql_ping(mysql))
|
||||
{
|
||||
if (option_silent < 2)
|
||||
|
@ -1197,7 +1201,8 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
|||
{
|
||||
if (mysql_errno(mysql) == CR_SERVER_GONE_ERROR)
|
||||
{
|
||||
mysql->reconnect=1;
|
||||
reconnect= 1;
|
||||
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
if (!mysql_ping(mysql))
|
||||
puts("connection was down, but mysqld is now alive");
|
||||
}
|
||||
|
@ -1208,8 +1213,10 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
|||
return -1;
|
||||
}
|
||||
}
|
||||
mysql->reconnect=1; /* Automatic reconnect is default */
|
||||
reconnect=1; /* Automatic reconnect is default */
|
||||
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
my_printf_error(0, "Unknown command: '%-.60s'", error_flags, argv[0]);
|
||||
return 1;
|
||||
|
|
|
@ -52,14 +52,18 @@
|
|||
|
||||
#include <algorithm>
|
||||
|
||||
#define my_net_write ma_net_write
|
||||
#define net_flush ma_net_flush
|
||||
#define cli_safe_read mysql_net_read_packet
|
||||
#define my_net_read ma_net_read
|
||||
extern "C" unsigned char *mysql_net_store_length(unsigned char *packet, size_t length);
|
||||
#define net_store_length mysql_net_store_length
|
||||
|
||||
Rpl_filter *binlog_filter= 0;
|
||||
|
||||
#define BIN_LOG_HEADER_SIZE 4
|
||||
#define PROBE_HEADER_LEN (EVENT_LEN_OFFSET+4)
|
||||
|
||||
|
||||
#define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | CLIENT_LOCAL_FILES)
|
||||
|
||||
/* Needed for Rpl_filter */
|
||||
CHARSET_INFO* system_charset_info= &my_charset_utf8_general_ci;
|
||||
|
||||
|
@ -1764,6 +1768,7 @@ static int parse_args(int *argc, char*** argv)
|
|||
*/
|
||||
static Exit_status safe_connect()
|
||||
{
|
||||
my_bool reconnect= 1;
|
||||
/* Close any old connections to MySQL */
|
||||
if (mysql)
|
||||
mysql_close(mysql);
|
||||
|
@ -1809,7 +1814,7 @@ static Exit_status safe_connect()
|
|||
error("Failed on connect: %s", mysql_error(mysql));
|
||||
return ERROR_STOP;
|
||||
}
|
||||
mysql->reconnect= 1;
|
||||
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
return OK_CONTINUE;
|
||||
}
|
||||
|
||||
|
@ -2843,6 +2848,8 @@ struct encryption_service_st encryption_handler=
|
|||
#include "my_decimal.h"
|
||||
#include "decimal.c"
|
||||
#include "my_decimal.cc"
|
||||
#include "../sql-common/my_time.c"
|
||||
#include "password.c"
|
||||
#include "log_event.cc"
|
||||
#include "log_event_old.cc"
|
||||
#include "rpl_utility.cc"
|
||||
|
|
|
@ -1073,6 +1073,7 @@ static void print_result()
|
|||
|
||||
static int dbConnect(char *host, char *user, char *passwd)
|
||||
{
|
||||
my_bool reconnect= 1;
|
||||
DBUG_ENTER("dbConnect");
|
||||
if (verbose > 1)
|
||||
{
|
||||
|
@ -1111,7 +1112,7 @@ static int dbConnect(char *host, char *user, char *passwd)
|
|||
DBerror(&mysql_connection, "when trying to connect");
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
mysql_connection.reconnect= 1;
|
||||
mysql_options(&mysql_connection, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
DBUG_RETURN(0);
|
||||
} /* dbConnect */
|
||||
|
||||
|
|
|
@ -1643,6 +1643,7 @@ static void maybe_exit(int error)
|
|||
static int connect_to_db(char *host, char *user,char *passwd)
|
||||
{
|
||||
char buff[20+FN_REFLEN];
|
||||
my_bool reconnect;
|
||||
DBUG_ENTER("connect_to_db");
|
||||
|
||||
verbose_msg("-- Connecting to %s...\n", host ? host : "localhost");
|
||||
|
@ -1697,7 +1698,8 @@ static int connect_to_db(char *host, char *user,char *passwd)
|
|||
As we're going to set SQL_MODE, it would be lost on reconnect, so we
|
||||
cannot reconnect.
|
||||
*/
|
||||
mysql->reconnect= 0;
|
||||
reconnect= 0;
|
||||
mysql_options(&mysql_connection, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
my_snprintf(buff, sizeof(buff), "/*!40100 SET @@SQL_MODE='%s' */",
|
||||
compatible_mode_normal_str);
|
||||
if (mysql_query_with_error_report(mysql, 0, buff))
|
||||
|
|
|
@ -420,6 +420,7 @@ static MYSQL *db_connect(char *host, char *database,
|
|||
char *user, char *passwd)
|
||||
{
|
||||
MYSQL *mysql;
|
||||
my_bool reconnect;
|
||||
if (verbose)
|
||||
fprintf(stdout, "Connecting to %s\n", host ? host : "localhost");
|
||||
if (opt_use_threads && !lock_tables)
|
||||
|
@ -475,7 +476,8 @@ static MYSQL *db_connect(char *host, char *database,
|
|||
ignore_errors=0; /* NO RETURN FROM db_error */
|
||||
db_error(mysql);
|
||||
}
|
||||
mysql->reconnect= 0;
|
||||
reconnect= 0;
|
||||
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
if (verbose)
|
||||
fprintf(stdout, "Selecting database %s\n", database);
|
||||
if (mysql_select_db(mysql, database))
|
||||
|
|
|
@ -68,6 +68,7 @@ int main(int argc, char **argv)
|
|||
my_bool first_argument_uses_wildcards=0;
|
||||
char *wild;
|
||||
MYSQL mysql;
|
||||
my_bool reconnect;
|
||||
static char **defaults_argv;
|
||||
MY_INIT(argv[0]);
|
||||
sf_leaking_memory=1; /* don't report memory leaks on early exits */
|
||||
|
@ -155,7 +156,8 @@ int main(int argc, char **argv)
|
|||
error= 1;
|
||||
goto error;
|
||||
}
|
||||
mysql.reconnect= 1;
|
||||
reconnect= 1;
|
||||
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
|
||||
switch (argc) {
|
||||
case 0: error=list_dbs(&mysql,wild); break;
|
||||
|
|
|
@ -191,6 +191,8 @@ static char global_subst_from[200];
|
|||
static char global_subst_to[200];
|
||||
static char *global_subst= NULL;
|
||||
static MEM_ROOT require_file_root;
|
||||
static const my_bool my_true= 1;
|
||||
static const my_bool my_false= 0;
|
||||
|
||||
/* Block stack */
|
||||
enum block_cmd {
|
||||
|
@ -5406,18 +5408,6 @@ static char *get_string(char **to_ptr, char **from_ptr,
|
|||
}
|
||||
|
||||
|
||||
void set_reconnect(MYSQL* mysql, my_bool val)
|
||||
{
|
||||
my_bool reconnect= val;
|
||||
DBUG_ENTER("set_reconnect");
|
||||
DBUG_PRINT("info", ("val: %d", (int) val));
|
||||
#if MYSQL_VERSION_ID < 50000
|
||||
mysql->reconnect= reconnect;
|
||||
#else
|
||||
mysql_options(mysql, MYSQL_OPT_RECONNECT, (char *)&reconnect);
|
||||
#endif
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -5502,11 +5492,7 @@ void do_close_connection(struct st_command *command)
|
|||
#ifndef EMBEDDED_LIBRARY
|
||||
if (command->type == Q_DIRTY_CLOSE)
|
||||
{
|
||||
if (con->mysql->net.vio)
|
||||
{
|
||||
vio_delete(con->mysql->net.vio);
|
||||
con->mysql->net.vio = 0;
|
||||
}
|
||||
mariadb_cancel(con->mysql);
|
||||
}
|
||||
#endif /*!EMBEDDED_LIBRARY*/
|
||||
if (con->stmt)
|
||||
|
@ -8231,10 +8217,18 @@ end:
|
|||
revert_properties();
|
||||
|
||||
/* Close the statement if reconnect, need new prepare */
|
||||
if (mysql->reconnect)
|
||||
{
|
||||
mysql_stmt_close(stmt);
|
||||
cn->stmt= NULL;
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
my_bool reconnect;
|
||||
mysql_get_option(mysql, MYSQL_OPT_RECONNECT, &reconnect);
|
||||
if (reconnect)
|
||||
#else
|
||||
if (mysql->reconnect)
|
||||
#endif
|
||||
{
|
||||
mysql_stmt_close(stmt);
|
||||
cn->stmt= NULL;
|
||||
}
|
||||
}
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
|
@ -8766,7 +8760,7 @@ static void dump_backtrace(void)
|
|||
#endif
|
||||
}
|
||||
fputs("Attempting backtrace...\n", stderr);
|
||||
my_print_stacktrace(NULL, my_thread_stack_size);
|
||||
my_print_stacktrace(NULL, (ulong)my_thread_stack_size);
|
||||
}
|
||||
|
||||
#else
|
||||
|
@ -9409,10 +9403,10 @@ int main(int argc, char **argv)
|
|||
non_blocking_api_enabled= 1;
|
||||
break;
|
||||
case Q_DISABLE_RECONNECT:
|
||||
set_reconnect(cur_con->mysql, 0);
|
||||
mysql_options(cur_con->mysql, MYSQL_OPT_RECONNECT, &my_false);
|
||||
break;
|
||||
case Q_ENABLE_RECONNECT:
|
||||
set_reconnect(cur_con->mysql, 1);
|
||||
mysql_options(cur_con->mysql, MYSQL_OPT_RECONNECT, &my_true);
|
||||
/* Close any open statements - no reconnect, need new prepare */
|
||||
close_statements();
|
||||
break;
|
||||
|
|
|
@ -2,12 +2,28 @@
|
|||
# Wrapper for CPackRPM.cmake
|
||||
#
|
||||
|
||||
macro(set_from_component WHAT)
|
||||
set(orig_CPACK_RPM_PACKAGE_${WHAT} ${CPACK_RPM_PACKAGE_${WHAT}})
|
||||
if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_${WHAT})
|
||||
set(CPACK_RPM_PACKAGE_${WHAT} ${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_${WHAT}})
|
||||
endif()
|
||||
endmacro()
|
||||
macro(restore WHAT)
|
||||
set(CPACK_RPM_PACKAGE_${WHAT} ${orig_CPACK_RPM_PACKAGE_${WHAT}})
|
||||
endmacro()
|
||||
|
||||
set_from_component(LICENSE)
|
||||
set_from_component(VENDOR)
|
||||
|
||||
# load the original CPackRPM.cmake
|
||||
set(orig_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
|
||||
unset(CMAKE_MODULE_PATH)
|
||||
include(CPackRPM)
|
||||
set(CMAKE_MODULE_PATH ${orig_CMAKE_MODULE_PATH})
|
||||
|
||||
restore(LICENSE)
|
||||
restore(VENDOR)
|
||||
|
||||
# per-component cleanup
|
||||
foreach(_RPM_SPEC_HEADER URL REQUIRES SUGGESTS PROVIDES OBSOLETES PREFIX CONFLICTS AUTOPROV AUTOREQ AUTOREQPROV)
|
||||
unset(TMP_RPM_${_RPM_SPEC_HEADER})
|
||||
|
|
8
cmake/FindJNI.cmake
Normal file
8
cmake/FindJNI.cmake
Normal file
|
@ -0,0 +1,8 @@
|
|||
if(DEFINED JAVA_AWT_LIBRARY)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(orig_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
|
||||
unset(CMAKE_MODULE_PATH)
|
||||
include(FindJNI)
|
||||
set(CMAKE_MODULE_PATH ${orig_CMAKE_MODULE_PATH})
|
8
cmake/FindJava.cmake
Normal file
8
cmake/FindJava.cmake
Normal file
|
@ -0,0 +1,8 @@
|
|||
if(DEFINED Java_JAVA_EXECUTABLE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(orig_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
|
||||
unset(CMAKE_MODULE_PATH)
|
||||
include(FindJava)
|
||||
set(CMAKE_MODULE_PATH ${orig_CMAKE_MODULE_PATH})
|
44
cmake/compile_flags.cmake
Normal file
44
cmake/compile_flags.cmake
Normal file
|
@ -0,0 +1,44 @@
|
|||
# Copyright (c) 2014, 2015, 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
## ADD_COMPILE_FLAGS(<source files> COMPILE_FLAGS <flags>)
|
||||
MACRO(ADD_COMPILE_FLAGS)
|
||||
SET(FILES "")
|
||||
SET(FLAGS "")
|
||||
SET(COMPILE_FLAGS_SEEN)
|
||||
FOREACH(ARG ${ARGV})
|
||||
IF(ARG STREQUAL "COMPILE_FLAGS")
|
||||
SET(COMPILE_FLAGS_SEEN 1)
|
||||
ELSEIF(COMPILE_FLAGS_SEEN)
|
||||
LIST(APPEND FLAGS ${ARG})
|
||||
ELSE()
|
||||
LIST(APPEND FILES ${ARG})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
FOREACH(FILE ${FILES})
|
||||
FOREACH(FLAG ${FLAGS})
|
||||
GET_SOURCE_FILE_PROPERTY(PROP ${FILE} COMPILE_FLAGS)
|
||||
IF(NOT PROP)
|
||||
SET(PROP ${FLAG})
|
||||
ELSE()
|
||||
SET(PROP "${PROP} ${FLAG}")
|
||||
ENDIF()
|
||||
SET_SOURCE_FILES_PROPERTIES(
|
||||
${FILE} PROPERTIES COMPILE_FLAGS "${PROP}"
|
||||
)
|
||||
ENDFOREACH()
|
||||
ENDFOREACH()
|
||||
ENDMACRO()
|
|
@ -48,6 +48,20 @@ MariaDB bug reports should be submitted through https://jira.mariadb.org
|
|||
|
||||
")
|
||||
|
||||
SET(CPACK_RPM_shared_PACKAGE_VENDOR "MariaDB Corporation Ab")
|
||||
SET(CPACK_RPM_shared_PACKAGE_LICENSE "LGPLv2.1")
|
||||
SET(CPACK_RPM_shared_PACKAGE_SUMMARY "LGPL MariaDB client library")
|
||||
SET(CPACK_RPM_shared_PACKAGE_DESCRIPTION "
|
||||
This is LGPL MariaDB client library that can be used to connect to MySQL
|
||||
or MariaDB.
|
||||
|
||||
This code is based on the LGPL libmysql client library from MySQL 3.23
|
||||
and PHP's mysqlnd extension.
|
||||
|
||||
This product includes PHP software, freely available from
|
||||
<http://www.php.net/software/>
|
||||
")
|
||||
|
||||
SET(CPACK_RPM_SPEC_MORE_DEFINE "
|
||||
%define mysql_vendor ${CPACK_PACKAGE_VENDOR}
|
||||
%define mysqlversion ${MYSQL_NO_DASH_VERSION}
|
||||
|
@ -108,15 +122,13 @@ ENDMACRO(SETA)
|
|||
|
||||
SETA(CPACK_RPM_client_PACKAGE_OBSOLETES
|
||||
"mysql-client"
|
||||
"MySQL-client"
|
||||
"MySQL-OurDelta-client")
|
||||
"MySQL-client")
|
||||
SETA(CPACK_RPM_client_PACKAGE_PROVIDES
|
||||
"MySQL-client"
|
||||
"mysql-client")
|
||||
|
||||
SETA(CPACK_RPM_devel_PACKAGE_OBSOLETES
|
||||
"MySQL-devel"
|
||||
"MySQL-OurDelta-devel")
|
||||
"MySQL-devel")
|
||||
SETA(CPACK_RPM_devel_PACKAGE_PROVIDES
|
||||
"MySQL-devel")
|
||||
|
||||
|
@ -125,8 +137,7 @@ SETA(CPACK_RPM_server_PACKAGE_OBSOLETES
|
|||
"MySQL"
|
||||
"mysql-server"
|
||||
"MySQL-server"
|
||||
"MariaDB-Galera-server"
|
||||
"MySQL-OurDelta-server")
|
||||
"MariaDB-Galera-server")
|
||||
SETA(CPACK_RPM_server_PACKAGE_PROVIDES
|
||||
"MariaDB"
|
||||
"MySQL"
|
||||
|
@ -134,22 +145,20 @@ SETA(CPACK_RPM_server_PACKAGE_PROVIDES
|
|||
"msqlormysql"
|
||||
"mysql-server")
|
||||
|
||||
SETA(CPACK_RPM_shared_PACKAGE_OBSOLETES
|
||||
SETA(CPACK_RPM_compat_PACKAGE_OBSOLETES
|
||||
"mysql-shared"
|
||||
"MySQL-shared-standard"
|
||||
"MySQL-shared-pro"
|
||||
"MySQL-shared-pro-cert"
|
||||
"MySQL-shared-pro-gpl"
|
||||
"MySQL-shared-pro-gpl-cert"
|
||||
"MySQL-shared"
|
||||
"MySQL-OurDelta-shared")
|
||||
SETA(CPACK_RPM_shared_PACKAGE_PROVIDES
|
||||
"MySQL-shared")
|
||||
SETA(CPACK_RPM_compat_PACKAGE_PROVIDES
|
||||
"MySQL-shared"
|
||||
"mysql-shared")
|
||||
|
||||
SETA(CPACK_RPM_test_PACKAGE_OBSOLETES
|
||||
"MySQL-test"
|
||||
"MySQL-OurDelta-test")
|
||||
"MySQL-test")
|
||||
SETA(CPACK_RPM_test_PACKAGE_PROVIDES
|
||||
"MySQL-test")
|
||||
|
||||
|
@ -169,6 +178,8 @@ SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/
|
|||
SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh)
|
||||
SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
|
||||
SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
|
||||
SET(CPACK_RPM_compat_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
|
||||
SET(CPACK_RPM_compat_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
|
||||
|
||||
MACRO(ALTERNATIVE_NAME real alt)
|
||||
SET(ver "%{version}-%{release}")
|
||||
|
@ -236,18 +247,32 @@ SETA(CPACK_RPM_test_PACKAGE_PROVIDES
|
|||
|
||||
# If we want to build build MariaDB-shared-compat,
|
||||
# extract compat libraries from MariaDB-shared-5.3 rpm
|
||||
FILE(GLOB compat_rpm RELATIVE ${CMAKE_SOURCE_DIR}
|
||||
FILE(GLOB compat53 RELATIVE ${CMAKE_SOURCE_DIR}
|
||||
"${CMAKE_SOURCE_DIR}/../MariaDB-shared-5.3.*.rpm")
|
||||
IF (compat_rpm)
|
||||
MESSAGE("Using ${compat_rpm} to build MariaDB-compat")
|
||||
INSTALL(CODE "EXECUTE_PROCESS(
|
||||
COMMAND rpm2cpio ${CMAKE_SOURCE_DIR}/${compat_rpm}
|
||||
COMMAND cpio --extract --make-directories */libmysqlclient*.so.* -
|
||||
WORKING_DIRECTORY \$ENV{DESTDIR})
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND chmod -R a+rX .
|
||||
WORKING_DIRECTORY \$ENV{DESTDIR})"
|
||||
COMPONENT Compat)
|
||||
FILE(GLOB compat101 RELATIVE ${CMAKE_SOURCE_DIR}
|
||||
"${CMAKE_SOURCE_DIR}/../MariaDB-shared-10.1.*.rpm")
|
||||
IF(compat53 AND compat101)
|
||||
FOREACH(compat_rpm "${compat53}" "${compat101}")
|
||||
MESSAGE("Using ${compat_rpm} to build MariaDB-compat")
|
||||
INSTALL(CODE "EXECUTE_PROCESS(
|
||||
COMMAND rpm2cpio ${CMAKE_SOURCE_DIR}/${compat_rpm}
|
||||
COMMAND cpio --extract --make-directories */libmysqlclient*.so.* -
|
||||
WORKING_DIRECTORY \$ENV{DESTDIR})
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND chmod -R a+rX .
|
||||
WORKING_DIRECTORY \$ENV{DESTDIR})"
|
||||
COMPONENT Compat)
|
||||
ENDFOREACH()
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND rpm -q --provides -p "${CMAKE_SOURCE_DIR}/${compat101}"
|
||||
COMMAND grep "=.*10\\.1"
|
||||
ERROR_QUIET
|
||||
OUTPUT_VARIABLE compat_provides)
|
||||
|
||||
STRING(REPLACE "\n" " " compat_provides "${compat_provides}")
|
||||
SETA(CPACK_RPM_compat_PACKAGE_PROVIDES "${compat_provides}")
|
||||
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} Compat)
|
||||
|
||||
# RHEL6/CentOS6 install Postfix by default, and it requires
|
||||
|
@ -258,10 +283,7 @@ IF (compat_rpm)
|
|||
IF(RPM MATCHES "(rhel|centos)6")
|
||||
SET(CPACK_RPM_common_PACKAGE_REQUIRES "MariaDB-compat")
|
||||
ENDIF()
|
||||
ENDIF(compat_rpm)
|
||||
|
||||
SET(CPACK_RPM_compat_PACKAGE_PROVIDES "mysql-libs = 5.3.5") # exact version doesn't matter as long as it greater than 5.1
|
||||
SET(CPACK_RPM_compat_PACKAGE_OBSOLETES "mysql-libs < 5.3.5")
|
||||
ENDIF()
|
||||
|
||||
ENDIF(RPM)
|
||||
|
||||
|
|
|
@ -58,13 +58,13 @@ IF(WIN32 OR CYGWIN OR APPLE OR WITH_PIC OR DISABLE_SHARED OR NOT CMAKE_SHARED_LI
|
|||
ENDIF()
|
||||
|
||||
INCLUDE(CMakeParseArguments)
|
||||
# CREATE_EXPORT_FILE (VAR target api_functions)
|
||||
# CREATE_EXPORTS_FILE (VAR target api_functions)
|
||||
# Internal macro, used to create source file for shared libraries that
|
||||
# otherwise consists entirely of "convenience" libraries. On Windows,
|
||||
# also exports API functions as dllexport. On unix, creates a dummy file
|
||||
# that references all exports and this prevents linker from creating an
|
||||
# empty library(there are unportable alternatives, --whole-archive)
|
||||
MACRO(CREATE_EXPORT_FILE VAR TARGET API_FUNCTIONS)
|
||||
MACRO(CREATE_EXPORTS_FILE VAR TARGET API_FUNCTIONS)
|
||||
IF(WIN32)
|
||||
SET(DUMMY ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_dummy.c)
|
||||
SET(EXPORTS ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_exports.def)
|
||||
|
@ -255,7 +255,7 @@ MACRO(MERGE_LIBRARIES)
|
|||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
CREATE_EXPORT_FILE(SRC ${TARGET} "${ARG_EXPORTS}")
|
||||
CREATE_EXPORTS_FILE(SRC ${TARGET} "${ARG_EXPORTS}")
|
||||
IF(NOT ARG_NOINSTALL)
|
||||
ADD_VERSION_INFO(${TARGET} SHARED SRC)
|
||||
ENDIF()
|
||||
|
|
|
@ -43,12 +43,12 @@ IF(GIT_EXECUTABLE)
|
|||
MESSAGE(STATUS "Running git checkout-index")
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND "${GIT_EXECUTABLE}" checkout-index --all --prefix=${PACKAGE_DIR}/
|
||||
COMMAND "${GIT_EXECUTABLE}" submodule foreach "${GIT_EXECUTABLE} checkout-index --all --prefix=${PACKAGE_DIR}/$path/"
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE RESULT
|
||||
)
|
||||
|
||||
IF(NOT RESULT EQUAL 0)
|
||||
SET(GIT_EXECUTABLE)
|
||||
SET(GIT_EXECUTABLE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
|
54
cmake/mariadb_connector_c.cmake
Normal file
54
cmake/mariadb_connector_c.cmake
Normal file
|
@ -0,0 +1,54 @@
|
|||
IF(NOT EXISTS ${CMAKE_SOURCE_DIR}/libmariadb/CMakeLists.txt AND GIT_EXECUTABLE)
|
||||
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule init
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
||||
EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" submodule update
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
||||
ENDIF()
|
||||
IF(NOT EXISTS ${CMAKE_SOURCE_DIR}/libmariadb/CMakeLists.txt)
|
||||
MESSAGE(FATAL_ERROR "No MariaDB Connector/C! Run
|
||||
git submodule init
|
||||
git submodule update
|
||||
Then restart the build.
|
||||
")
|
||||
ENDIF()
|
||||
|
||||
SET(OPT CONC_)
|
||||
|
||||
IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
SET(CONC_WITH_RTC ON)
|
||||
ENDIF()
|
||||
|
||||
SET(CONC_WITH_SIGNCODE ${SIGNCODE})
|
||||
SET(SIGN_OPTIONS ${SIGNTOOL_PARAMETERS})
|
||||
|
||||
IF(TARGET zlib)
|
||||
GET_PROPERTY(ZLIB_LIBRARY_LOCATION TARGET zlib PROPERTY LOCATION)
|
||||
ELSE()
|
||||
SET(ZLIB_LIBRARY_LOCATION ${ZLIB_LIBRARY})
|
||||
ENDIF()
|
||||
|
||||
IF(SSL_DEFINES MATCHES "YASSL")
|
||||
IF(WIN32)
|
||||
SET(CONC_WITH_SSL "SCHANNEL")
|
||||
ELSE()
|
||||
SET(CONC_WITH_SSL "GNUTLS") # that's what debian wants, right?
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(CONC_WITH_SSL "OPENSSL")
|
||||
SET(OPENSSL_FOUND TRUE)
|
||||
ENDIF()
|
||||
|
||||
SET(CONC_WITH_CURL OFF)
|
||||
SET(CONC_WITH_MYSQLCOMPAT ON)
|
||||
|
||||
IF (INSTALL_LAYOUT STREQUAL "RPM")
|
||||
SET(CONC_INSTALL_LAYOUT "RPM")
|
||||
ELSE()
|
||||
SET(CONC_INSTALL_LAYOUT "DEFAULT")
|
||||
ENDIF()
|
||||
|
||||
SET(PLUGIN_INSTALL_DIR ${INSTALL_PLUGINDIR})
|
||||
SET(MARIADB_UNIX_ADDR ${MYSQL_UNIX_ADDR})
|
||||
|
||||
MESSAGE("== Configuring MariaDB Connector/C")
|
||||
ADD_SUBDIRECTORY(libmariadb)
|
|
@ -1,6 +1,13 @@
|
|||
FUNCTION(MESSAGE_ONCE id out)
|
||||
IF(NOT __msg1_${id} STREQUAL "${out}")
|
||||
IF ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_LESS "2.8.7")
|
||||
FUNCTION(MESSAGE_ONCE id out)
|
||||
MESSAGE(STATUS "${out}")
|
||||
ENDIF()
|
||||
SET(__msg1_${id} "${out}" CACHE INTERNAL "")
|
||||
ENDFUNCTION()
|
||||
ENDFUNCTION()
|
||||
ELSE()
|
||||
FUNCTION(MESSAGE_ONCE id out)
|
||||
STRING(MD5 hash "${out}")
|
||||
IF(NOT __msg1_${id} STREQUAL "${hash}")
|
||||
MESSAGE(STATUS "${out}")
|
||||
ENDIF()
|
||||
SET(__msg1_${id} ${hash} CACHE INTERNAL "")
|
||||
ENDFUNCTION()
|
||||
ENDIF()
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
# Global constants, only to be changed between major releases.
|
||||
#
|
||||
|
||||
SET(SHARED_LIB_MAJOR_VERSION "18")
|
||||
SET(SHARED_LIB_MAJOR_VERSION "19")
|
||||
SET(PROTOCOL_VERSION "10")
|
||||
SET(DOT_FRM_VERSION "6")
|
||||
|
||||
|
|
|
@ -111,9 +111,9 @@ MACRO (MYSQL_CHECK_SSL)
|
|||
UNSET(OPENSSL_APPLINK_C)
|
||||
UNSET(OPENSSL_APPLINK_C CACHE)
|
||||
ENDIF()
|
||||
IF (OPENSSL_LIBRARIES)
|
||||
UNSET(OPENSSL_LIBRARIES)
|
||||
UNSET(OPENSSL_LIBRARIES CACHE)
|
||||
IF (OPENSSL_SSL_LIBRARY)
|
||||
UNSET(OPENSSL_SSL_LIBRARY)
|
||||
UNSET(OPENSSL_SSL_LIBRARY CACHE)
|
||||
ENDIF()
|
||||
ELSEIF(WITH_SSL STREQUAL "system" OR
|
||||
WITH_SSL STREQUAL "yes" OR
|
||||
|
@ -149,13 +149,13 @@ MACRO (MYSQL_CHECK_SSL)
|
|||
IF (WITH_SSL_PATH)
|
||||
LIST(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
|
||||
ENDIF()
|
||||
FIND_LIBRARY(OPENSSL_LIBRARIES
|
||||
FIND_LIBRARY(OPENSSL_SSL_LIBRARY
|
||||
NAMES ssl ssleay32 ssleay32MD
|
||||
HINTS ${OPENSSL_ROOT_DIR}/lib)
|
||||
FIND_LIBRARY(CRYPTO_LIBRARY
|
||||
FIND_LIBRARY(OPENSSL_CRYPTO_LIBRARY
|
||||
NAMES crypto libeay32
|
||||
HINTS ${OPENSSL_ROOT_DIR}/lib)
|
||||
MARK_AS_ADVANCED(CRYPTO_LIBRARY OPENSSL_LIBRARIES OPENSSL_ROOT_DIR
|
||||
MARK_AS_ADVANCED(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY OPENSSL_ROOT_DIR
|
||||
OPENSSL_INCLUDE_DIR)
|
||||
IF (WITH_SSL_PATH)
|
||||
LIST(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
|
||||
|
@ -166,10 +166,10 @@ MACRO (MYSQL_CHECK_SSL)
|
|||
CHECK_SYMBOL_EXISTS(SHA512_DIGEST_LENGTH "openssl/sha.h"
|
||||
HAVE_SHA512_DIGEST_LENGTH)
|
||||
SET(CMAKE_REQUIRED_INCLUDES)
|
||||
IF(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES AND
|
||||
CRYPTO_LIBRARY AND HAVE_SHA512_DIGEST_LENGTH)
|
||||
IF(OPENSSL_INCLUDE_DIR AND OPENSSL_SSL_LIBRARY AND
|
||||
OPENSSL_CRYPTO_LIBRARY AND HAVE_SHA512_DIGEST_LENGTH)
|
||||
SET(SSL_SOURCES "")
|
||||
SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES} ${CRYPTO_LIBRARY})
|
||||
SET(SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||
SET(SSL_LIBRARIES ${SSL_LIBRARIES} ${LIBSOCKET})
|
||||
ENDIF()
|
||||
|
@ -181,17 +181,16 @@ MACRO (MYSQL_CHECK_SSL)
|
|||
# #define OPENSSL_VERSION_NUMBER 0x1000103fL
|
||||
# Encoded as MNNFFPPS: major minor fix patch status
|
||||
FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h"
|
||||
OPENSSL_VERSION_NUMBER
|
||||
REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*"
|
||||
)
|
||||
OPENSSL_VERSION_TEXT
|
||||
REGEX "^# *define[\t ]+OPENSSL_VERSION_TEXT[\t ]+")
|
||||
STRING(REGEX REPLACE
|
||||
"^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1"
|
||||
OPENSSL_MAJOR_VERSION "${OPENSSL_VERSION_NUMBER}"
|
||||
)
|
||||
"^.*OPENSSL_VERSION_TEXT[\t ]+\"OpenSSL ([-0-9a-z.]+).*$" "\\1"
|
||||
OPENSSL_VERSION "${OPENSSL_VERSION_TEXT}")
|
||||
|
||||
MESSAGE_ONCE(OPENSSL_INCLUDE_DIR "OPENSSL_INCLUDE_DIR = ${OPENSSL_INCLUDE_DIR}")
|
||||
MESSAGE_ONCE(OPENSSL_LIBRARIES "OPENSSL_LIBRARIES = ${OPENSSL_LIBRARIES}")
|
||||
MESSAGE_ONCE(CRYPTO_LIBRARY "CRYPTO_LIBRARY = ${CRYPTO_LIBRARY}")
|
||||
MESSAGE_ONCE(OPENSSL_MAJOR_VERSION "OPENSSL_MAJOR_VERSION = ${OPENSSL_MAJOR_VERSION}")
|
||||
MESSAGE_ONCE(OPENSSL_SSL_LIBRARY "OPENSSL_SSL_LIBRARY = ${OPENSSL_SSL_LIBRARY}")
|
||||
MESSAGE_ONCE(OPENSSL_CRYPTO_LIBRARY "OPENSSL_CRYPTO_LIBRARY = ${OPENSSL_CRYPTO_LIBRARY}")
|
||||
MESSAGE_ONCE(OPENSSL_VERSION "OPENSSL_VERSION = ${OPENSSL_VERSION}")
|
||||
MESSAGE_ONCE(SSL_LIBRARIES "SSL_LIBRARIES = ${SSL_LIBRARIES}")
|
||||
SET(SSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR})
|
||||
SET(SSL_INTERNAL_INCLUDE_DIRS "")
|
||||
|
@ -225,8 +224,8 @@ ENDMACRO()
|
|||
# So we should be linking static versions of the libraries.
|
||||
MACRO (COPY_OPENSSL_DLLS target_name)
|
||||
IF (WIN32 AND WITH_SSL_PATH)
|
||||
GET_FILENAME_COMPONENT(CRYPTO_NAME "${CRYPTO_LIBRARY}" NAME_WE)
|
||||
GET_FILENAME_COMPONENT(OPENSSL_NAME "${OPENSSL_LIBRARIES}" NAME_WE)
|
||||
GET_FILENAME_COMPONENT(CRYPTO_NAME "${OPENSSL_CRYPTO_LIBRARY}" NAME_WE)
|
||||
GET_FILENAME_COMPONENT(OPENSSL_NAME "${OPENSSL_SSL_LIBRARY}" NAME_WE)
|
||||
FILE(GLOB HAVE_CRYPTO_DLL "${WITH_SSL_PATH}/bin/${CRYPTO_NAME}.dll")
|
||||
FILE(GLOB HAVE_OPENSSL_DLL "${WITH_SSL_PATH}/bin/${OPENSSL_NAME}.dll")
|
||||
IF (HAVE_CRYPTO_DLL AND HAVE_OPENSSL_DLL)
|
||||
|
|
|
@ -56,7 +56,7 @@ IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
|||
# MySQL "canonical" GCC flags. At least -fno-rtti flag affects
|
||||
# ABI and cannot be simply removed.
|
||||
SET(CMAKE_CXX_FLAGS
|
||||
"${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
|
||||
"${CMAKE_CXX_FLAGS} -fno-rtti")
|
||||
|
||||
IF (CMAKE_EXE_LINKER_FLAGS MATCHES " -static "
|
||||
OR CMAKE_EXE_LINKER_FLAGS MATCHES " -static$")
|
||||
|
|
|
@ -58,13 +58,13 @@ IF(NOT WIN32 AND NOT CMAKE_GENERATOR MATCHES Xcode)
|
|||
ADD_CUSTOM_COMMAND(OUTPUT user.ps
|
||||
DEPENDS user.r ${OUTPUT_INC} ${SOURCE_INC}
|
||||
COMMAND ${GROFF} -mm ${CMAKE_CURRENT_SOURCE_DIR}/user.r > user.ps || touch user.ps)
|
||||
ADD_CUSTOM_TARGET(ps ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/user.ps)
|
||||
ADD_CUSTOM_TARGET(user.ps ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/user.ps)
|
||||
ENDIF(GROFF)
|
||||
IF(NROFF)
|
||||
ADD_CUSTOM_COMMAND(OUTPUT user.t
|
||||
DEPENDS user.r ${OUTPUT_INC} ${SOURCE_INC}
|
||||
COMMAND ${NROFF} -mm ${CMAKE_CURRENT_SOURCE_DIR}/user.r > user.t || touch user.t)
|
||||
ADD_CUSTOM_TARGET(t ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/user.t)
|
||||
ADD_CUSTOM_TARGET(user.t ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/user.t)
|
||||
ENDIF(NROFF)
|
||||
|
||||
ENDIF()
|
||||
|
|
4
debian/libmariadbclient-dev.files
vendored
4
debian/libmariadbclient-dev.files
vendored
|
@ -1,7 +1,7 @@
|
|||
usr/bin/mysql_config
|
||||
usr/include/mysql
|
||||
usr/lib/libmysqlclient.a
|
||||
usr/lib/libmysqlclient_r.a
|
||||
usr/include/mariadb
|
||||
usr/lib/mariadb/libmariadbclient.a
|
||||
usr/lib/libmysqlservices.a
|
||||
usr/share/aclocal/mysql.m4
|
||||
usr/share/pkgconfig/mariadb.pc
|
||||
|
|
2
debian/libmariadbclient18.files
vendored
2
debian/libmariadbclient18.files
vendored
|
@ -1,3 +1,3 @@
|
|||
usr/lib/libmysqlclient*.so.*
|
||||
usr/lib/mariadb/libmariadb.so.*
|
||||
usr/lib/mysql/plugin/mysql_clear_password.so
|
||||
usr/lib/mysql/plugin/dialog.so
|
||||
|
|
1
debian/mariadb-server-10.2.files.in
vendored
1
debian/mariadb-server-10.2.files.in
vendored
|
@ -5,7 +5,6 @@ usr/lib/mysql/plugin/ha_archive.so
|
|||
usr/lib/mysql/plugin/ha_blackhole.so
|
||||
usr/lib/mysql/plugin/ha_federated.so
|
||||
usr/lib/mysql/plugin/ha_federatedx.so
|
||||
usr/lib/mysql/plugin/ha_innodb.so
|
||||
usr/lib/mysql/plugin/ha_mroonga.so
|
||||
usr/lib/mysql/plugin/ha_sphinx.so
|
||||
usr/lib/mysql/plugin/handlersocket.so
|
||||
|
|
|
@ -77,7 +77,9 @@ IF(WITH_INNOBASE_STORAGE_ENGINE OR WITH_XTRADB_STORAGE_ENGINE)
|
|||
../storage/innobase/buf/buf0checksum.cc
|
||||
../storage/innobase/ut/ut0crc32.cc
|
||||
../storage/innobase/ut/ut0ut.cc
|
||||
../storage/innobase/buf/buf0buf.cc
|
||||
../storage/innobase/page/page0zip.cc
|
||||
../storage/innobase/os/os0file.cc
|
||||
)
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -25,6 +25,7 @@ SET(HEADERS
|
|||
mysql.h
|
||||
mysql_com.h
|
||||
mysql_com_server.h
|
||||
pack.h
|
||||
my_byteorder.h
|
||||
byte_order_generic.h
|
||||
byte_order_generic_x86.h
|
||||
|
|
|
@ -22,34 +22,34 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
/*
|
||||
Calculate how much memory needed for dst of base64_encode()
|
||||
Calculate how much memory needed for dst of my_base64_encode()
|
||||
*/
|
||||
int base64_needed_encoded_length(int length_of_data);
|
||||
int my_base64_needed_encoded_length(int length_of_data);
|
||||
|
||||
/*
|
||||
Maximum length base64_encode_needed_length() can accept with no overflow.
|
||||
Maximum length my_base64_encode_needed_length() can accept with no overflow.
|
||||
*/
|
||||
int base64_encode_max_arg_length(void);
|
||||
int my_base64_encode_max_arg_length(void);
|
||||
|
||||
/*
|
||||
Calculate how much memory needed for dst of base64_decode()
|
||||
Calculate how much memory needed for dst of my_base64_decode()
|
||||
*/
|
||||
int base64_needed_decoded_length(int length_of_encoded_data);
|
||||
int my_base64_needed_decoded_length(int length_of_encoded_data);
|
||||
|
||||
/*
|
||||
Maximum length base64_decode_needed_length() can accept with no overflow.
|
||||
Maximum length my_base64_decode_needed_length() can accept with no overflow.
|
||||
*/
|
||||
int base64_decode_max_arg_length();
|
||||
int my_base64_decode_max_arg_length();
|
||||
|
||||
/*
|
||||
Encode data as a base64 string
|
||||
*/
|
||||
int base64_encode(const void *src, size_t src_len, char *dst);
|
||||
int my_base64_encode(const void *src, size_t src_len, char *dst);
|
||||
|
||||
/*
|
||||
Decode a base64 string into data
|
||||
*/
|
||||
int base64_decode(const char *src, size_t src_len,
|
||||
int my_base64_decode(const char *src, size_t src_len,
|
||||
void *dst, const char **end_ptr, int flags);
|
||||
|
||||
/* Allow multuple chunks 'AAA= AA== AA==', binlog uses this */
|
||||
|
|
32
include/dur_prop.h
Normal file
32
include/dur_prop.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
/* Copyright (c) 2013, 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
#ifndef _my_dur_prop_h
|
||||
#define _my_dur_prop_h
|
||||
|
||||
enum durability_properties
|
||||
{
|
||||
/*
|
||||
Preserves the durability properties defined by the engine
|
||||
*/
|
||||
HA_REGULAR_DURABILITY= 0,
|
||||
/*
|
||||
Ignore the durability properties defined by the engine and
|
||||
write only in-memory entries.
|
||||
*/
|
||||
HA_IGNORE_DURABILITY= 1
|
||||
};
|
||||
|
||||
#endif /* _my_dur_prop_h */
|
|
@ -497,13 +497,19 @@ enum ha_base_keytype {
|
|||
#define HA_ERR_DISK_FULL 189
|
||||
#define HA_ERR_INCOMPATIBLE_DEFINITION 190
|
||||
#define HA_ERR_FTS_TOO_MANY_WORDS_IN_PHRASE 191 /* Too many words in a phrase */
|
||||
#define HA_ERR_DECRYPTION_FAILED 192 /* Table encrypted but
|
||||
decypt failed */
|
||||
#define HA_ERR_LAST 192 /* Copy of last error nr */
|
||||
#define HA_ERR_DECRYPTION_FAILED 192 /* Table encrypted but decypt failed */
|
||||
#define HA_ERR_FK_DEPTH_EXCEEDED 193 /* FK cascade depth exceeded */
|
||||
#define HA_ERR_TABLESPACE_MISSING 194 /* Missing Tablespace */
|
||||
#define HA_ERR_LAST 194 /* Copy of last error nr * */
|
||||
|
||||
/* Number of different errors */
|
||||
#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)
|
||||
|
||||
/* aliases */
|
||||
#define HA_ERR_TABLE_CORRUPT HA_ERR_WRONG_IN_RECORD
|
||||
#define HA_ERR_QUERY_INTERRUPTED HA_ERR_ABORTED_BY_USER
|
||||
#define HA_ERR_NOT_ALLOWED_COMMAND HA_ERR_WRONG_COMMAND
|
||||
|
||||
/* Other constants */
|
||||
|
||||
#define HA_NAMELEN 64 /* Max length of saved filename */
|
||||
|
@ -632,17 +638,4 @@ C_MODE_START
|
|||
typedef void (* invalidator_by_filename)(const char * filename);
|
||||
C_MODE_END
|
||||
|
||||
|
||||
enum durability_properties
|
||||
{
|
||||
/*
|
||||
Preserves the durability properties defined by the engine */
|
||||
HA_REGULAR_DURABILITY= 0,
|
||||
/*
|
||||
Ignore the durability properties defined by the engine and
|
||||
write only in-memory entries.
|
||||
*/
|
||||
HA_IGNORE_DURABILITY= 1
|
||||
};
|
||||
|
||||
#endif /* _my_base_h */
|
||||
|
|
|
@ -817,6 +817,7 @@ static inline bool isfinite(double x) { return std::isfinite(x); }
|
|||
#ifndef HAVE_ISNAN
|
||||
#define isnan(x) ((x) != (x))
|
||||
#endif
|
||||
#define my_isnan(x) isnan(x)
|
||||
|
||||
#ifdef HAVE_ISINF
|
||||
#define my_isinf(X) isinf(X)
|
||||
|
@ -1250,4 +1251,13 @@ static inline double rint(double x)
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#define FLOATING_POINT_DECIMALS 31
|
||||
|
||||
/* Keep client compatible with earlier versions */
|
||||
#ifdef MYSQL_SERVER
|
||||
#define NOT_FIXED_DEC DECIMAL_NOT_SPECIFIED
|
||||
#else
|
||||
#define NOT_FIXED_DEC FLOATING_POINT_DECIMALS
|
||||
#endif
|
||||
|
||||
#endif /* my_global_h */
|
||||
|
|
|
@ -23,16 +23,18 @@
|
|||
|
||||
static const char *handler_error_messages[]=
|
||||
{
|
||||
/* 120 */
|
||||
"Didn't find key on read or update",
|
||||
"Duplicate key on write or update",
|
||||
"Internal (unspecified) error in handler",
|
||||
"Someone has changed the row since it was read (while the table was locked to prevent it)",
|
||||
"Wrong index given to function",
|
||||
"Undefined handler error 125",
|
||||
"Index file is crashed",
|
||||
"Record file is crashed",
|
||||
"Index is corrupted",
|
||||
"Table file is corrupted",
|
||||
"Out of memory in engine",
|
||||
"Undefined handler error 129",
|
||||
/* 130 */
|
||||
"Incorrect file format",
|
||||
"Command not supported by database",
|
||||
"Old database file",
|
||||
|
@ -43,6 +45,7 @@ static const char *handler_error_messages[]=
|
|||
"No more records (read after end of file)",
|
||||
"Unsupported extension used for table",
|
||||
"Too big row",
|
||||
/* 140 */
|
||||
"Wrong create options",
|
||||
"Duplicate unique key or constraint on write or update",
|
||||
"Unknown character set used in table",
|
||||
|
@ -53,6 +56,7 @@ static const char *handler_error_messages[]=
|
|||
"Lock table is full; Restart program with a larger lock table",
|
||||
"Updates are not allowed under a read only transactions",
|
||||
"Lock deadlock; Retry transaction",
|
||||
/* 150 */
|
||||
"Foreign key constraint is incorrectly formed",
|
||||
"Cannot add a child row",
|
||||
"Cannot delete a parent row",
|
||||
|
@ -63,6 +67,7 @@ static const char *handler_error_messages[]=
|
|||
"Could not connect to storage engine",
|
||||
"Unexpected null pointer found when using spatial index",
|
||||
"The table changed in storage engine",
|
||||
/* 160 */
|
||||
"There's no partition in table for the given value",
|
||||
"Row-based binary logging of row failed",
|
||||
"Index needed in foreign key constraint",
|
||||
|
@ -73,6 +78,7 @@ static const char *handler_error_messages[]=
|
|||
"Failed to set row auto increment value",
|
||||
"Unknown (generic) error from engine",
|
||||
"Record was not update. Original values was same as new values",
|
||||
/* 170 */
|
||||
"It is not possible to log this statement",
|
||||
"The event was corrupt, leading to illegal data being read",
|
||||
"The table is of a new format not supported by this version",
|
||||
|
@ -83,6 +89,7 @@ static const char *handler_error_messages[]=
|
|||
"Too many active concurrent transactions",
|
||||
"Record not matching the given partition set",
|
||||
"Index column length exceeds limit",
|
||||
/* 180 */
|
||||
"Index corrupted",
|
||||
"Undo record too big",
|
||||
"Invalid InnoDB FTS Doc ID",
|
||||
|
@ -93,9 +100,12 @@ static const char *handler_error_messages[]=
|
|||
"Row is not visible by the current transaction",
|
||||
"Operation was interrupted by end user (probably kill command?)",
|
||||
"Disk full",
|
||||
/* 190 */
|
||||
"Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump and restore the table to fix this",
|
||||
"Too many words in a FTS phrase or proximity search",
|
||||
"Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match."
|
||||
"Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.",
|
||||
"Foreign key cascade delete/update exceeds max depth",
|
||||
"Tablespace is missing for table"
|
||||
};
|
||||
|
||||
#endif /* MYSYS_MY_HANDLER_ERRORS_INCLUDED */
|
||||
|
|
|
@ -266,7 +266,7 @@ struct tm *gmtime_r(const time_t *clock, struct tm *res);
|
|||
#undef pthread_detach_this_thread
|
||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); }
|
||||
#else /* HAVE_PTHREAD_ATTR_CREATE && !HAVE_SIGWAIT */
|
||||
#define HAVE_PTHREAD_KILL
|
||||
#define HAVE_PTHREAD_KILL 1
|
||||
#endif
|
||||
|
||||
#endif /* defined(__WIN__) */
|
||||
|
|
|
@ -1019,6 +1019,7 @@ extern void add_compiled_collation(struct charset_info_st *cs);
|
|||
extern size_t escape_string_for_mysql(CHARSET_INFO *charset_info,
|
||||
char *to, size_t to_length,
|
||||
const char *from, size_t length);
|
||||
extern char *get_tty_password(const char *opt_message);
|
||||
#ifdef __WIN__
|
||||
#define BACKSLASH_MBTAIL
|
||||
/* File system character set */
|
||||
|
|
|
@ -171,6 +171,10 @@ static inline my_bool validate_timestamp_range(const MYSQL_TIME *t)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/* Can't include mysqld_error.h, it needs mysys to build, thus hardcode 2 error values here. */
|
||||
#define ER_WARN_DATA_OUT_OF_RANGE 1264
|
||||
#define ER_WARN_INVALID_TIMESTAMP 1299
|
||||
|
||||
my_time_t
|
||||
my_system_gmt_sec(const MYSQL_TIME *t, long *my_timezone, uint *error_code);
|
||||
|
||||
|
|
|
@ -41,3 +41,5 @@
|
|||
#define TRASH_FREE(A,B) TRASH_FILL(A,B,0x8F)
|
||||
#define TRASH(A,B) TRASH_FREE(A,B)
|
||||
|
||||
# define DBUG_ASSERT_DEFINED(x) \
|
||||
DBUG_ASSERT(!VALGRIND_CHECK_MEM_IS_DEFINED(&(x), sizeof(x)))
|
||||
|
|
147
include/mysql/psi/psi_base.h
Normal file
147
include/mysql/psi/psi_base.h
Normal file
|
@ -0,0 +1,147 @@
|
|||
/* Copyright (c) 2008, 2015, 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,
|
||||
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||
|
||||
#ifndef MYSQL_PSI_BASE_H
|
||||
#define MYSQL_PSI_BASE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
@file mysql/psi/psi_base.h
|
||||
Performance schema instrumentation interface.
|
||||
|
||||
@defgroup Instrumentation_interface Instrumentation Interface
|
||||
@ingroup Performance_schema
|
||||
@{
|
||||
*/
|
||||
|
||||
#define PSI_INSTRUMENT_ME 0
|
||||
|
||||
#define PSI_NOT_INSTRUMENTED 0
|
||||
|
||||
/**
|
||||
Global flag.
|
||||
This flag indicate that an instrumentation point is a global variable,
|
||||
or a singleton.
|
||||
*/
|
||||
#define PSI_FLAG_GLOBAL (1 << 0)
|
||||
|
||||
/**
|
||||
Mutable flag.
|
||||
This flag indicate that an instrumentation point is a general placeholder,
|
||||
that can mutate into a more specific instrumentation point.
|
||||
*/
|
||||
#define PSI_FLAG_MUTABLE (1 << 1)
|
||||
|
||||
#define PSI_FLAG_THREAD (1 << 2)
|
||||
|
||||
/**
|
||||
Stage progress flag.
|
||||
This flag apply to the stage instruments only.
|
||||
It indicates the instrumentation provides progress data.
|
||||
*/
|
||||
#define PSI_FLAG_STAGE_PROGRESS (1 << 3)
|
||||
|
||||
/**
|
||||
Shared Exclusive flag.
|
||||
Indicates that rwlock support the shared exclusive state.
|
||||
*/
|
||||
#define PSI_RWLOCK_FLAG_SX (1 << 4)
|
||||
|
||||
/**
|
||||
Transferable flag.
|
||||
This flag indicate that an instrumented object can
|
||||
be created by a thread and destroyed by another thread.
|
||||
*/
|
||||
#define PSI_FLAG_TRANSFER (1 << 5)
|
||||
|
||||
#ifdef HAVE_PSI_INTERFACE
|
||||
|
||||
/**
|
||||
@def PSI_VERSION_1
|
||||
Performance Schema Interface number for version 1.
|
||||
This version is supported.
|
||||
*/
|
||||
#define PSI_VERSION_1 1
|
||||
|
||||
/**
|
||||
@def PSI_VERSION_2
|
||||
Performance Schema Interface number for version 2.
|
||||
This version is not implemented, it's a placeholder.
|
||||
*/
|
||||
#define PSI_VERSION_2 2
|
||||
|
||||
/**
|
||||
@def PSI_CURRENT_VERSION
|
||||
Performance Schema Interface number for the most recent version.
|
||||
The most current version is @c PSI_VERSION_1
|
||||
*/
|
||||
#define PSI_CURRENT_VERSION 1
|
||||
|
||||
/**
|
||||
@def USE_PSI_1
|
||||
Define USE_PSI_1 to use the interface version 1.
|
||||
*/
|
||||
|
||||
/**
|
||||
@def USE_PSI_2
|
||||
Define USE_PSI_2 to use the interface version 2.
|
||||
*/
|
||||
|
||||
/**
|
||||
@def HAVE_PSI_1
|
||||
Define HAVE_PSI_1 if the interface version 1 needs to be compiled in.
|
||||
*/
|
||||
|
||||
/**
|
||||
@def HAVE_PSI_2
|
||||
Define HAVE_PSI_2 if the interface version 2 needs to be compiled in.
|
||||
*/
|
||||
|
||||
#ifndef USE_PSI_2
|
||||
#ifndef USE_PSI_1
|
||||
#define USE_PSI_1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef USE_PSI_1
|
||||
#define HAVE_PSI_1
|
||||
#endif
|
||||
|
||||
#ifdef USE_PSI_2
|
||||
#define HAVE_PSI_2
|
||||
#endif
|
||||
|
||||
/*
|
||||
Allow to override PSI_XXX_CALL at compile time
|
||||
with more efficient implementations, if available.
|
||||
If nothing better is available,
|
||||
make a dynamic call using the PSI_server function pointer.
|
||||
*/
|
||||
|
||||
#define PSI_DYNAMIC_CALL(M) PSI_server->M
|
||||
|
||||
#endif /* HAVE_PSI_INTERFACE */
|
||||
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* MYSQL_PSI_BASE_H */
|
||||
|
155
include/mysql/psi/psi_memory.h
Normal file
155
include/mysql/psi/psi_memory.h
Normal file
|
@ -0,0 +1,155 @@
|
|||
/* Copyright (c) 2013, 2015, 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,
|
||||
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||
|
||||
#ifndef MYSQL_PSI_MEMORY_H
|
||||
#define MYSQL_PSI_MEMORY_H
|
||||
|
||||
#include "psi_base.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
@file mysql/psi/psi_memory.h
|
||||
Performance schema instrumentation interface.
|
||||
|
||||
@defgroup Instrumentation_interface Instrumentation Interface
|
||||
@ingroup Performance_schema
|
||||
@{
|
||||
*/
|
||||
|
||||
#ifdef HAVE_PSI_INTERFACE
|
||||
#ifndef DISABLE_ALL_PSI
|
||||
#ifndef DISABLE_PSI_MEMORY
|
||||
#define HAVE_PSI_MEMORY_INTERFACE
|
||||
#endif /* DISABLE_PSI_MEMORY */
|
||||
#endif /* DISABLE_ALL_PSI */
|
||||
#endif /* HAVE_PSI_INTERFACE */
|
||||
|
||||
struct PSI_thread;
|
||||
|
||||
/**
|
||||
Instrumented memory key.
|
||||
To instrument memory, a memory key must be obtained using @c register_memory.
|
||||
Using a zero key always disable the instrumentation.
|
||||
*/
|
||||
typedef unsigned int PSI_memory_key;
|
||||
|
||||
#ifdef HAVE_PSI_1
|
||||
|
||||
/**
|
||||
@defgroup Group_PSI_v1 Application Binary Interface, version 1
|
||||
@ingroup Instrumentation_interface
|
||||
@{
|
||||
*/
|
||||
|
||||
/**
|
||||
Memory instrument information.
|
||||
@since PSI_VERSION_1
|
||||
This structure is used to register instrumented memory.
|
||||
*/
|
||||
struct PSI_memory_info_v1
|
||||
{
|
||||
/** Pointer to the key assigned to the registered memory. */
|
||||
PSI_memory_key *m_key;
|
||||
/** The name of the memory instrument to register. */
|
||||
const char *m_name;
|
||||
/**
|
||||
The flags of the socket instrument to register.
|
||||
@sa PSI_FLAG_GLOBAL
|
||||
*/
|
||||
int m_flags;
|
||||
};
|
||||
typedef struct PSI_memory_info_v1 PSI_memory_info_v1;
|
||||
|
||||
/**
|
||||
Memory registration API.
|
||||
@param category a category name (typically a plugin name)
|
||||
@param info an array of memory info to register
|
||||
@param count the size of the info array
|
||||
*/
|
||||
typedef void (*register_memory_v1_t)
|
||||
(const char *category, struct PSI_memory_info_v1 *info, int count);
|
||||
|
||||
/**
|
||||
Instrument memory allocation.
|
||||
@param key the memory instrument key
|
||||
@param size the size of memory allocated
|
||||
@param[out] owner the memory owner
|
||||
@return the effective memory instrument key
|
||||
*/
|
||||
typedef PSI_memory_key (*memory_alloc_v1_t)
|
||||
(PSI_memory_key key, size_t size, struct PSI_thread ** owner);
|
||||
|
||||
/**
|
||||
Instrument memory re allocation.
|
||||
@param key the memory instrument key
|
||||
@param old_size the size of memory previously allocated
|
||||
@param new_size the size of memory re allocated
|
||||
@param[in, out] owner the memory owner
|
||||
@return the effective memory instrument key
|
||||
*/
|
||||
typedef PSI_memory_key (*memory_realloc_v1_t)
|
||||
(PSI_memory_key key, size_t old_size, size_t new_size, struct PSI_thread ** owner);
|
||||
|
||||
/**
|
||||
Instrument memory claim.
|
||||
@param key the memory instrument key
|
||||
@param size the size of memory allocated
|
||||
@param[in, out] owner the memory owner
|
||||
@return the effective memory instrument key
|
||||
*/
|
||||
typedef PSI_memory_key (*memory_claim_v1_t)
|
||||
(PSI_memory_key key, size_t size, struct PSI_thread ** owner);
|
||||
|
||||
/**
|
||||
Instrument memory free.
|
||||
@param key the memory instrument key
|
||||
@param size the size of memory allocated
|
||||
@param owner the memory owner
|
||||
*/
|
||||
typedef void (*memory_free_v1_t)
|
||||
(PSI_memory_key key, size_t size, struct PSI_thread * owner);
|
||||
|
||||
/** @} (end of group Group_PSI_v1) */
|
||||
|
||||
#endif /* HAVE_PSI_1 */
|
||||
|
||||
#ifdef HAVE_PSI_2
|
||||
struct PSI_memory_info_v2
|
||||
{
|
||||
int placeholder;
|
||||
};
|
||||
|
||||
#endif /* HAVE_PSI_2 */
|
||||
|
||||
#ifdef USE_PSI_1
|
||||
typedef struct PSI_memory_info_v1 PSI_memory_info;
|
||||
#endif
|
||||
|
||||
#ifdef USE_PSI_2
|
||||
typedef struct PSI_memory_info_v2 PSI_memory_info;
|
||||
#endif
|
||||
|
||||
/** @} (end of group Instrumentation_interface) */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* MYSQL_PSI_MEMORY_H */
|
||||
|
|
@ -680,12 +680,7 @@ my_bool my_thread_init(void);
|
|||
void my_thread_end(void);
|
||||
|
||||
#ifdef MY_GLOBAL_INCLUDED
|
||||
ulong STDCALL net_field_length(uchar **packet);
|
||||
my_ulonglong net_field_length_ll(uchar **packet);
|
||||
my_ulonglong safe_net_field_length_ll(uchar **packet, size_t packet_len);
|
||||
uchar *net_store_length(uchar *pkg, ulonglong length);
|
||||
uchar *safe_net_store_length(uchar *pkg, size_t pkg_len, ulonglong length);
|
||||
unsigned int net_length_size(ulonglong num);
|
||||
#include "pack.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -702,12 +697,5 @@ unsigned int net_length_size(ulonglong num);
|
|||
decimals
|
||||
*/
|
||||
|
||||
#define FLOATING_POINT_DECIMALS 31
|
||||
|
||||
/* Keep client compatible with earlier versions */
|
||||
#ifdef MYSQL_SERVER
|
||||
#define NOT_FIXED_DEC DECIMAL_NOT_SPECIFIED
|
||||
#else
|
||||
#define NOT_FIXED_DEC FLOATING_POINT_DECIMALS
|
||||
#endif
|
||||
#endif
|
||||
|
|
29
include/pack.h
Normal file
29
include/pack.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
/* Copyright (c) 2016, MariaDB
|
||||
|
||||
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 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
ulong net_field_length(uchar **packet);
|
||||
my_ulonglong net_field_length_ll(uchar **packet);
|
||||
my_ulonglong safe_net_field_length_ll(uchar **packet, size_t packet_len);
|
||||
uchar *net_store_length(uchar *pkg, ulonglong length);
|
||||
uchar *safe_net_store_length(uchar *pkg, size_t pkg_len, ulonglong length);
|
||||
unsigned int net_length_size(ulonglong num);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -77,9 +77,13 @@ typedef struct st_mysql_methods
|
|||
#endif
|
||||
} MYSQL_METHODS;
|
||||
|
||||
#ifdef LIBMARIADB
|
||||
#define simple_command(mysql, command, arg, length, skip_check) ma_simple_command(mysql, command, (char *)arg, length, skip_check, NULL)
|
||||
#else
|
||||
#define simple_command(mysql, command, arg, length, skip_check) \
|
||||
(*(mysql)->methods->advanced_command)(mysql, command, 0, \
|
||||
0, arg, length, skip_check, NULL)
|
||||
#endif
|
||||
#define stmt_command(mysql, command, arg, length, stmt) \
|
||||
(*(mysql)->methods->advanced_command)(mysql, command, 0, \
|
||||
0, arg, length, 1, stmt)
|
||||
|
@ -109,8 +113,9 @@ void set_mysql_extended_error(MYSQL *mysql, int errcode, const char *sqlstate,
|
|||
const char *format, ...);
|
||||
|
||||
/* client side of the pluggable authentication */
|
||||
struct st_vio;
|
||||
struct st_plugin_vio_info;
|
||||
void mpvio_info(Vio *vio, struct st_plugin_vio_info *info);
|
||||
void mpvio_info(struct st_vio *vio, struct st_plugin_vio_info *info);
|
||||
int run_plugin_auth(MYSQL *mysql, char *data, uint data_len,
|
||||
const char *data_plugin, const char *db);
|
||||
int mysql_client_plugin_init();
|
||||
|
|
1
libmariadb
Submodule
1
libmariadb
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 63bdcec64372006b872273d5249068ab044b3f72
|
|
@ -1,524 +0,0 @@
|
|||
# Copyright (c) 2006, 2013, Oracle and/or its affiliates.
|
||||
# Copyright (c) 2009, 2013, SkySQL 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
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${PCRE_INCLUDES}
|
||||
${CMAKE_SOURCE_DIR}/strings
|
||||
${SSL_INCLUDE_DIRS}
|
||||
${SSL_INTERNAL_INCLUDE_DIRS}
|
||||
${ZLIB_INCLUDE_DIR})
|
||||
ADD_DEFINITIONS(${SSL_DEFINES})
|
||||
|
||||
SET(CLIENT_API_FUNCTIONS_5_1
|
||||
get_tty_password
|
||||
mysql_thread_end
|
||||
mysql_thread_init
|
||||
myodbc_remove_escape
|
||||
mysql_affected_rows
|
||||
mysql_autocommit
|
||||
mysql_stmt_bind_param
|
||||
mysql_stmt_bind_result
|
||||
mysql_change_user
|
||||
mysql_character_set_name
|
||||
mysql_close
|
||||
mysql_commit
|
||||
mysql_data_seek
|
||||
mysql_debug
|
||||
mysql_dump_debug_info
|
||||
mysql_eof
|
||||
mysql_errno
|
||||
mysql_error
|
||||
mysql_escape_string
|
||||
mysql_hex_string
|
||||
mysql_stmt_execute
|
||||
mysql_stmt_fetch
|
||||
mysql_stmt_fetch_column
|
||||
mysql_fetch_field
|
||||
mysql_fetch_field_direct
|
||||
mysql_fetch_fields
|
||||
mysql_fetch_lengths
|
||||
mysql_fetch_row
|
||||
mysql_field_count
|
||||
mysql_field_seek
|
||||
mysql_field_tell
|
||||
mysql_free_result
|
||||
mysql_get_parameters
|
||||
mysql_get_client_info
|
||||
mysql_get_host_info
|
||||
mysql_get_proto_info
|
||||
mysql_get_server_info
|
||||
mysql_get_client_version
|
||||
mysql_get_ssl_cipher
|
||||
mysql_info
|
||||
mysql_init
|
||||
mysql_insert_id
|
||||
mysql_kill
|
||||
mysql_set_server_option
|
||||
mysql_list_dbs
|
||||
mysql_list_fields
|
||||
mysql_list_processes
|
||||
mysql_list_tables
|
||||
mysql_more_results
|
||||
mysql_next_result
|
||||
mysql_num_fields
|
||||
mysql_num_rows
|
||||
mysql_options
|
||||
mysql_stmt_param_count
|
||||
mysql_stmt_param_metadata
|
||||
mysql_ping
|
||||
mysql_stmt_result_metadata
|
||||
mysql_query
|
||||
mysql_read_query_result
|
||||
mysql_real_connect
|
||||
mysql_real_escape_string
|
||||
mysql_real_query
|
||||
mysql_refresh
|
||||
mysql_rollback
|
||||
mysql_row_seek
|
||||
mysql_row_tell
|
||||
mysql_select_db
|
||||
mysql_stmt_send_long_data
|
||||
mysql_send_query
|
||||
mysql_shutdown
|
||||
mysql_ssl_set
|
||||
mysql_stat
|
||||
mysql_stmt_affected_rows
|
||||
mysql_stmt_close
|
||||
mysql_stmt_reset
|
||||
mysql_stmt_data_seek
|
||||
mysql_stmt_errno
|
||||
mysql_stmt_error
|
||||
mysql_stmt_free_result
|
||||
mysql_stmt_num_rows
|
||||
mysql_stmt_row_seek
|
||||
mysql_stmt_row_tell
|
||||
mysql_stmt_store_result
|
||||
mysql_store_result
|
||||
mysql_thread_id
|
||||
mysql_thread_safe
|
||||
mysql_use_result
|
||||
mysql_warning_count
|
||||
mysql_stmt_sqlstate
|
||||
mysql_sqlstate
|
||||
mysql_get_server_version
|
||||
mysql_stmt_prepare
|
||||
mysql_stmt_init
|
||||
mysql_stmt_insert_id
|
||||
mysql_stmt_attr_get
|
||||
mysql_stmt_attr_set
|
||||
mysql_stmt_field_count
|
||||
mysql_set_local_infile_default
|
||||
mysql_set_local_infile_handler
|
||||
mysql_embedded
|
||||
mysql_server_init
|
||||
mysql_server_end
|
||||
mysql_set_character_set
|
||||
mysql_get_character_set_info
|
||||
# These are documented in Paul DuBois' MySQL book,
|
||||
# so we treat them as part of the de-facto API.
|
||||
handle_options
|
||||
load_defaults
|
||||
free_defaults
|
||||
my_print_help
|
||||
)
|
||||
|
||||
SET(CLIENT_API_FUNCTIONS_5_5
|
||||
my_progname
|
||||
mysql_stmt_next_result
|
||||
# Charsets
|
||||
my_charset_bin
|
||||
my_charset_latin1
|
||||
my_charset_utf8_general_ci
|
||||
# Client plugins
|
||||
mysql_client_find_plugin
|
||||
mysql_client_register_plugin
|
||||
mysql_load_plugin
|
||||
mysql_load_plugin_v
|
||||
mysql_plugin_options
|
||||
# Async API
|
||||
mysql_get_timeout_value
|
||||
mysql_get_timeout_value_ms
|
||||
mysql_get_socket
|
||||
mysql_autocommit_cont
|
||||
mysql_autocommit_start
|
||||
mysql_change_user_cont
|
||||
mysql_change_user_start
|
||||
mysql_close_cont
|
||||
mysql_close_start
|
||||
mysql_commit_cont
|
||||
mysql_commit_start
|
||||
mysql_dump_debug_info_cont
|
||||
mysql_dump_debug_info_start
|
||||
mysql_fetch_row_cont
|
||||
mysql_fetch_row_start
|
||||
mysql_free_result_cont
|
||||
mysql_free_result_start
|
||||
mysql_kill_cont
|
||||
mysql_kill_start
|
||||
mysql_list_dbs_cont
|
||||
mysql_list_dbs_start
|
||||
mysql_list_fields_cont
|
||||
mysql_list_fields_start
|
||||
mysql_list_processes_cont
|
||||
mysql_list_processes_start
|
||||
mysql_list_tables_cont
|
||||
mysql_list_tables_start
|
||||
mysql_next_result_cont
|
||||
mysql_next_result_start
|
||||
mysql_ping_cont
|
||||
mysql_ping_start
|
||||
mysql_query_cont
|
||||
mysql_query_start
|
||||
mysql_read_query_result_cont
|
||||
mysql_read_query_result_start
|
||||
mysql_real_connect_cont
|
||||
mysql_real_connect_start
|
||||
mysql_real_query_cont
|
||||
mysql_real_query_start
|
||||
mysql_refresh_cont
|
||||
mysql_refresh_start
|
||||
mysql_rollback_cont
|
||||
mysql_rollback_start
|
||||
mysql_select_db_cont
|
||||
mysql_select_db_start
|
||||
mysql_send_query_cont
|
||||
mysql_send_query_start
|
||||
mysql_set_character_set_cont
|
||||
mysql_set_character_set_start
|
||||
mysql_set_server_option_cont
|
||||
mysql_set_server_option_start
|
||||
mysql_shutdown_cont
|
||||
mysql_shutdown_start
|
||||
mysql_stat_cont
|
||||
mysql_stat_start
|
||||
mysql_stmt_close_cont
|
||||
mysql_stmt_close_start
|
||||
mysql_stmt_execute_cont
|
||||
mysql_stmt_execute_start
|
||||
mysql_stmt_fetch_cont
|
||||
mysql_stmt_fetch_start
|
||||
mysql_stmt_free_result_cont
|
||||
mysql_stmt_free_result_start
|
||||
mysql_stmt_next_result_cont
|
||||
mysql_stmt_next_result_start
|
||||
mysql_stmt_prepare_cont
|
||||
mysql_stmt_prepare_start
|
||||
mysql_stmt_reset_cont
|
||||
mysql_stmt_reset_start
|
||||
mysql_stmt_send_long_data_cont
|
||||
mysql_stmt_send_long_data_start
|
||||
mysql_stmt_store_result_cont
|
||||
mysql_stmt_store_result_start
|
||||
mysql_store_result_cont
|
||||
mysql_store_result_start
|
||||
#dynamic columns api
|
||||
dynamic_column_create
|
||||
dynamic_column_create_many
|
||||
dynamic_column_update
|
||||
dynamic_column_update_many
|
||||
dynamic_column_exists
|
||||
dynamic_column_list
|
||||
dynamic_column_get
|
||||
dynamic_column_prepare_decimal
|
||||
mariadb_dyncol_create_many_num
|
||||
mariadb_dyncol_create_many_named
|
||||
mariadb_dyncol_update_many_num
|
||||
mariadb_dyncol_update_many_named
|
||||
mariadb_dyncol_exists_num
|
||||
mariadb_dyncol_exists_named
|
||||
mariadb_dyncol_free
|
||||
mariadb_dyncol_list_num
|
||||
mariadb_dyncol_list_named
|
||||
mariadb_dyncol_get_num
|
||||
mariadb_dyncol_get_named
|
||||
mariadb_dyncol_has_names
|
||||
mariadb_dyncol_check
|
||||
mariadb_dyncol_json
|
||||
mariadb_dyncol_val_str
|
||||
mariadb_dyncol_val_long
|
||||
mariadb_dyncol_val_double
|
||||
mariadb_dyncol_unpack
|
||||
mariadb_dyncol_unpack_free
|
||||
mariadb_dyncol_column_cmp_named
|
||||
mariadb_dyncol_column_count
|
||||
mariadb_dyncol_prepare_decimal
|
||||
#
|
||||
mariadb_deinitialize_ssl
|
||||
# low-level API to MySQL protocol
|
||||
mysql_net_read_packet
|
||||
mysql_net_field_length
|
||||
# Added in MariaDB-10.0 to stay compatible with MySQL-5.6, yuck!
|
||||
mysql_options4
|
||||
)
|
||||
|
||||
SET(CLIENT_API_FUNCTIONS
|
||||
${CLIENT_API_FUNCTIONS_5_1}
|
||||
${CLIENT_API_FUNCTIONS_5_5}
|
||||
CACHE INTERNAL
|
||||
"Client functions"
|
||||
)
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
IF (NOT DISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING)
|
||||
|
||||
INCLUDE (CheckCSourceCompiles)
|
||||
FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.ld"
|
||||
"VERSION {\nlibmysqlclient_18 {\nglobal: *;\n};\n}\n")
|
||||
SET(CMAKE_REQUIRED_LIBRARIES "-Wl,src.ld")
|
||||
CHECK_C_SOURCE_COMPILES("int main() { return 0; }"
|
||||
SUPPORTS_VERSION_IN_LINK_SCRIPT)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES)
|
||||
|
||||
IF (NOT SUPPORTS_VERSION_IN_LINK_SCRIPT)
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=16895
|
||||
MESSAGE(SEND_ERROR "Your current linker does not support VERSION "
|
||||
"command in linker scripts like a GNU ld or any compatible linker "
|
||||
"should. Perhaps you're using gold? Either switch to GNU ld compatible "
|
||||
"linker or run cmake with -DDISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING=TRUE "
|
||||
"to be able to complete the build")
|
||||
ENDIF (NOT SUPPORTS_VERSION_IN_LINK_SCRIPT)
|
||||
|
||||
# When building RPM, or DEB package on Debian, use ELF symbol versioning
|
||||
# for compatibility with distribution packages, so client shared library can
|
||||
# painlessly replace the one supplied by the distribution.
|
||||
|
||||
# Also list of exported symbols in distributions may differ from what is
|
||||
# considered official API. Define CLIENT_API_5_1_EXTRA for the set of
|
||||
# symbols, that required to be exported on different platforms.
|
||||
|
||||
# Fedora & Co declared following functions as part of API
|
||||
SET(CLIENT_API_5_1_EXTRA
|
||||
# why does Fedora export these?
|
||||
_fini
|
||||
_init
|
||||
my_init
|
||||
|
||||
# mysql-connector-odbc requires these
|
||||
mysql_default_charset_info
|
||||
mysql_get_charset
|
||||
mysql_get_charset_by_csname
|
||||
mysql_net_realloc
|
||||
|
||||
# PHP's mysqli.so requires this (via the ER() macro)
|
||||
mysql_client_errors
|
||||
|
||||
# Also export the non-renamed variants
|
||||
# (in case someone wants to rebuild mysqli-php or something similar)
|
||||
# See MDEV-4127
|
||||
default_charset_info
|
||||
get_charset
|
||||
get_charset_by_csname
|
||||
net_realloc
|
||||
client_errors
|
||||
|
||||
# pure-ftpd requires this
|
||||
my_make_scrambled_password
|
||||
|
||||
# hydra requires this
|
||||
scramble
|
||||
|
||||
# ODB requires this: https://bugzilla.redhat.com/show_bug.cgi?id=846602
|
||||
THR_KEY_mysys
|
||||
|
||||
# DBD::mysql requires this
|
||||
is_prefix
|
||||
)
|
||||
|
||||
|
||||
# And even more so on Debian
|
||||
SET(CLIENT_API_5_5_EXTRA
|
||||
# libmyodbc. Argh!
|
||||
alloc_dynamic
|
||||
alloc_root
|
||||
delete_dynamic
|
||||
dynstr_append
|
||||
dynstr_append_mem
|
||||
dynstr_append_os_quoted
|
||||
dynstr_free
|
||||
dynstr_realloc
|
||||
free_root
|
||||
get_dynamic
|
||||
init_dynamic_array2
|
||||
init_dynamic_string
|
||||
int2str
|
||||
list_add
|
||||
list_delete
|
||||
my_end
|
||||
my_free
|
||||
my_malloc
|
||||
my_memdup
|
||||
my_realloc
|
||||
my_strdup
|
||||
set_dynamic
|
||||
strdup_root
|
||||
strend
|
||||
strfill
|
||||
strmake
|
||||
strmake_root
|
||||
strxmov
|
||||
|
||||
# pam_mysql.so
|
||||
make_scrambled_password
|
||||
make_scrambled_password_323
|
||||
)
|
||||
|
||||
# Generate version script.
|
||||
# Create semicolon separated lists of functions to export from
|
||||
# Since RPM packages use separate versioning for 5.1 API
|
||||
# and 5.5 API (libmysqlclient_16 vs libmysqlclient_18),
|
||||
# we need 2 lists.
|
||||
SET (VERSION_HEADER
|
||||
"VERSION {
|
||||
libmysqlclient_18 {
|
||||
global:")
|
||||
SET (VERSION_FOOTER
|
||||
" local:
|
||||
*;
|
||||
};
|
||||
|
||||
libmysqlclient_16 {
|
||||
/* empty here. aliases are added above */
|
||||
};
|
||||
}
|
||||
")
|
||||
|
||||
SET (CLIENT_API_5_1_LIST)
|
||||
SET (CLIENT_API_5_1_ALIASES)
|
||||
FOREACH (f ${CLIENT_API_FUNCTIONS_5_1} ${CLIENT_API_5_1_EXTRA})
|
||||
SET(CLIENT_API_5_1_LIST "${CLIENT_API_5_1_LIST}\t${f};\n")
|
||||
SET(CLIENT_API_5_1_ALIASES "${CLIENT_API_5_1_ALIASES}\"${f}@libmysqlclient_16\" = ${f};\n")
|
||||
ENDFOREACH()
|
||||
|
||||
SET (CLIENT_API_5_5_LIST)
|
||||
FOREACH (f ${CLIENT_API_FUNCTIONS_5_5} ${CLIENT_API_5_5_EXTRA})
|
||||
SET(CLIENT_API_5_5_LIST "${CLIENT_API_5_5_LIST}\t${f};\n")
|
||||
ENDFOREACH()
|
||||
|
||||
ELSE (NOT DISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING)
|
||||
SET (CLIENT_API_5_1_ALIASES "/* Versioning disabled per user request. MDEV-5982 */")
|
||||
ENDIF (NOT DISABLE_LIBMYSQLCLIENT_SYMBOL_VERSIONING)
|
||||
|
||||
# Linker script to version symbols in Fedora- and Debian- compatible way, MDEV-5529
|
||||
SET(VERSION_SCRIPT_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/libmysql_versions.ld.in)
|
||||
|
||||
CONFIGURE_FILE(
|
||||
${VERSION_SCRIPT_TEMPLATE}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld
|
||||
@ONLY
|
||||
)
|
||||
SET(VERSION_SCRIPT_LINK_FLAGS
|
||||
"-Wl,${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld")
|
||||
|
||||
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
|
||||
|
||||
SET(CLIENT_SOURCES
|
||||
get_password.c
|
||||
libmysql.c
|
||||
errmsg.c
|
||||
../sql-common/client.c
|
||||
../sql-common/mysql_async.c
|
||||
../sql-common/my_time.c
|
||||
../sql-common/client_plugin.c
|
||||
../sql/net_serv.cc
|
||||
../sql-common/pack.c
|
||||
../sql/password.c
|
||||
${CLIENT_SOURCES_EXTRA}
|
||||
)
|
||||
ADD_CONVENIENCE_LIBRARY(clientlib ${CLIENT_SOURCES})
|
||||
DTRACE_INSTRUMENT(clientlib)
|
||||
ADD_DEPENDENCIES(clientlib GenError)
|
||||
|
||||
SET(LIBS clientlib dbug strings vio mysys mysys_ssl ${ZLIB_LIBRARY} ${SSL_LIBRARIES} ${LIBDL} ${CRC32_VPMSUM_LIBRARY})
|
||||
|
||||
# Merge several convenience libraries into one big mysqlclient
|
||||
# and link them together into shared library.
|
||||
MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development)
|
||||
|
||||
# Visual Studio users need debug static library for debug projects
|
||||
IF(MSVC)
|
||||
INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug)
|
||||
INSTALL_DEBUG_TARGET(clientlib DESTINATION ${INSTALL_LIBDIR}/debug)
|
||||
ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
MACRO(GET_VERSIONED_LIBNAME LIBNAME EXTENSION VERSION OUTNAME)
|
||||
SET(DOT_VERSION ".${VERSION}")
|
||||
IF(DOT_VERSION STREQUAL ".")
|
||||
SET(DOT_VERSION "")
|
||||
ENDIF()
|
||||
IF(APPLE)
|
||||
SET(${OUTNAME} ${LIBNAME}${DOT_VERSION}${EXTENSION})
|
||||
ELSE()
|
||||
SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION})
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR} Development)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT DISABLE_SHARED)
|
||||
MERGE_LIBRARIES(libmysql SHARED ${LIBS}
|
||||
EXPORTS ${CLIENT_API_FUNCTIONS} ${CLIENT_API_5_1_EXTRA} ${CLIENT_API_5_5_EXTRA}
|
||||
COMPONENT SharedLibraries)
|
||||
IF(UNIX)
|
||||
# libtool compatability
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
|
||||
SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}")
|
||||
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
|
||||
SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0")
|
||||
ELSE()
|
||||
SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0")
|
||||
ENDIF()
|
||||
# Name of shared library is mysqlclient on Unix
|
||||
SET_TARGET_PROPERTIES(libmysql PROPERTIES
|
||||
OUTPUT_NAME mysqlclient
|
||||
VERSION "${OS_SHARED_LIB_VERSION}"
|
||||
SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
|
||||
IF(LINK_FLAG_NO_UNDEFINED OR VERSION_SCRIPT_LINK_FLAGS)
|
||||
GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
|
||||
IF(NOT libmysql_link_flags)
|
||||
# Avoid libmysql_link_flags-NOTFOUND
|
||||
SET(libmysql_link_flags)
|
||||
ENDIF()
|
||||
SET_TARGET_PROPERTIES(libmysql PROPERTIES LINK_FLAGS
|
||||
"${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED} ${VERSION_SCRIPT_LINK_FLAGS}")
|
||||
ENDIF()
|
||||
# clean direct output needs to be set several targets have the same name
|
||||
#(mysqlclient in this case)
|
||||
SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
|
||||
# Install links to libmysqlclient.so (client_r)
|
||||
GET_VERSIONED_LIBNAME(
|
||||
"${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r"
|
||||
"${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
||||
""
|
||||
linkname)
|
||||
INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries)
|
||||
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} SharedLibraries)
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
ENDIF()
|
|
@ -1,227 +0,0 @@
|
|||
/* Copyright (c) 2000, 2011, 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.
|
||||
|
||||
There are special exceptions to the terms and conditions of the GPL as it
|
||||
is applied to this software.
|
||||
|
||||
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 */
|
||||
|
||||
/*
|
||||
** Ask for a password from tty
|
||||
** This is an own file to avoid conflicts with curses
|
||||
*/
|
||||
#include <my_global.h>
|
||||
#include <my_sys.h>
|
||||
#include "mysql.h"
|
||||
#include <m_string.h>
|
||||
#include <m_ctype.h>
|
||||
|
||||
#ifdef HAVE_GETPASS
|
||||
#ifdef HAVE_PWD_H
|
||||
#include <pwd.h>
|
||||
#endif /* HAVE_PWD_H */
|
||||
#else /* ! HAVE_GETPASS */
|
||||
#if !defined(__WIN__)
|
||||
#include <sys/ioctl.h>
|
||||
#ifdef HAVE_TERMIOS_H /* For tty-password */
|
||||
#include <termios.h>
|
||||
#define TERMIO struct termios
|
||||
#else
|
||||
#ifdef HAVE_TERMIO_H /* For tty-password */
|
||||
#include <termio.h>
|
||||
#define TERMIO struct termio
|
||||
#else
|
||||
#include <sgtty.h>
|
||||
#define TERMIO struct sgttyb
|
||||
#endif
|
||||
#endif
|
||||
#ifdef alpha_linux_port
|
||||
#include <asm/ioctls.h>
|
||||
#include <asm/termiobits.h>
|
||||
#endif
|
||||
#else
|
||||
#include <conio.h>
|
||||
#endif /* __WIN__ */
|
||||
#endif /* HAVE_GETPASS */
|
||||
|
||||
#ifdef HAVE_GETPASSPHRASE /* For Solaris */
|
||||
#define getpass(A) getpassphrase(A)
|
||||
#endif
|
||||
|
||||
#if defined(__WIN__)
|
||||
/* were just going to fake it here and get input from the keyboard */
|
||||
void get_tty_password_buff(const char *opt_message, char *to, size_t length)
|
||||
{
|
||||
HANDLE consoleinput;
|
||||
DWORD oldstate;
|
||||
char *pos=to,*end=to+length-1;
|
||||
int i=0;
|
||||
|
||||
consoleinput= CreateFile("CONIN$", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ ,
|
||||
NULL, OPEN_EXISTING, 0, NULL);
|
||||
if (consoleinput == NULL || consoleinput == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
/* This is a GUI application or service without console input, bail out. */
|
||||
*to= 0;
|
||||
return;
|
||||
}
|
||||
_cputs(opt_message ? opt_message : "Enter password: ");
|
||||
|
||||
/*
|
||||
Switch to raw mode (no line input, no echo input).
|
||||
Allow Ctrl-C handler with ENABLE_PROCESSED_INPUT.
|
||||
*/
|
||||
GetConsoleMode(consoleinput, &oldstate);
|
||||
SetConsoleMode(consoleinput, ENABLE_PROCESSED_INPUT);
|
||||
for (;;)
|
||||
{
|
||||
char tmp;
|
||||
DWORD chars_read;
|
||||
if (!ReadConsole(consoleinput, &tmp, 1, &chars_read, NULL))
|
||||
break;
|
||||
if (chars_read == 0)
|
||||
break;
|
||||
if (tmp == '\b' || tmp == 127)
|
||||
{
|
||||
if (pos != to)
|
||||
{
|
||||
_cputs("\b \b");
|
||||
pos--;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (tmp == '\n' || tmp == '\r')
|
||||
break;
|
||||
if (iscntrl(tmp) || pos == end)
|
||||
continue;
|
||||
_cputs("*");
|
||||
*(pos++) = tmp;
|
||||
}
|
||||
/* Reset console mode after password input. */
|
||||
SetConsoleMode(consoleinput, oldstate);
|
||||
CloseHandle(consoleinput);
|
||||
*pos=0;
|
||||
_cputs("\n");
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#ifndef HAVE_GETPASS
|
||||
/*
|
||||
Can't use fgets, because readline will get confused
|
||||
length is max number of chars in to, not counting \0
|
||||
to will not include the eol characters.
|
||||
*/
|
||||
|
||||
static void get_password(char *to,uint length,int fd, my_bool echo)
|
||||
{
|
||||
char *pos=to,*end=to+length;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
char tmp;
|
||||
if (my_read(fd,&tmp,1,MYF(0)) != 1)
|
||||
break;
|
||||
if (tmp == '\b' || (int) tmp == 127)
|
||||
{
|
||||
if (pos != to)
|
||||
{
|
||||
if (echo)
|
||||
{
|
||||
fputs("\b \b",stdout);
|
||||
fflush(stdout);
|
||||
}
|
||||
pos--;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (tmp == '\n' || tmp == '\r' || tmp == 3)
|
||||
break;
|
||||
if (iscntrl(tmp) || pos == end)
|
||||
continue;
|
||||
if (echo)
|
||||
{
|
||||
fputc('*',stdout);
|
||||
fflush(stdout);
|
||||
}
|
||||
*(pos++) = tmp;
|
||||
}
|
||||
*pos=0;
|
||||
return;
|
||||
}
|
||||
#endif /* ! HAVE_GETPASS */
|
||||
|
||||
|
||||
void get_tty_password_buff(const char *opt_message, char *buff, size_t buflen)
|
||||
{
|
||||
#ifdef HAVE_GETPASS
|
||||
char *passbuff;
|
||||
#else /* ! HAVE_GETPASS */
|
||||
TERMIO org,tmp;
|
||||
#endif /* HAVE_GETPASS */
|
||||
|
||||
#ifdef HAVE_GETPASS
|
||||
passbuff = getpass(opt_message ? opt_message : "Enter password: ");
|
||||
|
||||
/* copy the password to buff and clear original (static) buffer */
|
||||
strncpy(buff, passbuff, buflen - 1);
|
||||
#ifdef _PASSWORD_LEN
|
||||
memset(passbuff, 0, _PASSWORD_LEN);
|
||||
#endif
|
||||
#else
|
||||
if (isatty(fileno(stdout)))
|
||||
{
|
||||
fputs(opt_message ? opt_message : "Enter password: ",stdout);
|
||||
fflush(stdout);
|
||||
}
|
||||
#if defined(HAVE_TERMIOS_H)
|
||||
tcgetattr(fileno(stdin), &org);
|
||||
tmp = org;
|
||||
tmp.c_lflag &= ~(ECHO | ISIG | ICANON);
|
||||
tmp.c_cc[VMIN] = 1;
|
||||
tmp.c_cc[VTIME] = 0;
|
||||
tcsetattr(fileno(stdin), TCSADRAIN, &tmp);
|
||||
get_password(buff, buflen, fileno(stdin), isatty(fileno(stdout)));
|
||||
tcsetattr(fileno(stdin), TCSADRAIN, &org);
|
||||
#elif defined(HAVE_TERMIO_H)
|
||||
ioctl(fileno(stdin), (int) TCGETA, &org);
|
||||
tmp=org;
|
||||
tmp.c_lflag &= ~(ECHO | ISIG | ICANON);
|
||||
tmp.c_cc[VMIN] = 1;
|
||||
tmp.c_cc[VTIME]= 0;
|
||||
ioctl(fileno(stdin),(int) TCSETA, &tmp);
|
||||
get_password(buff,buflen-1,fileno(stdin),isatty(fileno(stdout)));
|
||||
ioctl(fileno(stdin),(int) TCSETA, &org);
|
||||
#else
|
||||
gtty(fileno(stdin), &org);
|
||||
tmp=org;
|
||||
tmp.sg_flags &= ~ECHO;
|
||||
tmp.sg_flags |= RAW;
|
||||
stty(fileno(stdin), &tmp);
|
||||
get_password(buff,buflen-1,fileno(stdin),isatty(fileno(stdout)));
|
||||
stty(fileno(stdin), &org);
|
||||
#endif
|
||||
if (isatty(fileno(stdout)))
|
||||
fputc('\n',stdout);
|
||||
#endif /* HAVE_GETPASS */
|
||||
}
|
||||
#endif /*__WIN__*/
|
||||
|
||||
#ifndef MYSQL_DYNAMIC_PLUGIN
|
||||
char *get_tty_password(const char *opt_message)
|
||||
{
|
||||
char buff[80];
|
||||
get_tty_password_buff(opt_message, buff, sizeof(buff));
|
||||
return my_strdup(buff, MYF(MY_FAE));
|
||||
}
|
||||
#endif
|
|
@ -1,107 +0,0 @@
|
|||
LIBRARY LIBMYSQL
|
||||
VERSION 6.0
|
||||
EXPORTS
|
||||
load_defaults
|
||||
mysql_thread_end
|
||||
mysql_thread_init
|
||||
myodbc_remove_escape
|
||||
mysql_affected_rows
|
||||
mysql_autocommit
|
||||
mysql_stmt_bind_param
|
||||
mysql_stmt_bind_result
|
||||
mysql_change_user
|
||||
mysql_character_set_name
|
||||
mysql_close
|
||||
mysql_commit
|
||||
mysql_data_seek
|
||||
mysql_debug
|
||||
mysql_dump_debug_info
|
||||
mysql_eof
|
||||
mysql_errno
|
||||
mysql_error
|
||||
mysql_escape_string
|
||||
mysql_hex_string
|
||||
mysql_stmt_execute
|
||||
mysql_stmt_fetch
|
||||
mysql_stmt_fetch_column
|
||||
mysql_fetch_field
|
||||
mysql_fetch_field_direct
|
||||
mysql_fetch_fields
|
||||
mysql_fetch_lengths
|
||||
mysql_fetch_row
|
||||
mysql_field_count
|
||||
mysql_field_seek
|
||||
mysql_field_tell
|
||||
mysql_free_result
|
||||
mysql_get_client_info
|
||||
mysql_get_host_info
|
||||
mysql_get_proto_info
|
||||
mysql_get_server_info
|
||||
mysql_get_client_version
|
||||
mysql_get_ssl_cipher
|
||||
mysql_info
|
||||
mysql_init
|
||||
mysql_insert_id
|
||||
mysql_kill
|
||||
mysql_set_server_option
|
||||
mysql_list_dbs
|
||||
mysql_list_fields
|
||||
mysql_list_processes
|
||||
mysql_list_tables
|
||||
mysql_more_results
|
||||
mysql_next_result
|
||||
mysql_num_fields
|
||||
mysql_num_rows
|
||||
mysql_options
|
||||
mysql_stmt_param_count
|
||||
mysql_stmt_param_metadata
|
||||
mysql_ping
|
||||
mysql_stmt_result_metadata
|
||||
mysql_query
|
||||
mysql_read_query_result
|
||||
mysql_real_connect
|
||||
mysql_real_escape_string
|
||||
mysql_real_query
|
||||
mysql_refresh
|
||||
mysql_rollback
|
||||
mysql_row_seek
|
||||
mysql_row_tell
|
||||
mysql_select_db
|
||||
mysql_stmt_send_long_data
|
||||
mysql_send_query
|
||||
mysql_shutdown
|
||||
mysql_ssl_set
|
||||
mysql_stat
|
||||
mysql_stmt_affected_rows
|
||||
mysql_stmt_close
|
||||
mysql_stmt_reset
|
||||
mysql_stmt_data_seek
|
||||
mysql_stmt_errno
|
||||
mysql_stmt_error
|
||||
mysql_stmt_free_result
|
||||
mysql_stmt_num_rows
|
||||
mysql_stmt_row_seek
|
||||
mysql_stmt_row_tell
|
||||
mysql_stmt_store_result
|
||||
mysql_store_result
|
||||
mysql_thread_id
|
||||
mysql_thread_safe
|
||||
mysql_use_result
|
||||
mysql_warning_count
|
||||
mysql_stmt_sqlstate
|
||||
mysql_sqlstate
|
||||
mysql_get_server_version
|
||||
mysql_stmt_prepare
|
||||
mysql_stmt_init
|
||||
mysql_stmt_insert_id
|
||||
mysql_stmt_attr_get
|
||||
mysql_stmt_attr_set
|
||||
mysql_stmt_field_count
|
||||
mysql_set_local_infile_default
|
||||
mysql_set_local_infile_handler
|
||||
mysql_embedded
|
||||
mysql_server_init
|
||||
mysql_server_end
|
||||
mysql_set_character_set
|
||||
mysql_get_character_set_info
|
||||
mysql_get_server_name
|
|
@ -1,33 +0,0 @@
|
|||
/*
|
||||
This version script is heavily inspired by Fedora's and Mageia's version
|
||||
scripts for MySQL client shared library.
|
||||
But it was modified to support Debian-compatible versioning too.
|
||||
|
||||
In RedHat universe, symbols from old libmysqlclient.so.16
|
||||
keep their libmysqlclient_16 version. New symbols added in
|
||||
libmysqlclient.so.18 get the new libmysqlclient_18 version.
|
||||
|
||||
In Debian all symbols in libmysqlclient.so.18 have libmysqlclient_18 version,
|
||||
including symbols that existed in libmysqlclient.so.16
|
||||
|
||||
We solve this by putting all symbols into libmysqlclient_18 version node,
|
||||
but creating aliases for old symbols in the libmysqlclient_16 version node.
|
||||
*/
|
||||
|
||||
@CLIENT_API_5_1_ALIASES@
|
||||
|
||||
/*
|
||||
On Fedora the following symbols are exported, but renamed into a mysql_
|
||||
namespace. We export them as aliases, but keep original symbols too. See
|
||||
MDEV-4127.
|
||||
*/
|
||||
mysql_default_charset_info = default_charset_info;
|
||||
mysql_get_charset = get_charset;
|
||||
mysql_get_charset_by_csname = get_charset_by_csname;
|
||||
mysql_net_realloc = net_realloc;
|
||||
mysql_client_errors = client_errors;
|
||||
|
||||
@VERSION_HEADER@
|
||||
@CLIENT_API_5_1_LIST@
|
||||
@CLIENT_API_5_5_LIST@
|
||||
@VERSION_FOOTER@
|
|
@ -18,7 +18,6 @@ ADD_DEFINITIONS(-DMYSQL_SERVER -DEMBEDDED_LIBRARY
|
|||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/libmysqld
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_BINARY_DIR}/sql
|
||||
|
@ -37,8 +36,8 @@ ${CMAKE_BINARY_DIR}/sql/lex_hash.h
|
|||
SET_SOURCE_FILES_PROPERTIES(${GEN_SOURCES} PROPERTIES GENERATED TRUE)
|
||||
|
||||
SET(SQL_EMBEDDED_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
||||
../libmysql/libmysql.c ../libmysql/errmsg.c ../client/get_password.c
|
||||
../sql-common/client.c ../sql-common/my_time.c
|
||||
libmysql.c ../sql-common/errmsg.c
|
||||
../sql-common/client.c
|
||||
../sql-common/my_user.c ../sql-common/pack.c
|
||||
../sql-common/client_plugin.c ../sql-common/mysql_async.c
|
||||
../sql/password.c ../sql/discover.cc ../sql/derror.cc
|
||||
|
@ -170,6 +169,254 @@ IF(UNIX)
|
|||
${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug)
|
||||
ENDIF()
|
||||
|
||||
SET(CLIENT_API_FUNCTIONS_5_1
|
||||
get_tty_password
|
||||
mysql_thread_end
|
||||
mysql_thread_init
|
||||
myodbc_remove_escape
|
||||
mysql_affected_rows
|
||||
mysql_autocommit
|
||||
mysql_stmt_bind_param
|
||||
mysql_stmt_bind_result
|
||||
mysql_change_user
|
||||
mysql_character_set_name
|
||||
mysql_close
|
||||
mysql_commit
|
||||
mysql_data_seek
|
||||
mysql_debug
|
||||
mysql_dump_debug_info
|
||||
mysql_eof
|
||||
mysql_errno
|
||||
mysql_error
|
||||
mysql_escape_string
|
||||
mysql_hex_string
|
||||
mysql_stmt_execute
|
||||
mysql_stmt_fetch
|
||||
mysql_stmt_fetch_column
|
||||
mysql_fetch_field
|
||||
mysql_fetch_field_direct
|
||||
mysql_fetch_fields
|
||||
mysql_fetch_lengths
|
||||
mysql_fetch_row
|
||||
mysql_field_count
|
||||
mysql_field_seek
|
||||
mysql_field_tell
|
||||
mysql_free_result
|
||||
mysql_get_parameters
|
||||
mysql_get_client_info
|
||||
mysql_get_host_info
|
||||
mysql_get_proto_info
|
||||
mysql_get_server_info
|
||||
mysql_get_client_version
|
||||
mysql_get_ssl_cipher
|
||||
mysql_info
|
||||
mysql_init
|
||||
mysql_insert_id
|
||||
mysql_kill
|
||||
mysql_set_server_option
|
||||
mysql_list_dbs
|
||||
mysql_list_fields
|
||||
mysql_list_processes
|
||||
mysql_list_tables
|
||||
mysql_more_results
|
||||
mysql_next_result
|
||||
mysql_num_fields
|
||||
mysql_num_rows
|
||||
mysql_options
|
||||
mysql_stmt_param_count
|
||||
mysql_stmt_param_metadata
|
||||
mysql_ping
|
||||
mysql_stmt_result_metadata
|
||||
mysql_query
|
||||
mysql_read_query_result
|
||||
mysql_real_connect
|
||||
mysql_real_escape_string
|
||||
mysql_real_query
|
||||
mysql_refresh
|
||||
mysql_rollback
|
||||
mysql_row_seek
|
||||
mysql_row_tell
|
||||
mysql_select_db
|
||||
mysql_stmt_send_long_data
|
||||
mysql_send_query
|
||||
mysql_shutdown
|
||||
mysql_ssl_set
|
||||
mysql_stat
|
||||
mysql_stmt_affected_rows
|
||||
mysql_stmt_close
|
||||
mysql_stmt_reset
|
||||
mysql_stmt_data_seek
|
||||
mysql_stmt_errno
|
||||
mysql_stmt_error
|
||||
mysql_stmt_free_result
|
||||
mysql_stmt_num_rows
|
||||
mysql_stmt_row_seek
|
||||
mysql_stmt_row_tell
|
||||
mysql_stmt_store_result
|
||||
mysql_store_result
|
||||
mysql_thread_id
|
||||
mysql_thread_safe
|
||||
mysql_use_result
|
||||
mysql_warning_count
|
||||
mysql_stmt_sqlstate
|
||||
mysql_sqlstate
|
||||
mysql_get_server_version
|
||||
mysql_stmt_prepare
|
||||
mysql_stmt_init
|
||||
mysql_stmt_insert_id
|
||||
mysql_stmt_attr_get
|
||||
mysql_stmt_attr_set
|
||||
mysql_stmt_field_count
|
||||
mysql_set_local_infile_default
|
||||
mysql_set_local_infile_handler
|
||||
mysql_embedded
|
||||
mysql_server_init
|
||||
mysql_server_end
|
||||
mysql_set_character_set
|
||||
mysql_get_character_set_info
|
||||
# These are documented in Paul DuBois' MySQL book,
|
||||
# so we treat them as part of the de-facto API.
|
||||
handle_options
|
||||
load_defaults
|
||||
free_defaults
|
||||
my_print_help
|
||||
)
|
||||
|
||||
SET(CLIENT_API_FUNCTIONS_5_5
|
||||
my_progname
|
||||
mysql_stmt_next_result
|
||||
# Charsets
|
||||
my_charset_bin
|
||||
my_charset_latin1
|
||||
my_charset_utf8_general_ci
|
||||
# Client plugins
|
||||
mysql_client_find_plugin
|
||||
mysql_client_register_plugin
|
||||
mysql_load_plugin
|
||||
mysql_load_plugin_v
|
||||
mysql_plugin_options
|
||||
# Async API
|
||||
mysql_get_timeout_value
|
||||
mysql_get_timeout_value_ms
|
||||
mysql_get_socket
|
||||
mysql_autocommit_cont
|
||||
mysql_autocommit_start
|
||||
mysql_change_user_cont
|
||||
mysql_change_user_start
|
||||
mysql_close_cont
|
||||
mysql_close_start
|
||||
mysql_commit_cont
|
||||
mysql_commit_start
|
||||
mysql_dump_debug_info_cont
|
||||
mysql_dump_debug_info_start
|
||||
mysql_fetch_row_cont
|
||||
mysql_fetch_row_start
|
||||
mysql_free_result_cont
|
||||
mysql_free_result_start
|
||||
mysql_kill_cont
|
||||
mysql_kill_start
|
||||
mysql_list_dbs_cont
|
||||
mysql_list_dbs_start
|
||||
mysql_list_fields_cont
|
||||
mysql_list_fields_start
|
||||
mysql_list_processes_cont
|
||||
mysql_list_processes_start
|
||||
mysql_list_tables_cont
|
||||
mysql_list_tables_start
|
||||
mysql_next_result_cont
|
||||
mysql_next_result_start
|
||||
mysql_ping_cont
|
||||
mysql_ping_start
|
||||
mysql_query_cont
|
||||
mysql_query_start
|
||||
mysql_read_query_result_cont
|
||||
mysql_read_query_result_start
|
||||
mysql_real_connect_cont
|
||||
mysql_real_connect_start
|
||||
mysql_real_query_cont
|
||||
mysql_real_query_start
|
||||
mysql_refresh_cont
|
||||
mysql_refresh_start
|
||||
mysql_rollback_cont
|
||||
mysql_rollback_start
|
||||
mysql_select_db_cont
|
||||
mysql_select_db_start
|
||||
mysql_send_query_cont
|
||||
mysql_send_query_start
|
||||
mysql_set_character_set_cont
|
||||
mysql_set_character_set_start
|
||||
mysql_set_server_option_cont
|
||||
mysql_set_server_option_start
|
||||
mysql_shutdown_cont
|
||||
mysql_shutdown_start
|
||||
mysql_stat_cont
|
||||
mysql_stat_start
|
||||
mysql_stmt_close_cont
|
||||
mysql_stmt_close_start
|
||||
mysql_stmt_execute_cont
|
||||
mysql_stmt_execute_start
|
||||
mysql_stmt_fetch_cont
|
||||
mysql_stmt_fetch_start
|
||||
mysql_stmt_free_result_cont
|
||||
mysql_stmt_free_result_start
|
||||
mysql_stmt_next_result_cont
|
||||
mysql_stmt_next_result_start
|
||||
mysql_stmt_prepare_cont
|
||||
mysql_stmt_prepare_start
|
||||
mysql_stmt_reset_cont
|
||||
mysql_stmt_reset_start
|
||||
mysql_stmt_send_long_data_cont
|
||||
mysql_stmt_send_long_data_start
|
||||
mysql_stmt_store_result_cont
|
||||
mysql_stmt_store_result_start
|
||||
mysql_store_result_cont
|
||||
mysql_store_result_start
|
||||
#dynamic columns api
|
||||
dynamic_column_create
|
||||
dynamic_column_create_many
|
||||
dynamic_column_update
|
||||
dynamic_column_update_many
|
||||
dynamic_column_exists
|
||||
dynamic_column_list
|
||||
dynamic_column_get
|
||||
dynamic_column_prepare_decimal
|
||||
mariadb_dyncol_create_many_num
|
||||
mariadb_dyncol_create_many_named
|
||||
mariadb_dyncol_update_many_num
|
||||
mariadb_dyncol_update_many_named
|
||||
mariadb_dyncol_exists_num
|
||||
mariadb_dyncol_exists_named
|
||||
mariadb_dyncol_free
|
||||
mariadb_dyncol_list_num
|
||||
mariadb_dyncol_list_named
|
||||
mariadb_dyncol_get_num
|
||||
mariadb_dyncol_get_named
|
||||
mariadb_dyncol_has_names
|
||||
mariadb_dyncol_check
|
||||
mariadb_dyncol_json
|
||||
mariadb_dyncol_val_str
|
||||
mariadb_dyncol_val_long
|
||||
mariadb_dyncol_val_double
|
||||
mariadb_dyncol_unpack
|
||||
mariadb_dyncol_unpack_free
|
||||
mariadb_dyncol_column_cmp_named
|
||||
mariadb_dyncol_column_count
|
||||
mariadb_dyncol_prepare_decimal
|
||||
#
|
||||
mariadb_deinitialize_ssl
|
||||
# low-level API to MySQL protocol
|
||||
mysql_net_read_packet
|
||||
mysql_net_field_length
|
||||
# Added in MariaDB-10.0 to stay compatible with MySQL-5.6, yuck!
|
||||
mysql_options4
|
||||
)
|
||||
|
||||
SET(CLIENT_API_FUNCTIONS
|
||||
${CLIENT_API_FUNCTIONS_5_1}
|
||||
${CLIENT_API_FUNCTIONS_5_5}
|
||||
)
|
||||
|
||||
|
||||
# List of exported functions in embedded (client api except client plugin or
|
||||
# async (*_start/*_cont functions)
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
/* Copyright (c) 2003, 2011, 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
|
@ -122,9 +122,7 @@ typedef struct st_mysql_stmt_extension
|
|||
1 could not initialize environment (out of memory or thread keys)
|
||||
*/
|
||||
|
||||
int STDCALL mysql_server_init(int argc __attribute__((unused)),
|
||||
char **argv __attribute__((unused)),
|
||||
char **groups __attribute__((unused)))
|
||||
int STDCALL mysql_server_init(int argc, char **argv, char **groups)
|
||||
{
|
||||
int result= 0;
|
||||
if (!mysql_client_init)
|
|
@ -61,9 +61,8 @@ connection slave;
|
|||
# '2003' CR_CONN_HOST_ERROR
|
||||
# '2002' CR_CONNECTION_ERROR
|
||||
# '2006' CR_SERVER_GONE_ERROR
|
||||
# '1040' ER_CON_COUNT_ERROR
|
||||
# '1053' ER_SERVER_SHUTDOWN
|
||||
let $slave_io_errno= 1040, 1053, 2002, 2003, 2006, 2013;
|
||||
let $slave_io_errno= 1053, 2002, 2003, 2006, 2013;
|
||||
--let $slave_io_error_is_nonfatal= 1
|
||||
source include/wait_for_slave_io_error.inc;
|
||||
|
||||
|
|
5
mysql-test/include/expect_crash.inc
Normal file
5
mysql-test/include/expect_crash.inc
Normal file
|
@ -0,0 +1,5 @@
|
|||
--let $_server_id= `SELECT @@server_id`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||
|
||||
# There should be a debug crash after using this .inc file
|
||||
--exec echo "wait" > $_expect_file_name
|
|
@ -1,6 +1,4 @@
|
|||
if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_page_size' AND variable_value = 32768`)
|
||||
{
|
||||
|
||||
--skip Test requires InnoDB with 32k Page size.
|
||||
|
||||
}
|
||||
--skip Test requires InnoDB with 32k page size.
|
||||
}
|
||||
|
|
6
mysql-test/include/have_innodb_4k.inc
Normal file
6
mysql-test/include/have_innodb_4k.inc
Normal file
|
@ -0,0 +1,6 @@
|
|||
--disable_warnings
|
||||
if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_page_size' AND variable_value = 4096`)
|
||||
{
|
||||
--skip Test requires InnoDB with 4k Page size.
|
||||
}
|
||||
--enable_warnings
|
|
@ -1,4 +1,4 @@
|
|||
if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_page_size' AND variable_value = 65536`)
|
||||
{
|
||||
--skip Test requires InnoDB with 64k Page size.
|
||||
--skip Test requires InnoDB with 64k page size.
|
||||
}
|
||||
|
|
6
mysql-test/include/have_innodb_8k.inc
Normal file
6
mysql-test/include/have_innodb_8k.inc
Normal file
|
@ -0,0 +1,6 @@
|
|||
--disable_warnings
|
||||
if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_page_size' AND variable_value = 8192`)
|
||||
{
|
||||
--skip Test requires InnoDB with 8k Page size.
|
||||
}
|
||||
--enable_warnings
|
|
@ -6,8 +6,8 @@ innodb-cmpmem
|
|||
innodb-trx
|
||||
innodb-sys-indexes
|
||||
|
||||
[xtradb]
|
||||
innodb
|
||||
innodb-cmpmem
|
||||
innodb-trx
|
||||
innodb-sys-indexes
|
||||
#[xtradb]
|
||||
#innodb
|
||||
#innodb-cmpmem
|
||||
#innodb-trx
|
||||
#innodb-sys-indexes
|
||||
|
|
|
@ -624,6 +624,11 @@ DROP TABLE t1,t2,t3;
|
|||
# Test bug when trying to drop data file which no InnoDB directory entry
|
||||
#
|
||||
|
||||
--disable_query_log
|
||||
call mtr.add_suppression("InnoDB: Table .*bug29807.*");
|
||||
call mtr.add_suppression("InnoDB: Cannot open table test/bug29807 from");
|
||||
--enable_query_log
|
||||
|
||||
create table t1 (a int) engine=innodb;
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/bug29807.frm;
|
||||
|
@ -631,10 +636,6 @@ copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/bug29807.frm;
|
|||
select * from bug29807;
|
||||
drop table t1;
|
||||
drop table bug29807;
|
||||
--disable_query_log
|
||||
call mtr.add_suppression("InnoDB: Error: table .test...bug29807. does not exist in the InnoDB internal");
|
||||
call mtr.add_suppression("InnoDB: Cannot open table test/bug29807 from");
|
||||
--enable_query_log
|
||||
|
||||
|
||||
#
|
||||
|
|
|
@ -32,6 +32,7 @@ BEGIN
|
|||
AND variable_name not like "Last_IO_Err*"
|
||||
AND variable_name != 'INNODB_IBUF_MAX_SIZE'
|
||||
AND variable_name != 'INNODB_USE_NATIVE_AIO'
|
||||
AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP'
|
||||
AND variable_name not like 'GTID%POS'
|
||||
AND variable_name != 'GTID_BINLOG_STATE'
|
||||
ORDER BY variable_name;
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
# $slave_io_errno
|
||||
# The expected IO error numbers. This can be either a single
|
||||
# number, or a comma-separated list of numbers. Examples:
|
||||
# --let $slave_io_errno= 1040, 1053, 2002, 2003, 2006, 2013
|
||||
# --let $slave_io_errno= 1053, 2002, 2003, 2006, 2013
|
||||
# --let $slave_io_errno= 1045
|
||||
# (After BUG#41956 has been fixed, this will be required to be
|
||||
# symbolic names instead of numbers.)
|
||||
|
|
|
@ -11,10 +11,7 @@ let $counter= 5000;
|
|||
let $mysql_errno= 9999;
|
||||
while ($mysql_errno)
|
||||
{
|
||||
# Strangely enough, the server might return "Too many connections"
|
||||
# while being shutdown, thus 1040 is an "allowed" error
|
||||
# See BUG#36228
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013,1927
|
||||
--error 0,ER_SERVER_SHUTDOWN,ER_CONNECTION_KILLED,2002,2006,2013
|
||||
show status;
|
||||
|
||||
dec $counter;
|
||||
|
|
|
@ -9,10 +9,7 @@ let $counter= 600;
|
|||
let $mysql_errno= 0;
|
||||
while (!$mysql_errno)
|
||||
{
|
||||
# Strangely enough, the server might return "Too many connections"
|
||||
# while being shutdown, thus 1040 is an "allowed" error.
|
||||
# See BUG#36228.
|
||||
--error 0,1040,1053,2002,2003,2005,2006,2013,1927
|
||||
--error 0,ER_SERVER_SHUTDOWN,ER_CONNECTION_KILLED,2002,2006,2013
|
||||
show status;
|
||||
|
||||
dec $counter;
|
||||
|
|
|
@ -2138,35 +2138,6 @@ sub have_maria_support () {
|
|||
return defined $maria_var;
|
||||
}
|
||||
|
||||
#
|
||||
# Set environment to be used by childs of this process for
|
||||
# things that are constant during the whole lifetime of mysql-test-run
|
||||
#
|
||||
|
||||
sub find_plugin($$)
|
||||
{
|
||||
my ($plugin, $location) = @_;
|
||||
my $plugin_filename;
|
||||
|
||||
if (IS_WINDOWS)
|
||||
{
|
||||
$plugin_filename = $plugin.".dll";
|
||||
}
|
||||
else
|
||||
{
|
||||
$plugin_filename = $plugin.".so";
|
||||
}
|
||||
|
||||
my $lib_plugin=
|
||||
mtr_file_exists(vs_config_dirs($location,$plugin_filename),
|
||||
"$basedir/lib/plugin/".$plugin_filename,
|
||||
"$basedir/lib64/plugin/".$plugin_filename,
|
||||
"$basedir/$location/.libs/".$plugin_filename,
|
||||
"$basedir/lib/mysql/plugin/".$plugin_filename,
|
||||
"$basedir/lib64/mysql/plugin/".$plugin_filename,
|
||||
);
|
||||
return $lib_plugin;
|
||||
}
|
||||
|
||||
sub environment_setup {
|
||||
|
||||
|
@ -2588,6 +2559,7 @@ sub setup_vardir() {
|
|||
{
|
||||
for (<$bindir/storage/*$opt_vs_config/*.dll>,
|
||||
<$bindir/plugin/*$opt_vs_config/*.dll>,
|
||||
<$bindir/libmariadb/plugins/*$opt_vs_config/*.dll>,
|
||||
<$bindir/sql$opt_vs_config/*.dll>)
|
||||
{
|
||||
my $pname=basename($_);
|
||||
|
@ -2605,12 +2577,9 @@ sub setup_vardir() {
|
|||
unlink "$plugindir/symlink_test";
|
||||
}
|
||||
|
||||
for (<../storage/*/.libs/*.so>,
|
||||
<../plugin/*/.libs/*.so>,
|
||||
<../plugin/*/*/.libs/*.so>,
|
||||
<../sql/.libs/*.so>,
|
||||
<$bindir/storage/*/*.so>,
|
||||
for (<$bindir/storage/*/*.so>,
|
||||
<$bindir/plugin/*/*.so>,
|
||||
<$bindir/libmariadb/plugins/*/*.so>,
|
||||
<$bindir/sql/*.so>)
|
||||
{
|
||||
my $pname=basename($_);
|
||||
|
@ -2632,6 +2601,8 @@ sub setup_vardir() {
|
|||
# hm, what paths work for debs and for rpms ?
|
||||
for (<$bindir/lib64/mysql/plugin/*.so>,
|
||||
<$bindir/lib/mysql/plugin/*.so>,
|
||||
<$bindir/lib64/mariadb/plugin/*.so>,
|
||||
<$bindir/lib/mariadb/plugin/*.so>,
|
||||
<$bindir/lib/plugin/*.so>, # bintar
|
||||
<$bindir/lib/plugin/*.dll>)
|
||||
{
|
||||
|
@ -4395,7 +4366,6 @@ sub extract_warning_lines ($$) {
|
|||
qr/Slave SQL thread retried transaction/,
|
||||
qr/Slave \(additional info\)/,
|
||||
qr/Incorrect information in file/,
|
||||
qr/Incorrect key file for table .*crashed.*/,
|
||||
qr/Slave I\/O: Get master SERVER_ID failed with error:.*/,
|
||||
qr/Slave I\/O: Get master clock failed with error:.*/,
|
||||
qr/Slave I\/O: Get master COLLATION_SERVER failed with error:.*/,
|
||||
|
@ -4451,7 +4421,14 @@ sub extract_warning_lines ($$) {
|
|||
qr|nnoDB: fix the corruption by dumping, dropping, and reimporting|,
|
||||
qr|InnoDB: the corrupt table. You can use CHECK|,
|
||||
qr|InnoDB: TABLE to scan your table for corruption|,
|
||||
qr/InnoDB: See also */
|
||||
qr/InnoDB: See also */,
|
||||
qr/InnoDB: Cannot open .*ib_buffer_pool.* for reading: No such file or directory*/,
|
||||
qr/InnoDB: Upgrading redo log:*/,
|
||||
qr|InnoDB: Starting to delete and rewrite log files.|,
|
||||
qr/InnoDB: New log files created, LSN=*/,
|
||||
qr|InnoDB: Creating foreign key constraint system tables.|,
|
||||
qr/InnoDB: Table .*mysql.*innodb_table_stats.* not found./,
|
||||
qr/InnoDB: User stopword table .* does not exist./
|
||||
|
||||
);
|
||||
|
||||
|
|
|
@ -1860,8 +1860,8 @@ ALTER TABLE tm1 MODIFY COLUMN c INT NULL;
|
|||
affected rows: 2
|
||||
info: Records: 2 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE ti1 MODIFY COLUMN h VARCHAR(30);
|
||||
affected rows: 2
|
||||
info: Records: 2 Duplicates: 0 Warnings: 0
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE tm1 MODIFY COLUMN h VARCHAR(30);
|
||||
affected rows: 2
|
||||
info: Records: 2 Duplicates: 0 Warnings: 0
|
||||
|
|
|
@ -1556,6 +1556,54 @@ EXPLAIN
|
|||
}
|
||||
}
|
||||
}
|
||||
create table my_ancestors
|
||||
with recursive
|
||||
ancestor_ids (id)
|
||||
as
|
||||
(
|
||||
select father from folks where name = 'Me'
|
||||
union
|
||||
select mother from folks where name = 'Me'
|
||||
union
|
||||
select father from folks, ancestor_ids a where folks.id = a.id
|
||||
union
|
||||
select mother from folks, ancestor_ids a where folks.id = a.id
|
||||
)
|
||||
select p.* from folks as p, ancestor_ids as a where p.id = a.id;
|
||||
select * from my_ancestors;
|
||||
id name dob father mother
|
||||
20 Dad 1970-02-02 10 9
|
||||
30 Mom 1975-03-03 8 7
|
||||
10 Grandpa Bill 1940-04-05 NULL NULL
|
||||
9 Grandma Ann 1941-10-15 NULL NULL
|
||||
7 Grandma Sally 1943-08-23 NULL 6
|
||||
8 Grandpa Ben 1940-10-21 NULL NULL
|
||||
6 Grandgrandma Martha 1923-05-17 NULL NULL
|
||||
delete from my_ancestors;
|
||||
insert into my_ancestors
|
||||
with recursive
|
||||
ancestor_ids (id)
|
||||
as
|
||||
(
|
||||
select father from folks where name = 'Me'
|
||||
union
|
||||
select mother from folks where name = 'Me'
|
||||
union
|
||||
select father from folks, ancestor_ids a where folks.id = a.id
|
||||
union
|
||||
select mother from folks, ancestor_ids a where folks.id = a.id
|
||||
)
|
||||
select p.* from folks as p, ancestor_ids as a where p.id = a.id;
|
||||
select * from my_ancestors;
|
||||
id name dob father mother
|
||||
20 Dad 1970-02-02 10 9
|
||||
30 Mom 1975-03-03 8 7
|
||||
10 Grandpa Bill 1940-04-05 NULL NULL
|
||||
9 Grandma Ann 1941-10-15 NULL NULL
|
||||
7 Grandma Sally 1943-08-23 NULL 6
|
||||
8 Grandpa Ben 1940-10-21 NULL NULL
|
||||
6 Grandgrandma Martha 1923-05-17 NULL NULL
|
||||
drop table my_ancestors;
|
||||
drop table folks;
|
||||
#
|
||||
# MDEV-10372: [bb-10.2-mdev9864 tree] EXPLAIN with recursive CTE enters endless recursion
|
||||
|
|
|
@ -194,7 +194,7 @@ EXPLAIN SELECT c1, i1, max(i2) FROM t2
|
|||
WHERE (c1 = 'C' OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 )
|
||||
GROUP BY c1,i1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range k2 k2 5 NULL 59 Using where; Using index
|
||||
1 SIMPLE t2 range k2 k2 5 NULL 60 Using where; Using index
|
||||
SELECT c1, i1, max(i2) FROM t2
|
||||
WHERE (c1 = 'C' OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 )
|
||||
GROUP BY c1,i1;
|
||||
|
@ -205,7 +205,7 @@ EXPLAIN SELECT c1, i1, max(i2) FROM t2
|
|||
WHERE (((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 ))
|
||||
GROUP BY c1,i1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range k2 k2 5 NULL 58 Using where; Using index
|
||||
1 SIMPLE t2 range k2 k2 5 NULL 60 Using where; Using index
|
||||
SELECT c1, i1, max(i2) FROM t2
|
||||
WHERE (((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 ))
|
||||
GROUP BY c1,i1;
|
||||
|
|
|
@ -485,7 +485,7 @@ SELECT * FROM City
|
|||
WHERE ID BETWEEN 3001 AND 4000 AND Population > 600000
|
||||
AND Country BETWEEN 'S' AND 'Z' ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country PRIMARY,Country,Population 4,7,4 NULL # Using sort_intersect(PRIMARY,Country,Population); Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country PRIMARY,Population,Country 4,4,7 NULL # Using sort_intersect(PRIMARY,Population,Country); Using where
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE ID BETWEEN 501 AND 1000 AND Population > 700000 AND Country LIKE 'C%';
|
||||
ID Name Country Population
|
||||
|
@ -745,7 +745,7 @@ SELECT * FROM City
|
|||
WHERE ID BETWEEN 3001 AND 4000 AND Population > 600000
|
||||
AND Country BETWEEN 'S' AND 'Z';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country PRIMARY,Country,Population 4,7,4 NULL # Using sort_intersect(PRIMARY,Country,Population); Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country PRIMARY,Population,Country 4,4,7 NULL # Using sort_intersect(PRIMARY,Population,Country); Using where
|
||||
SELECT * FROM City WHERE
|
||||
Name LIKE 'C%' AND Population > 1000000;
|
||||
ID Name Country Population
|
||||
|
|
|
@ -409,7 +409,7 @@ WHERE (pk BETWEEN 4 AND 5 OR pk < 2) AND c1 < 240
|
|||
ORDER BY c1
|
||||
LIMIT 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY,k1 k1 5 NULL 3 Using where; Using index
|
||||
1 SIMPLE t1 range PRIMARY,k1 k1 5 NULL 4 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
#
|
||||
#
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
set @default_storage_engine= @@global.storage_engine;
|
||||
set global storage_engine=myisam;
|
||||
set session storage_engine=myisam;
|
||||
call mtr.add_suppression("Index for table .*crashed' is corrupt; try to repair it");
|
||||
drop table if exists crashed,t2,t3,t4;
|
||||
SET @orig_debug=@@debug;
|
||||
CREATE TABLE crashed (c1 INT);
|
||||
|
|
|
@ -54,7 +54,7 @@ CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMIN
|
|||
BEGIN
|
||||
/*!*/;
|
||||
# at 809
|
||||
#<date> server id 1 end_log_pos 865 CRC32 XXX Table_map: `test`.`t1` mapped to number 30
|
||||
#<date> server id 1 end_log_pos 865 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 865
|
||||
#<date> server id 1 end_log_pos 934 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
|
@ -79,7 +79,7 @@ COMMIT
|
|||
BEGIN
|
||||
/*!*/;
|
||||
# at 1049
|
||||
#<date> server id 1 end_log_pos 1105 CRC32 XXX Table_map: `test`.`t1` mapped to number 30
|
||||
#<date> server id 1 end_log_pos 1105 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 1105
|
||||
#<date> server id 1 end_log_pos 1173 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
|
@ -104,7 +104,7 @@ COMMIT
|
|||
BEGIN
|
||||
/*!*/;
|
||||
# at 1288
|
||||
#<date> server id 1 end_log_pos 1344 CRC32 XXX Table_map: `test`.`t1` mapped to number 30
|
||||
#<date> server id 1 end_log_pos 1344 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 1344
|
||||
#<date> server id 1 end_log_pos 1411 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
|
@ -129,7 +129,7 @@ COMMIT
|
|||
BEGIN
|
||||
/*!*/;
|
||||
# at 1526
|
||||
#<date> server id 1 end_log_pos 1582 CRC32 XXX Table_map: `test`.`t1` mapped to number 30
|
||||
#<date> server id 1 end_log_pos 1582 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 1582
|
||||
#<date> server id 1 end_log_pos 1652 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t1`
|
||||
|
@ -154,7 +154,7 @@ COMMIT
|
|||
BEGIN
|
||||
/*!*/;
|
||||
# at 1767
|
||||
#<date> server id 1 end_log_pos 1823 CRC32 XXX Table_map: `test`.`t2` mapped to number 31
|
||||
#<date> server id 1 end_log_pos 1823 CRC32 XXX Table_map: `test`.`t2` mapped to number num
|
||||
# at 1823
|
||||
#<date> server id 1 end_log_pos 1990 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
|
||||
### INSERT INTO `test`.`t2`
|
||||
|
@ -212,7 +212,7 @@ COMMIT
|
|||
BEGIN
|
||||
/*!*/;
|
||||
# at 2105
|
||||
#<date> server id 1 end_log_pos 2161 CRC32 XXX Table_map: `test`.`t2` mapped to number 31
|
||||
#<date> server id 1 end_log_pos 2161 CRC32 XXX Table_map: `test`.`t2` mapped to number num
|
||||
# at 2161
|
||||
#<date> server id 1 end_log_pos 2235 CRC32 XXX Update_rows: table id 31 flags: STMT_END_F
|
||||
### UPDATE `test`.`t2`
|
||||
|
@ -244,7 +244,7 @@ COMMIT
|
|||
BEGIN
|
||||
/*!*/;
|
||||
# at 2350
|
||||
#<date> server id 1 end_log_pos 2406 CRC32 XXX Table_map: `test`.`t1` mapped to number 30
|
||||
#<date> server id 1 end_log_pos 2406 CRC32 XXX Table_map: `test`.`t1` mapped to number num
|
||||
# at 2406
|
||||
#<date> server id 1 end_log_pos 2460 CRC32 XXX Delete_rows: table id 30 flags: STMT_END_F
|
||||
### DELETE FROM `test`.`t1`
|
||||
|
@ -270,7 +270,7 @@ COMMIT
|
|||
BEGIN
|
||||
/*!*/;
|
||||
# at 2575
|
||||
#<date> server id 1 end_log_pos 2631 CRC32 XXX Table_map: `test`.`t2` mapped to number 31
|
||||
#<date> server id 1 end_log_pos 2631 CRC32 XXX Table_map: `test`.`t2` mapped to number num
|
||||
# at 2631
|
||||
#<date> server id 1 end_log_pos 2685 CRC32 XXX Delete_rows: table id 31 flags: STMT_END_F
|
||||
### DELETE FROM `test`.`t2`
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- mysqld--help.result
|
||||
+++ mysqld--help,win.reject
|
||||
@@ -321,7 +321,6 @@
|
||||
--- mysqld--help.result 2016-09-21 13:50:58.682767100 +0000
|
||||
+++ mysqld--help,win.reject 2016-09-21 13:57:57.494626000 +0000
|
||||
@@ -318,7 +318,6 @@
|
||||
The number of segments in a key cache
|
||||
-L, --language=name Client error messages in given language. May be given as
|
||||
a full path. Deprecated. Use --lc-messages-dir instead.
|
||||
|
@ -8,7 +8,7 @@
|
|||
--lc-messages=name Set the language used for the error messages.
|
||||
-L, --lc-messages-dir=name
|
||||
Directory where error messages are
|
||||
@@ -520,6 +519,7 @@
|
||||
@@ -517,6 +516,7 @@
|
||||
Use MySQL-5.6 (instead of MariaDB-5.3) format for TIME,
|
||||
DATETIME, TIMESTAMP columns.
|
||||
(Defaults to on; use --skip-mysql56-temporal-format to disable.)
|
||||
|
@ -16,7 +16,7 @@
|
|||
--net-buffer-length=#
|
||||
Buffer length for TCP/IP and socket communication
|
||||
--net-read-timeout=#
|
||||
@@ -927,6 +927,9 @@
|
||||
@@ -924,6 +924,9 @@
|
||||
characteristics (isolation level, read only/read
|
||||
write,snapshot - but not any work done / data modified
|
||||
within the transaction).
|
||||
|
@ -26,7 +26,7 @@
|
|||
--show-slave-auth-info
|
||||
Show user and password in SHOW SLAVE HOSTS on this
|
||||
master.
|
||||
@@ -1039,6 +1042,10 @@
|
||||
@@ -1036,6 +1039,10 @@
|
||||
Log slow queries to given log file. Defaults logging to
|
||||
'hostname'-slow.log. Must be enabled to activate other
|
||||
slow log options
|
||||
|
@ -37,7 +37,7 @@
|
|||
--socket=name Socket file to use for connection
|
||||
--sort-buffer-size=#
|
||||
Each thread that needs to do a sort allocates a buffer of
|
||||
@@ -1057,6 +1064,7 @@
|
||||
@@ -1054,6 +1061,7 @@
|
||||
NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH
|
||||
--stack-trace Print a symbolic stack trace on failure
|
||||
(Defaults to on; use --skip-stack-trace to disable.)
|
||||
|
@ -45,35 +45,19 @@
|
|||
--standards-compliant-cte
|
||||
Allow only standards compiant CTE
|
||||
(Defaults to on; use --skip-standards-compliant-cte to disable.)
|
||||
@@ -1099,25 +1107,11 @@
|
||||
--thread-cache-size=#
|
||||
How many threads we should keep in a cache for reuse.
|
||||
These are freed after 5 minutes of idle time
|
||||
- --thread-pool-idle-timeout=#
|
||||
- Timeout in seconds for an idle thread in the thread
|
||||
- pool.Worker thread will be shut down after timeout
|
||||
@@ -1102,6 +1110,11 @@
|
||||
--thread-pool-max-threads=#
|
||||
Maximum allowed number of worker threads in the thread
|
||||
pool
|
||||
- --thread-pool-oversubscribe=#
|
||||
- How many additional active worker threads in a group are
|
||||
- allowed.
|
||||
- --thread-pool-size=#
|
||||
- Number of thread groups in the pool. This parameter is
|
||||
- roughly equivalent to maximum number of concurrently
|
||||
- executing threads (threads in a waiting state do not
|
||||
- count as executing).
|
||||
- --thread-pool-stall-limit=#
|
||||
- Maximum query execution time in milliseconds,before an
|
||||
- executing non-yielding thread is considered stalled.If a
|
||||
- worker thread is stalled, additional worker thread may be
|
||||
- created to handle remaining clients.
|
||||
+ --thread-pool-min-threads=#
|
||||
+ Minimum number of threads in the thread pool.
|
||||
--thread-stack=# The stack size for each thread
|
||||
--time-format=name The TIME format (ignored)
|
||||
--timed-mutexes Specify whether to time mutexes. Deprecated, has no
|
||||
@@ -1126,8 +1120,8 @@
|
||||
+ --thread-pool-mode=name
|
||||
+ Chose implementation of the threadpool. One of: windows,
|
||||
+ generic
|
||||
--thread-pool-oversubscribe=#
|
||||
How many additional active worker threads in a group are
|
||||
allowed.
|
||||
@@ -1132,8 +1145,8 @@
|
||||
size, MySQL will automatically convert it to an on-disk
|
||||
MyISAM or Aria table
|
||||
-t, --tmpdir=name Path for temporary files. Several paths may be specified,
|
||||
|
@ -84,7 +68,7 @@
|
|||
--transaction-alloc-block-size=#
|
||||
Allocation block size for transactions to be stored in
|
||||
binary log
|
||||
@@ -1252,7 +1246,6 @@
|
||||
@@ -1257,7 +1270,6 @@
|
||||
key-cache-division-limit 100
|
||||
key-cache-file-hash-size 512
|
||||
key-cache-segments 0
|
||||
|
@ -92,7 +76,7 @@
|
|||
lc-messages en_US
|
||||
lc-messages-dir MYSQL_SHAREDIR/
|
||||
lc-time-names en_US
|
||||
@@ -1319,6 +1312,7 @@
|
||||
@@ -1324,6 +1336,7 @@
|
||||
myisam-stats-method NULLS_UNEQUAL
|
||||
myisam-use-mmap FALSE
|
||||
mysql56-temporal-format TRUE
|
||||
|
@ -100,7 +84,7 @@
|
|||
net-buffer-length 16384
|
||||
net-read-timeout 30
|
||||
net-retry-count 10
|
||||
@@ -1419,6 +1413,8 @@
|
||||
@@ -1424,6 +1437,8 @@
|
||||
session-track-state-change FALSE
|
||||
session-track-system-variables
|
||||
session-track-transaction-info OFF
|
||||
|
@ -109,7 +93,7 @@
|
|||
show-slave-auth-info FALSE
|
||||
silent-startup FALSE
|
||||
skip-grant-tables TRUE
|
||||
@@ -1443,6 +1439,7 @@
|
||||
@@ -1448,6 +1463,7 @@
|
||||
slave-type-conversions
|
||||
slow-launch-time 2
|
||||
slow-query-log FALSE
|
||||
|
@ -117,7 +101,7 @@
|
|||
sort-buffer-size 2097152
|
||||
sql-mode NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
||||
stack-trace TRUE
|
||||
@@ -1456,16 +1453,14 @@
|
||||
@@ -1461,14 +1477,16 @@
|
||||
sync-relay-log 10000
|
||||
sync-relay-log-info 10000
|
||||
sysdate-is-now FALSE
|
||||
|
@ -129,11 +113,10 @@
|
|||
table-open-cache-instances 8
|
||||
tc-heuristic-recover OFF
|
||||
thread-cache-size 151
|
||||
-thread-pool-idle-timeout 60
|
||||
thread-pool-idle-timeout 60
|
||||
thread-pool-max-threads 1000
|
||||
-thread-pool-oversubscribe 3
|
||||
-thread-pool-stall-limit 500
|
||||
+thread-pool-min-threads 1
|
||||
thread-stack 297984
|
||||
time-format %H:%i:%s
|
||||
timed-mutexes FALSE
|
||||
+thread-pool-mode windows
|
||||
thread-pool-oversubscribe 3
|
||||
thread-pool-prio-kickup-timer 1000
|
||||
thread-pool-priority auto
|
||||
|
|
|
@ -108,9 +108,6 @@ The following options may be given as the first argument:
|
|||
--bulk-insert-buffer-size=#
|
||||
Size of tree cache used in bulk insert optimisation. Note
|
||||
that this is a limit per thread!
|
||||
--changed-page-bitmaps[=name]
|
||||
Enable or disable CHANGED_PAGE_BITMAPS plugin. One of:
|
||||
ON, OFF, FORCE (don't start if the plugin fails to load).
|
||||
--character-set-client-handshake
|
||||
Don't ignore client side character set value sent during
|
||||
handshake.
|
||||
|
@ -1108,6 +1105,15 @@ The following options may be given as the first argument:
|
|||
--thread-pool-oversubscribe=#
|
||||
How many additional active worker threads in a group are
|
||||
allowed.
|
||||
--thread-pool-prio-kickup-timer=#
|
||||
The number of milliseconds before a dequeued low-priority
|
||||
statement is moved to the high-priority queue
|
||||
--thread-pool-priority=name
|
||||
Threadpool priority. High priority connections usually
|
||||
start executing earlier than low priority.If priority set
|
||||
to 'auto', the the actual priority(low or high) is
|
||||
determined based on whether or not connection is inside
|
||||
transaction.
|
||||
--thread-pool-size=#
|
||||
Number of thread groups in the pool. This parameter is
|
||||
roughly equivalent to maximum number of concurrently
|
||||
|
@ -1182,7 +1188,6 @@ binlog-row-event-max-size 1024
|
|||
binlog-row-image FULL
|
||||
binlog-stmt-cache-size 32768
|
||||
bulk-insert-buffer-size 8388608
|
||||
changed-page-bitmaps ON
|
||||
character-set-client-handshake TRUE
|
||||
character-set-filesystem binary
|
||||
character-sets-dir MYSQL_CHARSETSDIR/
|
||||
|
@ -1465,6 +1470,8 @@ thread-cache-size 151
|
|||
thread-pool-idle-timeout 60
|
||||
thread-pool-max-threads 1000
|
||||
thread-pool-oversubscribe 3
|
||||
thread-pool-prio-kickup-timer 1000
|
||||
thread-pool-priority auto
|
||||
thread-pool-stall-limit 500
|
||||
thread-stack 297984
|
||||
time-format %H:%i:%s
|
||||
|
|
|
@ -4,25 +4,25 @@ drop table if exists t1;
|
|||
create table t1(f1 int);
|
||||
insert into t1 values (5);
|
||||
grant select on test.* to ssl_user1@localhost require SSL;
|
||||
grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA";
|
||||
grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client";
|
||||
grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client" ISSUER "/CN=cacert/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB";
|
||||
grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx";
|
||||
grant select on test.* to ssl_user2@localhost require cipher "AES256-SHA";
|
||||
grant select on test.* to ssl_user3@localhost require cipher "AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client";
|
||||
grant select on test.* to ssl_user4@localhost require cipher "AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client" ISSUER "/CN=cacert/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB";
|
||||
grant select on test.* to ssl_user5@localhost require cipher "AES256-SHA" AND SUBJECT "xxx";
|
||||
flush privileges;
|
||||
connect con1,localhost,ssl_user1,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
|
||||
connect con1,localhost,ssl_user1,,,,,SSL-CIPHER=AES256-SHA;
|
||||
connect(localhost,ssl_user2,,test,MASTER_PORT,MASTER_SOCKET);
|
||||
connect con2,localhost,ssl_user2,,,,,SSL-CIPHER=AES256-SHA;
|
||||
connect con2,localhost,ssl_user2,,,,,SSL-CIPHER=AES128-SHA;
|
||||
ERROR 28000: Access denied for user 'ssl_user2'@'localhost' (using password: NO)
|
||||
connect con2,localhost,ssl_user2,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
|
||||
connect con3,localhost,ssl_user3,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
|
||||
connect con4,localhost,ssl_user4,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
|
||||
connect con2,localhost,ssl_user2,,,,,SSL-CIPHER=AES256-SHA;
|
||||
connect con3,localhost,ssl_user3,,,,,SSL-CIPHER=AES256-SHA;
|
||||
connect con4,localhost,ssl_user4,,,,,SSL-CIPHER=AES256-SHA;
|
||||
connect(localhost,ssl_user5,,test,MASTER_PORT,MASTER_SOCKET);
|
||||
connect con5,localhost,ssl_user5,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
|
||||
connect con5,localhost,ssl_user5,,,,,SSL-CIPHER=AES256-SHA;
|
||||
ERROR 28000: Access denied for user 'ssl_user5'@'localhost' (using password: NO)
|
||||
connection con1;
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
Ssl_cipher AES256-SHA
|
||||
select * from t1;
|
||||
f1
|
||||
5
|
||||
|
@ -31,7 +31,7 @@ ERROR 42000: DELETE command denied to user 'ssl_user1'@'localhost' for table 't1
|
|||
connection con2;
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
Ssl_cipher AES256-SHA
|
||||
select * from t1;
|
||||
f1
|
||||
5
|
||||
|
@ -40,7 +40,7 @@ ERROR 42000: DELETE command denied to user 'ssl_user2'@'localhost' for table 't1
|
|||
connection con3;
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
Ssl_cipher AES256-SHA
|
||||
select * from t1;
|
||||
f1
|
||||
5
|
||||
|
@ -49,7 +49,7 @@ ERROR 42000: DELETE command denied to user 'ssl_user3'@'localhost' for table 't1
|
|||
connection con4;
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
Ssl_cipher AES256-SHA
|
||||
select * from t1;
|
||||
f1
|
||||
5
|
||||
|
@ -66,13 +66,11 @@ drop table t1;
|
|||
mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
|
||||
SSL error: Unable to get private key from ''
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: Unable to get private key
|
||||
SSL error: Unable to get certificate from ''
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: Unable to get certificate
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
Ssl_cipher AES256-SHA
|
||||
have_ssl
|
||||
1
|
||||
End of 5.0 tests
|
||||
|
@ -102,8 +100,7 @@ Ssl_cipher AES128-SHA
|
|||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher AES128-SHA
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: Failed to set ciphers to use
|
||||
CREATE TABLE t1(a int);
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxxCREATE TABLE t1(a int);
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
|
@ -207,13 +204,12 @@ UNLOCK TABLES;
|
|||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
SSL error: Unable to get private key from 'MYSQL_TEST_DIR/std_data/client-cert.pem'
|
||||
mysqldump: Got error: 2026: "SSL connection error: Unable to get private key" when trying to connect
|
||||
mysqldump: Got error: 2026: SSL connection error: xxxx
|
||||
DROP TABLE t1;
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
Ssl_cipher AES256-SHA
|
||||
Variable_name Value
|
||||
Ssl_cipher EDH-RSA-DES-CBC3-SHA
|
||||
Ssl_cipher DES-CBC3-SHA
|
||||
select 'is still running; no cipher request crashed the server' as result from dual;
|
||||
result
|
||||
is still running; no cipher request crashed the server
|
||||
|
|
|
@ -3,14 +3,14 @@ grant select on test.* to ssl_sslv3@localhost require cipher "RC4-SHA";
|
|||
create user ssl_tls12@localhost;
|
||||
grant select on test.* to ssl_tls12@localhost require cipher "AES128-SHA256";
|
||||
TLS1.2 ciphers: user is ok with any cipher
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
TLS1.2 ciphers: user requires SSLv3 cipher RC4-SHA
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
TLS1.2 ciphers: user requires TLSv1.2 cipher AES128-SHA256
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
SSLv3 ciphers: user is ok with any cipher
|
||||
Variable_name Value
|
||||
Ssl_cipher RC4-SHA
|
||||
|
|
|
@ -15,13 +15,13 @@ Variable_name Value
|
|||
Ssl_cipher AES128-SHA256
|
||||
ERROR 1045 (28000): Access denied for user 'ssl_tls12'@'localhost' (using password: NO)
|
||||
SSLv3 ciphers: user is ok with any cipher
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
SSLv3 ciphers: user requires SSLv3 cipher RC4-SHA
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
SSLv3 ciphers: user requires TLSv1.2 cipher AES128-SHA256
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
|
||||
drop user ssl_sslv3@localhost;
|
||||
drop user ssl_tls12@localhost;
|
||||
|
|
|
@ -40,11 +40,11 @@ pk1 count(*)
|
|||
# The following should use range(ux_pk1_fd5), two key parts (key_len=5+8=13)
|
||||
EXPLAIN SELECT * FROM t2 USE INDEX(ux_pk1_fd5) WHERE pk1=9 AND fd5 < 500 ORDER BY fd5 DESC LIMIT 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range ux_pk1_fd5 ux_pk1_fd5 13 NULL 137 Using where
|
||||
1 SIMPLE t2 range ux_pk1_fd5 ux_pk1_fd5 13 NULL 138 Using where
|
||||
# This also must use range, not ref. key_len must be 13
|
||||
EXPLAIN SELECT * FROM t2 WHERE pk1=9 AND fd5 < 500 ORDER BY fd5 DESC LIMIT 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 range PRIMARY,ux_pk1_fd5 ux_pk1_fd5 13 NULL 137 Using where
|
||||
1 SIMPLE t2 range PRIMARY,ux_pk1_fd5 ux_pk1_fd5 13 NULL 138 Using where
|
||||
drop table t0,t1, t2;
|
||||
#
|
||||
# MDEV-6814: Server crashes in calculate_key_len on query with ORDER BY
|
||||
|
|
|
@ -385,33 +385,33 @@ DROP TABLE t1;
|
|||
create table t1 (a int) engine=innodb partition by hash(a) ;
|
||||
show table status like 't1';
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 2 8192 16384 0 0 # NULL # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Dynamic 2 8192 16384 0 0 # NULL # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
drop table t1;
|
||||
create table t1 (a int)
|
||||
engine = innodb
|
||||
partition by key (a);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 2 8192 16384 0 0 # NULL # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Dynamic 2 8192 16384 0 0 # NULL # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
insert into t1 values (0), (1), (2), (3);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 4 4096 16384 0 0 # NULL # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Dynamic 4 4096 16384 0 0 # NULL # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
drop table t1;
|
||||
create table t1 (a int auto_increment primary key)
|
||||
engine = innodb
|
||||
partition by key (a);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 2 8192 16384 0 0 # 1 # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Dynamic 2 8192 16384 0 0 # 1 # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
insert into t1 values (NULL), (NULL), (NULL), (NULL);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 4 4096 16384 0 0 # 5 # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Dynamic 4 4096 16384 0 0 # 5 # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
insert into t1 values (NULL), (NULL), (NULL), (NULL);
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 InnoDB 10 Compact 8 2048 16384 0 0 # 9 # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
t1 InnoDB 10 Dynamic 8 2048 16384 0 0 # 9 # NULL NULL latin1_swedish_ci NULL partitioned
|
||||
drop table t1;
|
||||
create table t1 (a int)
|
||||
partition by key (a)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
call mtr.add_suppression("InnoDB: Table .* does not exist in the InnoDB internal data dictionary .*");
|
||||
#
|
||||
# Bug#11766879/Bug#60106: DIFF BETWEEN # OF INDEXES IN MYSQL VS INNODB,
|
||||
# PARTITONING, ON INDEX CREATE
|
||||
|
@ -42,6 +43,8 @@ SET @old_innodb_strict_mode = @@global.innodb_strict_mode;
|
|||
SET @@global.innodb_file_format = Barracuda,
|
||||
@@global.innodb_file_per_table = ON,
|
||||
@@global.innodb_strict_mode = ON;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
connect con1,localhost,root,,;
|
||||
CREATE TABLE t1 (id INT NOT NULL
|
||||
PRIMARY KEY,
|
||||
|
@ -104,6 +107,8 @@ disconnect con2;
|
|||
connection default;
|
||||
SET @@global.innodb_strict_mode = @old_innodb_strict_mode;
|
||||
SET @@global.innodb_file_format = @old_innodb_file_format;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET @@global.innodb_file_per_table = @old_innodb_file_per_table;
|
||||
SET NAMES utf8;
|
||||
CREATE TABLE `t``\""e` (a INT, PRIMARY KEY (a))
|
||||
|
@ -143,12 +148,12 @@ ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
|||
# First table reported in 'SHOW ENGINE InnoDB STATUS'
|
||||
SHOW ENGINE InnoDB STATUS;
|
||||
Type Name Status
|
||||
InnoDB index `PRIMARY` of table `test`.`t``\""e` /* Partition `p0``\""e`, Subpartition `sp0``\""e` */
|
||||
InnoDB index PRIMARY of table `test`.`t``\""e` /* Partition `p0``\""e`, Subpartition `sp0``\""e` */
|
||||
set @old_sql_mode = @@sql_mode;
|
||||
set sql_mode = 'ANSI_QUOTES';
|
||||
SHOW ENGINE InnoDB STATUS;
|
||||
Type Name Status
|
||||
InnoDB index `PRIMARY` of table `test`.`t``\""e` /* Partition `p0``\""e`, Subpartition `sp0``\""e` */
|
||||
InnoDB index PRIMARY of table `test`.`t``\""e` /* Partition `p0``\""e`, Subpartition `sp0``\""e` */
|
||||
set @@sql_mode = @old_sql_mode;
|
||||
connection con1;
|
||||
ROLLBACK;
|
||||
|
|
|
@ -57,7 +57,7 @@ WHERE Population < 200000 AND Name LIKE 'P%' AND
|
|||
(Population > 300000 OR Name LIKE 'T%') AND
|
||||
(Population < 100000 OR Name LIKE 'Pa%');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population,Name Name 35 NULL 235 Using index condition; Using where
|
||||
1 SIMPLE City range Population,Name Name 35 NULL 236 Using index condition; Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE Population > 100000 AND Name LIKE 'Aba%' OR
|
||||
|
@ -65,34 +65,34 @@ Country IN ('CAN', 'ARG') AND ID < 3800 OR
|
|||
Country < 'U' AND Name LIKE 'Zhu%' OR
|
||||
ID BETWEEN 3800 AND 3810;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name Name,Country,PRIMARY 35,7,4 NULL 123 Using sort_union(Name,Country,PRIMARY); Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name Name,Country,PRIMARY 35,7,4 NULL 125 Using sort_union(Name,Country,PRIMARY); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE (Population > 101000 AND Population < 115000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population Population 4 NULL 458 Using index condition
|
||||
1 SIMPLE City range Population Population 4 NULL 459 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE (Population > 101000 AND Population < 102000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population Population 4 NULL 38 Using index condition
|
||||
1 SIMPLE City range Population Population 4 NULL 39 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Country,Name Name,Country 35,3 NULL 213 Using sort_union(Name,Country); Using where
|
||||
1 SIMPLE City index_merge Country,Name Name,Country 35,3 NULL 215 Using sort_union(Name,Country); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
|
||||
AND (Population > 101000 AND Population < 115000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Name,Country 35,3 NULL 213 Using sort_union(Name,Country); Using where
|
||||
1 SIMPLE City index_merge Population,Country,Name Name,Country 35,3 NULL 215 Using sort_union(Name,Country); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
|
||||
AND (Population > 101000 AND Population < 102000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population,Country,Name Population 4 NULL 38 Using index condition; Using where
|
||||
1 SIMPLE City range Population,Country,Name Population 4 NULL 39 Using index condition; Using where
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
|
||||
AND (Population > 101000 AND Population < 115000);
|
||||
|
@ -176,11 +176,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE (Name < 'Bb');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Name Name 35 NULL 373 Using index condition
|
||||
1 SIMPLE City range Name Name 35 NULL 374 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE (Country > 'A' AND Country < 'B');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Country Country 3 NULL 106 Using index condition
|
||||
1 SIMPLE City range Country Country 3 NULL 107 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE (Name BETWEEN 'P' AND 'Pb');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -188,15 +188,15 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE (Name BETWEEN 'P' AND 'S');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Name Name 35 NULL 384 Using index condition
|
||||
1 SIMPLE City range Name Name 35 NULL 385 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE (Population > 101000 AND Population < 110000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population Population 4 NULL 327 Using index condition
|
||||
1 SIMPLE City range Population Population 4 NULL 328 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE (Population > 103000 AND Population < 104000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population Population 4 NULL 36 Using index condition
|
||||
1 SIMPLE City range Population Population 4 NULL 37 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
|
||||
|
@ -208,19 +208,19 @@ SELECT * FROM City
|
|||
WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
|
||||
(Name BETWEEN 'P' AND 'S' AND (Population > 103000 AND Population < 104000));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Name,Population 35,4 NULL 59 Using sort_union(Name,Population); Using where
|
||||
1 SIMPLE City index_merge Population,Country,Name Name,Population 35,4 NULL 60 Using sort_union(Name,Population); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE (Name < 'Bb' AND (Country > 'A' AND Country < 'B')) OR
|
||||
(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Country,Name 3,35 NULL 177 Using sort_union(Country,Name); Using where
|
||||
1 SIMPLE City index_merge Population,Country,Name Country,Name 3,35 NULL 178 Using sort_union(Country,Name); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE (Name < 'Bb' AND (Country > 'A' AND Country < 'B')) OR
|
||||
(Name BETWEEN 'P' AND 'S' AND (Population > 103000 AND Population < 104000));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name Country,Population 3,4 NULL 142 Using sort_union(Country,Population); Using where
|
||||
1 SIMPLE City index_merge Population,Country,Name Country,Population 3,4 NULL 144 Using sort_union(Country,Population); Using where
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
|
||||
(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
|
||||
|
@ -336,15 +336,15 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE (ID < 600) OR (ID BETWEEN 900 AND 1500);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 1198 Using where
|
||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 1200 Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE Country > 'A' AND Country < 'ARG';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Country Country 3 NULL 19 Using index condition
|
||||
1 SIMPLE City range Country Country 3 NULL 20 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE Name LIKE 'H%' OR Name LIKE 'P%' ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Name Name 35 NULL 394 Using index condition; Using where
|
||||
1 SIMPLE City range Name Name 35 NULL 395 Using index condition; Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE Name LIKE 'Ha%' OR Name LIKE 'Pa%' ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -362,7 +362,7 @@ WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
|
|||
OR ((ID BETWEEN 900 AND 1500) AND
|
||||
(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name Name,Country,PRIMARY 39,3,4 NULL 680 Using sort_union(Name,Country,PRIMARY); Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name Name,Country,PRIMARY 39,3,4 NULL 683 Using sort_union(Name,Country,PRIMARY); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((ID < 200) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
|
||||
|
@ -577,11 +577,11 @@ ID Name Country Population
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE Population > 101000 AND Population < 102000;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population Population 4 NULL 38 Using index condition
|
||||
1 SIMPLE City range Population Population 4 NULL 39 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE Population > 101000 AND Population < 110000;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population Population 4 NULL 327 Using index condition
|
||||
1 SIMPLE City range Population Population 4 NULL 328 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE Country < 'C';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -593,7 +593,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE Name BETWEEN 'P' AND 'S';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Name Name 35 NULL 384 Using index condition
|
||||
1 SIMPLE City range Name Name 35 NULL 385 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE Name BETWEEN 'P' AND 'Pb';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -601,7 +601,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE ID BETWEEN 3400 AND 3800;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 400 Using where
|
||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 401 Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -609,7 +609,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE Name LIKE 'P%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Name Name 35 NULL 235 Using index condition
|
||||
1 SIMPLE City range Name Name 35 NULL 236 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Population > 101000 AND Population < 102000) AND
|
||||
|
@ -617,7 +617,7 @@ WHERE ((Population > 101000 AND Population < 102000) AND
|
|||
((ID BETWEEN 3400 AND 3800) AND
|
||||
(Country < 'AGO' OR Name LIKE 'Pa%'));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name Population,PRIMARY 4,4 NULL 438 Using sort_union(Population,PRIMARY); Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name Population,PRIMARY 4,4 NULL 440 Using sort_union(Population,PRIMARY); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Population > 101000 AND Population < 110000) AND
|
||||
|
@ -684,11 +684,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE Name LIKE 'P%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Name Name 35 NULL 235 Using index condition
|
||||
1 SIMPLE City range Name Name 35 NULL 236 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE (Population > 101000 AND Population < 103000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population Population 4 NULL 80 Using index condition
|
||||
1 SIMPLE City range Population Population 4 NULL 81 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE Country='USA';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -702,7 +702,7 @@ SELECT * FROM City
|
|||
WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
|
||||
AND Country='USA';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Population,Country,Name,CountryPopulation CountryPopulation,Name 7,35 NULL 17 Using sort_union(CountryPopulation,Name); Using where
|
||||
1 SIMPLE City index_merge Population,Country,Name,CountryPopulation CountryPopulation,Name 7,35 NULL 18 Using sort_union(CountryPopulation,Name); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
|
||||
|
@ -777,7 +777,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE ID BETWEEN 3500 AND 3800;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 300 Using where
|
||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 301 Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE ID BETWEEN 4000 AND 4300;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -789,11 +789,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN
|
||||
SELECT * FROM City WHERE (Population > 101000 AND Population < 102000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population Population 4 NULL 38 Using index condition
|
||||
1 SIMPLE City range Population Population 4 NULL 39 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE (Population > 101000 AND Population < 103000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Population Population 4 NULL 80 Using index condition
|
||||
1 SIMPLE City range Population Population 4 NULL 81 Using index condition
|
||||
EXPLAIN
|
||||
SELECT * FROM City WHERE Name LIKE 'Pa%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -806,7 +806,7 @@ WHERE ((Population > 101000 AND Population < 102000) OR
|
|||
ID BETWEEN 3790 AND 3800) AND Country='USA'
|
||||
AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryPopulation,PRIMARY 7,4 NULL 13 Using sort_union(CountryPopulation,PRIMARY); Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryPopulation,PRIMARY 7,4 NULL 14 Using sort_union(CountryPopulation,PRIMARY); Using where
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Population > 101000 AND Population < 103000) OR
|
||||
|
@ -869,7 +869,7 @@ WHERE ((Population > 101000 and Population < 102000) OR
|
|||
ID BETWEEN 3790 AND 3800) AND Country='USA'
|
||||
OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryPopulation,CountryName,PRIMARY 7,38,4 NULL 35 Using sort_union(CountryPopulation,CountryName,PRIMARY); Using where
|
||||
1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryPopulation,CountryName,PRIMARY 7,38,4 NULL 36 Using sort_union(CountryPopulation,CountryName,PRIMARY); Using where
|
||||
SELECT * FROM City USE INDEX ()
|
||||
WHERE ((Population > 101000 and Population < 102000) OR
|
||||
ID BETWEEN 3790 AND 3800) AND Country='USA'
|
||||
|
@ -1448,7 +1448,7 @@ explain
|
|||
select * from t1
|
||||
where (home_state = 'ia' or work_state='ia') and account_id = 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index_merge account_id,user_home_state_indx,user_work_state_indx user_home_state_indx,user_work_state_indx 3,3 NULL 10 Using union(user_home_state_indx,user_work_state_indx); Using where
|
||||
1 SIMPLE t1 index_merge account_id,user_home_state_indx,user_work_state_indx user_home_state_indx,user_work_state_indx 3,3 NULL 12 Using union(user_home_state_indx,user_work_state_indx); Using where
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 int(11) NOT NULL auto_increment,
|
||||
|
|
|
@ -73,7 +73,7 @@ test.t1 4108368782
|
|||
drop table if exists t1;
|
||||
create table t1 (a int null, v varchar(100)) engine=innodb checksum=0 row_format=fixed;
|
||||
Warnings:
|
||||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||
Warning 1478 InnoDB: assuming ROW_FORMAT=DYNAMIC.
|
||||
insert into t1 values(null, null), (1, "hello");
|
||||
checksum table t1;
|
||||
Table Checksum
|
||||
|
|
|
@ -73,7 +73,7 @@ test.t1 3885665021
|
|||
drop table if exists t1;
|
||||
create table t1 (a int null, v varchar(100)) engine=innodb checksum=0 row_format=fixed;
|
||||
Warnings:
|
||||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||
Warning 1478 InnoDB: assuming ROW_FORMAT=DYNAMIC.
|
||||
insert into t1 values(null, null), (1, "hello");
|
||||
checksum table t1;
|
||||
Table Checksum
|
||||
|
|
|
@ -144,9 +144,9 @@ order by s_suppkey;
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY supplier index PRIMARY PRIMARY 4 NULL 10 100.00
|
||||
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
|
||||
3 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 228 100.00 Using where; Using temporary; Using filesort
|
||||
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 228 100.00
|
||||
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 228 100.00 Using where; Using temporary; Using filesort
|
||||
3 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 229 100.00 Using where; Using temporary; Using filesort
|
||||
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 229 100.00
|
||||
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 229 100.00 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `dbt3_s001`.`supplier`.`s_suppkey` AS `s_suppkey`,`dbt3_s001`.`supplier`.`s_name` AS `s_name`,`dbt3_s001`.`supplier`.`s_address` AS `s_address`,`dbt3_s001`.`supplier`.`s_phone` AS `s_phone`,`revenue0`.`total_revenue` AS `total_revenue` from `dbt3_s001`.`supplier` join `dbt3_s001`.`revenue0` where ((`revenue0`.`supplier_no` = `dbt3_s001`.`supplier`.`s_suppkey`) and (`revenue0`.`total_revenue` = (select max(`revenue0`.`total_revenue`) from `dbt3_s001`.`revenue0`))) order by `dbt3_s001`.`supplier`.`s_suppkey`
|
||||
select s_suppkey, s_name, s_address, s_phone, total_revenue
|
||||
|
@ -165,9 +165,9 @@ order by s_suppkey;
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY supplier index PRIMARY PRIMARY 4 NULL 10 100.00
|
||||
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
|
||||
3 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 228 100.00 Using where; Using temporary; Using filesort
|
||||
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 227 100.00
|
||||
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 228 100.00 Using where; Using temporary; Using filesort
|
||||
3 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 229 100.00 Using where; Using temporary; Using filesort
|
||||
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 228 100.00
|
||||
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 229 100.00 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `dbt3_s001`.`supplier`.`s_suppkey` AS `s_suppkey`,`dbt3_s001`.`supplier`.`s_name` AS `s_name`,`dbt3_s001`.`supplier`.`s_address` AS `s_address`,`dbt3_s001`.`supplier`.`s_phone` AS `s_phone`,`revenue0`.`total_revenue` AS `total_revenue` from `dbt3_s001`.`supplier` join `dbt3_s001`.`revenue0` where ((`revenue0`.`supplier_no` = `dbt3_s001`.`supplier`.`s_suppkey`) and (`revenue0`.`total_revenue` = (select max(`revenue0`.`total_revenue`) from `dbt3_s001`.`revenue0`))) order by `dbt3_s001`.`supplier`.`s_suppkey`
|
||||
select s_suppkey, s_name, s_address, s_phone, total_revenue
|
||||
|
@ -544,7 +544,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
2 MATERIALIZED part ALL PRIMARY NULL NULL NULL 200 4.17 Using where
|
||||
2 MATERIALIZED partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 4 dbt3_s001.part.p_partkey 3 100.00 Using where
|
||||
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 14.37 Using where
|
||||
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 14.40 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'dbt3_s001.partsupp.ps_partkey' of SELECT #4 was resolved in SELECT #2
|
||||
Note 1276 Field or reference 'dbt3_s001.partsupp.ps_suppkey' of SELECT #4 was resolved in SELECT #2
|
||||
|
@ -600,7 +600,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
2 MATERIALIZED part ALL PRIMARY NULL NULL NULL 200 7.03 Using where
|
||||
2 MATERIALIZED partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 4 dbt3_s001.part.p_partkey 3 100.00 Using where
|
||||
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 14.37 Using where
|
||||
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 14.40 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'dbt3_s001.partsupp.ps_partkey' of SELECT #4 was resolved in SELECT #2
|
||||
Note 1276 Field or reference 'dbt3_s001.partsupp.ps_suppkey' of SELECT #4 was resolved in SELECT #2
|
||||
|
@ -656,7 +656,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
2 MATERIALIZED part ALL PRIMARY NULL NULL NULL 200 7.81 Using where
|
||||
2 MATERIALIZED partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 4 dbt3_s001.part.p_partkey 3 100.00 Using where
|
||||
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 14.37 Using where
|
||||
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 14.40 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'dbt3_s001.partsupp.ps_partkey' of SELECT #4 was resolved in SELECT #2
|
||||
Note 1276 Field or reference 'dbt3_s001.partsupp.ps_suppkey' of SELECT #4 was resolved in SELECT #2
|
||||
|
@ -712,7 +712,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
2 MATERIALIZED part ALL PRIMARY NULL NULL NULL 200 7.81 Using where
|
||||
2 MATERIALIZED partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 4 dbt3_s001.part.p_partkey 3 100.00 Using where
|
||||
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 14.37 Using where
|
||||
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 14.40 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'dbt3_s001.partsupp.ps_partkey' of SELECT #4 was resolved in SELECT #2
|
||||
Note 1276 Field or reference 'dbt3_s001.partsupp.ps_suppkey' of SELECT #4 was resolved in SELECT #2
|
||||
|
|
|
@ -2176,7 +2176,7 @@ still connected?
|
|||
connection default;
|
||||
disconnect ssl_con;
|
||||
create user mysqltest_1@localhost;
|
||||
grant usage on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA";
|
||||
grant usage on mysqltest.* to mysqltest_1@localhost require cipher "AES256-SHA";
|
||||
Variable_name Value
|
||||
Ssl_cipher EDH-RSA-DES-CBC3-SHA
|
||||
Ssl_cipher AES256-SHA
|
||||
drop user mysqltest_1@localhost;
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
have_ssl
|
||||
1
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Bug#21920657: SSL-CA FAILS SILENTLY IF THE PATH CANNOT BE FOUND
|
||||
#
|
||||
# try to connect with wrong '--ssl-ca' path : should fail
|
||||
ERROR 2026 (HY000): SSL connection error: SSL_CTX_set_default_verify_paths failed
|
||||
ERROR 2026 (HY000): SSL connection error: xxxx
|
||||
# try to connect with correct '--ssl-ca' path : should connect
|
||||
have_ssl
|
||||
1
|
||||
|
|
|
@ -67,7 +67,7 @@ and r_name = 'AMERICA' and o_orderdate >= date '1995-01-01'
|
|||
group by n_name
|
||||
order by revenue desc;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_orderdate,i_o_custkey i_o_orderdate 4 NULL 211 Using where; Using temporary; Using filesort
|
||||
1 SIMPLE orders range PRIMARY,i_o_orderdate,i_o_custkey i_o_orderdate 4 NULL 213 Using where; Using temporary; Using filesort
|
||||
1 SIMPLE customer eq_ref PRIMARY,i_c_nationkey PRIMARY 4 dbt3_s001.orders.o_custkey 1 Using where
|
||||
1 SIMPLE nation eq_ref PRIMARY,i_n_regionkey PRIMARY 4 dbt3_s001.customer.c_nationkey 1
|
||||
1 SIMPLE supplier ref PRIMARY,i_s_nationkey i_s_nationkey 5 dbt3_s001.customer.c_nationkey 1 Using index
|
||||
|
@ -198,7 +198,7 @@ and r_name = 'AMERICA' and o_orderdate >= date '1995-01-01'
|
|||
group by n_name
|
||||
order by revenue desc;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE orders range PRIMARY,i_o_orderdate,i_o_custkey i_o_orderdate 4 NULL 211 Using where; Using temporary; Using filesort
|
||||
1 SIMPLE orders range PRIMARY,i_o_orderdate,i_o_custkey i_o_orderdate 4 NULL 213 Using where; Using temporary; Using filesort
|
||||
1 SIMPLE customer eq_ref PRIMARY,i_c_nationkey PRIMARY 4 dbt3_s001.orders.o_custkey 1 Using where
|
||||
1 SIMPLE nation eq_ref PRIMARY,i_n_regionkey PRIMARY 4 dbt3_s001.customer.c_nationkey 1
|
||||
1 SIMPLE supplier ref PRIMARY,i_s_nationkey i_s_nationkey 5 dbt3_s001.customer.c_nationkey 1 Using index
|
||||
|
|
|
@ -256,7 +256,7 @@ a+0 b+0
|
|||
127 403
|
||||
explain select a+0, b+0 from t1 where a > 40 and a < 70 order by 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range a a 2 NULL 8 Using where; Using index; Using filesort
|
||||
1 SIMPLE t1 range a a 2 NULL 9 Using where; Using index; Using filesort
|
||||
select a+0, b+0 from t1 where a > 40 and a < 70 order by 2;
|
||||
a+0 b+0
|
||||
57 135
|
||||
|
|
|
@ -81,9 +81,9 @@ select * from t1 where a=999;
|
|||
a b
|
||||
drop table t1;
|
||||
connect ssl_con,localhost,root,,,,,SSL;
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
have_ssl
|
||||
1
|
||||
connection default;
|
||||
create table t1 (a int, primary key (a), b int default 0) engine=innodb;
|
||||
begin;
|
||||
|
@ -150,11 +150,11 @@ TOTAL_CONNECTIONS 2
|
|||
TOTAL_SSL_CONNECTIONS 1
|
||||
CONCURRENT_CONNECTIONS 0
|
||||
ROWS_READ 6
|
||||
ROWS_SENT 2
|
||||
ROWS_SENT 3
|
||||
ROWS_DELETED 1
|
||||
ROWS_INSERTED 7
|
||||
ROWS_UPDATED 5
|
||||
SELECT_COMMANDS 3
|
||||
SELECT_COMMANDS 4
|
||||
UPDATE_COMMANDS 11
|
||||
OTHER_COMMANDS 7
|
||||
COMMIT_TRANSACTIONS 19
|
||||
|
@ -168,11 +168,11 @@ TOTAL_CONNECTIONS 2
|
|||
TOTAL_SSL_CONNECTIONS 1
|
||||
CONCURRENT_CONNECTIONS 0
|
||||
ROWS_READ 6
|
||||
ROWS_SENT 2
|
||||
ROWS_SENT 3
|
||||
ROWS_DELETED 1
|
||||
ROWS_INSERTED 7
|
||||
ROWS_UPDATED 5
|
||||
SELECT_COMMANDS 3
|
||||
SELECT_COMMANDS 4
|
||||
UPDATE_COMMANDS 11
|
||||
OTHER_COMMANDS 7
|
||||
COMMIT_TRANSACTIONS 19
|
||||
|
|
|
@ -2015,3 +2015,42 @@ AND 15 FOLLOWING)
|
|||
242 NULL
|
||||
238 NULL
|
||||
DROP table orders;
|
||||
#
|
||||
# MDEV-10842: window functions with the same order column
|
||||
# but different directions
|
||||
#
|
||||
create table t1 (
|
||||
pk int primary key,
|
||||
a int,
|
||||
b int,
|
||||
c char(10)
|
||||
);
|
||||
insert into t1 values
|
||||
( 1, 0, 1, 'one'),
|
||||
( 2, 0, 2, 'two'),
|
||||
( 3, 0, 3, 'three'),
|
||||
( 4, 1, 1, 'one'),
|
||||
( 5, 1, 1, 'two'),
|
||||
( 6, 1, 2, 'three'),
|
||||
( 7, 2, NULL, 'n_one'),
|
||||
( 8, 2, 1, 'n_two'),
|
||||
( 9, 2, 2, 'n_three'),
|
||||
(10, 2, 0, 'n_four'),
|
||||
(11, 2, 10, NULL);
|
||||
select pk,
|
||||
row_number() over (order by pk desc) as r_desc,
|
||||
row_number() over (order by pk asc) as r_asc
|
||||
from t1;
|
||||
pk r_desc r_asc
|
||||
1 11 1
|
||||
2 10 2
|
||||
3 9 3
|
||||
4 8 4
|
||||
5 7 5
|
||||
6 6 6
|
||||
7 5 7
|
||||
8 4 8
|
||||
9 3 9
|
||||
10 2 10
|
||||
11 1 11
|
||||
drop table t1;
|
||||
|
|
|
@ -13,5 +13,5 @@
|
|||
innodb_scrub : MDEV-8139
|
||||
innodb_scrub_compressed : MDEV-8139
|
||||
innodb_scrub_background : MDEV-8139
|
||||
innodb_encryption-page-compression : Fails with lost connection at line 156
|
||||
|
||||
innochecksum : MDEV-10727
|
||||
innodb_encryption_discard_import : MDEV-9099
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
call mtr.add_suppression("InnoDB: Error: trying to do an operation on a dropped tablespace.*");
|
||||
SET default_storage_engine = InnoDB;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, c VARCHAR(256));
|
||||
CREATE TABLE t2 AS SELECT * FROM t1;
|
||||
|
|
|
@ -9,13 +9,13 @@ innodb_encryption_threads 4
|
|||
select space,name,current_key_version from information_schema.innodb_tablespaces_encryption order by space;
|
||||
space name current_key_version
|
||||
0 NULL 1
|
||||
1 mysql/innodb_table_stats 1
|
||||
2 mysql/innodb_index_stats 1
|
||||
2 mysql/innodb_table_stats 1
|
||||
3 mysql/innodb_index_stats 1
|
||||
set global debug_key_management_version=10;
|
||||
select space,name,current_key_version from information_schema.innodb_tablespaces_encryption order by space;
|
||||
space name current_key_version
|
||||
0 NULL 10
|
||||
1 mysql/innodb_table_stats 10
|
||||
2 mysql/innodb_index_stats 10
|
||||
2 mysql/innodb_table_stats 10
|
||||
3 mysql/innodb_index_stats 10
|
||||
set global innodb_encrypt_tables=OFF;
|
||||
set global debug_key_management_version=1;
|
||||
|
|
|
@ -8,9 +8,12 @@ call mtr.add_suppression(".*InnoDB: Cannot open table test/.* from the internal
|
|||
call mtr.add_suppression("InnoDB: .ibd file is missing for table test/.*");
|
||||
call mtr.add_suppression("mysqld: File .*");
|
||||
call mtr.add_suppression("InnoDB: Tablespace id .* is encrypted but encryption service or used key_id .* is not available. Can't continue opening tablespace.");
|
||||
call mtr.add_suppression("InnoDB: InnoDB: Page may be an index page where index id is .*");
|
||||
|
||||
# Start server with keys2.txt
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
CREATE TABLE t1 (c VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=2;
|
||||
INSERT INTO t1 VALUES ('foobar');
|
||||
|
@ -36,10 +39,12 @@ SELECT * FROM t1;
|
|||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1812 Tablespace is missing for table 'test/t1'
|
||||
Warning 192 Table test/t1 in tablespace 8 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table test/t1 is encrypted but encryption service or used key_id 2 is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
DROP TABLE t1;
|
||||
Warnings:
|
||||
Warning 192 Table in tablespace 8 encrypted.However key management plugin or used key_id 1 is not found or used encryption algorithm or method does not match. Can't continue opening the table.
|
||||
# Start server with keys.txt
|
||||
CREATE TABLE t2 (c VARCHAR(8), id int not null primary key, b int, key(b)) ENGINE=InnoDB ENCRYPTED=YES;
|
||||
INSERT INTO t2 VALUES ('foobar',1,2);
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
call mtr.add_suppression("InnoDB: Table .* tablespace is set as discarded");
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
set global innodb_compression_algorithm = 1;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(255)) ENGINE=InnoDB PAGE_COMPRESSED=1 ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
|
@ -24,6 +27,8 @@ UNLOCK TABLES;
|
|||
NOT FOUND /foobar/ in t1.ibd
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
# List after t1 DISCARD
|
||||
t1.frm
|
||||
|
@ -37,8 +42,10 @@ t1 CREATE TABLE `t1` (
|
|||
PRIMARY KEY (`pk`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `ENCRYPTED`=YES `ENCRYPTION_KEY_ID`=4
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||
# Tablespaces should be still encrypted
|
||||
# t1 yes on expecting NOT FOUND
|
||||
NOT FOUND /foobar/ in t1.ibd
|
||||
DROP TABLE t1;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue