mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
References lp:1066784 - bzr merge lp:maria/5.5 (rev: 3562)
This commit is contained in:
@ -21,6 +21,12 @@ extra_configs="$extra_configs $local_infile_configs $EXTRA_CONFIGS"
|
||||
|
||||
configure="./configure $base_configs $extra_configs"
|
||||
|
||||
if test "$just_print" = "1" -a "$just_configure" = "1"
|
||||
then
|
||||
just_print=""
|
||||
configure="$configure --print"
|
||||
fi
|
||||
|
||||
commands="\
|
||||
/bin/rm -rf configure;
|
||||
/bin/rm -rf CMakeCache.txt CMakeFiles/
|
||||
|
@ -327,6 +327,10 @@ IF(NOT WITHOUT_SERVER)
|
||||
ADD_SUBDIRECTORY(mysql-test)
|
||||
ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess)
|
||||
ADD_SUBDIRECTORY(sql-bench)
|
||||
|
||||
IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt)
|
||||
ADD_SUBDIRECTORY(internal)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
|
2
VERSION
2
VERSION
@ -1,4 +1,4 @@
|
||||
MYSQL_VERSION_MAJOR=5
|
||||
MYSQL_VERSION_MINOR=5
|
||||
MYSQL_VERSION_PATCH=27
|
||||
MYSQL_VERSION_PATCH=28
|
||||
MYSQL_VERSION_EXTRA=
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Copyright (C) 2000-2009 MySQL AB
|
||||
Copyright 2000, 2010-2011, Oracle and/or its affiliates.
|
||||
Copyright 2000-2010 Monty Program Ab
|
||||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2012, Monty Program Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -15,10 +15,6 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#define COPYRIGHT_NOTICE "\
|
||||
This software comes with ABSOLUTELY NO WARRANTY. This is free software,\n\
|
||||
and you are welcome to modify and redistribute it under the GPL v2 license\n"
|
||||
|
||||
/* mysql command tool
|
||||
* Commands compatible with mSQL by David J. Hughes
|
||||
*
|
||||
@ -111,6 +107,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#include "completion_hash.h"
|
||||
#include <welcome_copyright_notice.h> // ORACLE_WELCOME_COPYRIGHT_NOTICE
|
||||
|
||||
#define PROMPT_CHAR '\\'
|
||||
#define DEFAULT_DELIMITER ";"
|
||||
@ -1193,7 +1190,7 @@ int main(int argc,char *argv[])
|
||||
mysql_thread_id(&mysql), server_version_string(&mysql));
|
||||
put_info((char*) glob_buffer.ptr(),INFO_INFO);
|
||||
|
||||
put_info(COPYRIGHT_NOTICE, INFO_INFO);
|
||||
put_info(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"), INFO_INFO);
|
||||
|
||||
#ifdef HAVE_READLINE
|
||||
initialize_readline((char*) my_progname);
|
||||
@ -1624,7 +1621,7 @@ static void usage(int version)
|
||||
|
||||
if (version)
|
||||
return;
|
||||
printf("%s", COPYRIGHT_NOTICE);
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
printf("Usage: %s [OPTIONS] [database]\n", my_progname);
|
||||
my_print_help(my_long_options);
|
||||
print_defaults("my", load_default_groups);
|
||||
@ -2808,7 +2805,7 @@ static int com_server_help(String *buffer __attribute__((unused)),
|
||||
char *line __attribute__((unused)), char *help_arg)
|
||||
{
|
||||
MYSQL_ROW cur;
|
||||
const char *server_cmd= buffer->ptr();
|
||||
const char *server_cmd;
|
||||
char cmd_buf[100 + 1];
|
||||
MYSQL_RES *result;
|
||||
int error;
|
||||
@ -2823,8 +2820,11 @@ static int com_server_help(String *buffer __attribute__((unused)),
|
||||
*++end_arg= '\0';
|
||||
}
|
||||
(void) strxnmov(cmd_buf, sizeof(cmd_buf), "help '", help_arg, "'", NullS);
|
||||
server_cmd= cmd_buf;
|
||||
}
|
||||
else
|
||||
(void) strxnmov(cmd_buf, sizeof(cmd_buf), "help ", help_arg, NullS);
|
||||
|
||||
server_cmd= cmd_buf;
|
||||
|
||||
if (!status.batch)
|
||||
{
|
||||
@ -2893,6 +2893,11 @@ static int com_server_help(String *buffer __attribute__((unused)),
|
||||
else
|
||||
{
|
||||
put_info("\nNothing found", INFO_INFO);
|
||||
if (strncasecmp(server_cmd, "help 'contents'", 15) == 0)
|
||||
{
|
||||
put_info("\nPlease check if 'help tables' are loaded.\n", INFO_INFO);
|
||||
goto err;
|
||||
}
|
||||
put_info("Please try to run 'help contents' for a list of all accessible topics\n", INFO_INFO);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
/*
|
||||
Copyright (C) 2000 MySQL AB
|
||||
Copyright (c) 2006, 2011, Oracle and/or its affiliates.
|
||||
Copyright (C) 2010-2011 Monty Program Ab
|
||||
Copyright (c) 2006, 2012, Oracle and/or its affiliates.
|
||||
Copyright (C) 2010, 2012, Monty Program Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -252,7 +251,7 @@ get_one_option(int optid, const struct my_option *opt,
|
||||
case '?':
|
||||
printf("%s Ver %s Distrib %s, for %s (%s)\n",
|
||||
my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000, 2010"));
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
puts("MariaDB utility for upgrading databases to new MariaDB versions.\n");
|
||||
my_print_help(my_long_options);
|
||||
die(0);
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2012, Monty Program Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -22,6 +23,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <mysql.h>
|
||||
#include <sql_common.h>
|
||||
#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
|
||||
|
||||
#define ADMIN_VERSION "9.0"
|
||||
#define MAX_MYSQL_VAR 512
|
||||
@ -702,9 +704,7 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
||||
case ADMIN_VER:
|
||||
new_line=1;
|
||||
print_version();
|
||||
puts("Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc,\n"
|
||||
"2009 Monty Program Ab");
|
||||
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n");
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
printf("Server version\t\t%s\n", mysql_get_server_info(mysql));
|
||||
printf("Protocol version\t%d\n", mysql_get_proto_info(mysql));
|
||||
printf("Connection\t\t%s\n",mysql_get_host_info(mysql));
|
||||
@ -1176,9 +1176,7 @@ static void print_version(void)
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
puts("Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc,\n"
|
||||
"2009 Monty Program Ab");
|
||||
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n");
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
puts("Administration program for the mysqld daemon.");
|
||||
printf("Usage: %s [OPTIONS] command command....\n", my_progname);
|
||||
my_print_help(my_long_options);
|
||||
|
@ -38,6 +38,9 @@
|
||||
#include "sql_priv.h"
|
||||
#include "log_event.h"
|
||||
#include "sql_common.h"
|
||||
#include "my_dir.h"
|
||||
#include <welcome_copyright_notice.h> // ORACLE_WELCOME_COPYRIGHT_NOTICE
|
||||
|
||||
|
||||
#include "sql_string.h" // needed for Rpl_filter
|
||||
#include "sql_list.h" // needed for Rpl_filter
|
||||
@ -1501,10 +1504,7 @@ static void print_version()
|
||||
static void usage()
|
||||
{
|
||||
print_version();
|
||||
puts("By Monty and Sasha, for your professional use\n\
|
||||
This software comes with NO WARRANTY: This is free software,\n\
|
||||
and you are welcome to modify and redistribute it under the GPL license.\n");
|
||||
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
printf("\
|
||||
Dumps a MySQL binary log in a format usable for viewing or for piping to\n\
|
||||
the mysql command line client.\n\n");
|
||||
@ -2073,6 +2073,7 @@ static Exit_status check_header(IO_CACHE* file,
|
||||
uchar header[BIN_LOG_HEADER_SIZE];
|
||||
uchar buf[PROBE_HEADER_LEN];
|
||||
my_off_t tmp_pos, pos;
|
||||
MY_STAT my_file_stat;
|
||||
|
||||
delete glob_description_event;
|
||||
if (!(glob_description_event= new Format_description_log_event(3)))
|
||||
@ -2082,7 +2083,16 @@ static Exit_status check_header(IO_CACHE* file,
|
||||
}
|
||||
|
||||
pos= my_b_tell(file);
|
||||
|
||||
/* fstat the file to check if the file is a regular file. */
|
||||
if (my_fstat(file->file, &my_file_stat, MYF(0)) == -1)
|
||||
{
|
||||
error("Unable to stat the file.");
|
||||
return ERROR_STOP;
|
||||
}
|
||||
if ((my_file_stat.st_mode & S_IFMT) == S_IFREG)
|
||||
my_b_seek(file, (my_off_t)0);
|
||||
|
||||
if (my_b_read(file, header, sizeof(header)))
|
||||
{
|
||||
error("Failed reading header; probably an empty file.");
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Copyright (C) 2000 MySQL AB & Jani Tolonen
|
||||
Copyright (c) 2001, 2011, Oracle and/or its affiliates.
|
||||
Copyright (C) 2010-2011 Monty Program Ab
|
||||
/*
|
||||
Copyright (c) 2001, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2011, Monty Program Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -25,6 +25,7 @@
|
||||
#include <mysql_version.h>
|
||||
#include <mysqld_error.h>
|
||||
#include <sslopt-vars.h>
|
||||
#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
|
||||
|
||||
/* Exit codes */
|
||||
|
||||
@ -229,13 +230,7 @@ static void usage(void)
|
||||
{
|
||||
DBUG_ENTER("usage");
|
||||
print_version();
|
||||
puts("By Jani Tolonen, 2001-04-20, MySQL Development Team.\n");
|
||||
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,");
|
||||
puts("and you are welcome to modify and redistribute it under the GPL license.\n");
|
||||
printf("Usage: %s [OPTIONS] database [tables]\n", my_progname);
|
||||
printf("OR %s [OPTIONS] --databases DB1 [DB2 DB3...]\n",
|
||||
my_progname);
|
||||
printf("OR %s [OPTIONS] --all-databases\n\n", my_progname);
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
puts("This program can be used to CHECK (-c, -m, -C), REPAIR (-r), ANALYZE (-a),");
|
||||
puts("or OPTIMIZE (-o) tables. Some of the options (like -e or -q) can be");
|
||||
puts("used at the same time. Not all options are supported by all storage engines.");
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2012, Monty Program Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -616,8 +617,7 @@ static void short_usage_sub(void)
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
puts("By Igor Romanenko, Monty, Jani & Sinisa and others.");
|
||||
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license.\n");
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
puts("Dumping structure and contents of MySQL databases and tables.");
|
||||
short_usage_sub();
|
||||
print_defaults("my",load_default_groups);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -208,7 +208,8 @@ static void usage(void)
|
||||
puts("Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.");
|
||||
puts("Copyright 2008-2011 Oracle and Monty Program Ab.");
|
||||
print_version();
|
||||
printf("\n\
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
printf("\
|
||||
Loads tables from text files in various formats. The base name of the\n\
|
||||
text file must be the name of the table that should be used.\n\
|
||||
If one uses sockets to connect to the MySQL server, the server will open and\n\
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <signal.h>
|
||||
#include <stdarg.h>
|
||||
#include <sslopt-vars.h>
|
||||
#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
|
||||
|
||||
static char * host=0, *opt_password=0, *user=0;
|
||||
static my_bool opt_show_keys= 0, opt_compress= 0, opt_count=0, opt_status= 0;
|
||||
@ -266,9 +267,7 @@ static void print_version(void)
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
puts("Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.");
|
||||
puts("Copyright 2008-2011 Oracle and Monty Program Ab.");
|
||||
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license.\n");
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
puts("Shows the structure of a MySQL database (databases, tables, and columns).\n");
|
||||
printf("Usage: %s [OPTIONS] [database [table [column]]]\n",my_progname);
|
||||
puts("\n\
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -722,7 +722,7 @@ static void print_version(void)
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2005, 2010"));
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2005"));
|
||||
puts("Run a query multiple times against the server.\n");
|
||||
printf("Usage: %s [OPTIONS]\n",my_progname);
|
||||
print_defaults("my",load_default_groups);
|
||||
|
@ -54,6 +54,8 @@
|
||||
#include <signal.h>
|
||||
#include <my_stacktrace.h>
|
||||
|
||||
#include <welcome_copyright_notice.h> // ORACLE_WELCOME_COPYRIGHT_NOTICE
|
||||
|
||||
#ifdef __WIN__
|
||||
#include <crtdbg.h>
|
||||
#define SIGNAL_FMT "exception 0x%x"
|
||||
@ -6961,8 +6963,7 @@ void print_version(void)
|
||||
void usage()
|
||||
{
|
||||
print_version();
|
||||
printf("MySQL AB, by Sasha, Matt, Monty & Jani and others\n");
|
||||
printf("This software comes with ABSOLUTELY NO WARRANTY\n\n");
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
printf("Runs a test against the mysql server and compares output with a results file.\n\n");
|
||||
printf("Usage: %s [OPTIONS] [database] < test_file\n", my_progname);
|
||||
my_print_help(my_long_options);
|
||||
|
@ -1,8 +1,7 @@
|
||||
#ifndef SQL_STRING_INCLUDED
|
||||
#define SQL_STRING_INCLUDED
|
||||
|
||||
/*
|
||||
Copyright (c) 2000, 2010, Oracle and/or its affiliates
|
||||
/* Copyright (c) 2000, 2012, 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
|
||||
@ -194,8 +193,12 @@ public:
|
||||
}
|
||||
bool real_alloc(uint32 arg_length); // Empties old string
|
||||
bool realloc(uint32 arg_length);
|
||||
inline void shrink(uint32 arg_length) // Shrink buffer
|
||||
|
||||
// Shrink the buffer, but only if it is allocated on the heap.
|
||||
inline void shrink(uint32 arg_length)
|
||||
{
|
||||
if (!is_alloced())
|
||||
return;
|
||||
if (arg_length < Alloced_length)
|
||||
{
|
||||
char *new_ptr;
|
||||
@ -211,7 +214,7 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
bool is_alloced() { return alloced; }
|
||||
bool is_alloced() const { return alloced; }
|
||||
inline String& operator = (const String &s)
|
||||
{
|
||||
if (&s != this)
|
||||
|
@ -25,6 +25,7 @@ my $cmakeargs = "";
|
||||
# Assume this script is in <srcroot>/cmake
|
||||
my $srcdir = dirname(dirname(abs_path($0)));
|
||||
my $cmake_install_prefix="";
|
||||
my $just_print= 0;
|
||||
|
||||
# Sets installation directory, bindir, libdir, libexecdir etc
|
||||
# the equivalent CMake variables are given without prefix
|
||||
@ -113,6 +114,11 @@ foreach my $option (@ARGV)
|
||||
system("cmake ${srcdir} -LH");
|
||||
exit(0);
|
||||
}
|
||||
if ($option =~ /print/)
|
||||
{
|
||||
$just_print=1;
|
||||
next;
|
||||
}
|
||||
if($option =~ /with-plugins=/)
|
||||
{
|
||||
my @plugins= split(/,/, substr($option,13));
|
||||
@ -233,6 +239,7 @@ foreach my $option (@ARGV)
|
||||
}
|
||||
|
||||
print("configure.pl : calling cmake $srcdir $cmakeargs\n");
|
||||
exit(0) if ($just_print);
|
||||
unlink("CMakeCache.txt");
|
||||
my $rc = system("cmake $srcdir $cmakeargs");
|
||||
exit($rc);
|
||||
|
@ -62,8 +62,10 @@ SET(CPACK_RPM_SPEC_MORE_DEFINE "${CPACK_RPM_SPEC_MORE_DEFINE}
|
||||
|
||||
SET(CPACK_RPM_PACKAGE_REQUIRES "MariaDB-common")
|
||||
|
||||
SET(CPACK_RPM_server_USER_FILELIST "%ignore /etc" "%ignore /etc/init.d")
|
||||
SET(CPACK_RPM_server_USER_FILELIST "%ignore /etc" "%ignore /etc/init.d" "%config(noreplace) /etc/my.cnf.d/*")
|
||||
SET(CPACK_RPM_common_USER_FILELIST "%config(noreplace) /etc/my.cnf")
|
||||
SET(CPACK_RPM_shared_USER_FILELIST "%config(noreplace) /etc/my.cnf.d/*")
|
||||
SET(CPACK_RPM_client_USER_FILELIST "%config(noreplace) /etc/my.cnf.d/*")
|
||||
|
||||
SET(CPACK_RPM_client_PACKAGE_OBSOLETES "mysql-client MySQL-client MySQL-OurDelta-client")
|
||||
SET(CPACK_RPM_client_PACKAGE_PROVIDES "MariaDB-client MySQL-client mysql-client")
|
||||
@ -83,9 +85,10 @@ SET(CPACK_RPM_server_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} galera")
|
||||
SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh)
|
||||
SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-preun.sh)
|
||||
SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postin.sh)
|
||||
SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh)
|
||||
|
||||
SET(CPACK_RPM_shared_PACKAGE_OBSOLETES "mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared")
|
||||
SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.${SHARED_LIB_MAJOR_VERSION} libmysqlclient.so.${SHARED_LIB_MAJOR_VERSION}(libmysqlclient_${SHARED_LIB_MAJOR_VERSION}) libmysqlclient_r.so.${SHARED_LIB_MAJOR_VERSION} libmysqlclient_r.so.${SHARED_LIB_MAJOR_VERSION}(libmysqlclient_${SHARED_LIB_MAJOR_VERSION})")
|
||||
SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.18 libmysqlclient.so.18(libmysqlclient_16) libmysqlclient.so.18(libmysqlclient_18) libmysqlclient_r.so.18 libmysqlclient_r.so.18(libmysqlclient_18)")
|
||||
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)
|
||||
|
||||
|
@ -133,7 +133,6 @@ MACRO(MYSQL_ADD_PLUGIN)
|
||||
ENDIF()
|
||||
|
||||
ADD_LIBRARY(${target} STATIC ${SOURCES})
|
||||
SET_TARGET_PROPERTIES(${target} PROPERTIES COMPILE_DEFINITONS "MYSQL_SERVER")
|
||||
DTRACE_INSTRUMENT(${target})
|
||||
ADD_DEPENDENCIES(${target} GenError ${ARG_DEPENDENCIES})
|
||||
RESTRICT_SYMBOL_EXPORTS(${target})
|
||||
@ -146,7 +145,7 @@ MACRO(MYSQL_ADD_PLUGIN)
|
||||
DTRACE_INSTRUMENT(${target}_embedded)
|
||||
IF(ARG_RECOMPILE_FOR_EMBEDDED)
|
||||
SET_TARGET_PROPERTIES(${target}_embedded
|
||||
PROPERTIES COMPILE_DEFINITIONS "MYSQL_SERVER;EMBEDDED_LIBRARY")
|
||||
PROPERTIES COMPILE_DEFINITIONS "EMBEDDED_LIBRARY")
|
||||
ENDIF()
|
||||
ADD_DEPENDENCIES(${target}_embedded GenError)
|
||||
ENDIF()
|
||||
|
@ -25,7 +25,7 @@ MACRO (MYSQL_USE_BUNDLED_SSL)
|
||||
SET(SSL_LIBRARIES yassl taocrypt)
|
||||
SET(SSL_INCLUDE_DIRS ${INC_DIRS})
|
||||
SET(SSL_INTERNAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL)
|
||||
SET(SSL_DEFINES "-DHAVE_YASSL -DYASSL_PURE_C -DYASSL_PREFIX -DHAVE_OPENSSL -DYASSL_THREAD_SAFE")
|
||||
SET(SSL_DEFINES "-DHAVE_YASSL -DYASSL_PURE_C -DYASSL_PREFIX -DHAVE_OPENSSL -DMULTI_THREADED")
|
||||
CHANGE_SSL_SETTINGS("bundled")
|
||||
#Remove -fno-implicit-templates
|
||||
#(yassl sources cannot be compiled with it)
|
||||
|
@ -212,7 +212,7 @@ EOF
|
||||
# admin might already have chosen to remove one or more plugins. Newlines are necessary.
|
||||
install_plugins=`/bin/echo -e \
|
||||
"USE mysql;\n" \
|
||||
"CREATE TABLE plugin (name char(64) COLLATE utf8_bin NOT NULL DEFAULT '', " \
|
||||
"CREATE TABLE IF NOT EXISTS plugin (name char(64) COLLATE utf8_bin NOT NULL DEFAULT '', " \
|
||||
" dl char(128) COLLATE utf8_bin NOT NULL DEFAULT '', " \
|
||||
" PRIMARY KEY (name)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='MySQL plugins';" `
|
||||
|
||||
|
1
debian/mariadb-client-5.5.files
vendored
1
debian/mariadb-client-5.5.files
vendored
@ -11,7 +11,6 @@ usr/bin/mysqlimport
|
||||
usr/bin/mysqlreport
|
||||
usr/bin/mysqlshow
|
||||
usr/bin/mysqlslap
|
||||
usr/bin/mytop
|
||||
usr/bin/mysql_waitpid
|
||||
usr/share/lintian/overrides/mariadb-client-5.5
|
||||
usr/share/man/man1/innotop.1
|
||||
|
4
debian/mariadb-server-5.5.mysql.init
vendored
4
debian/mariadb-server-5.5.mysql.init
vendored
@ -109,7 +109,7 @@ case "${1:-''}" in
|
||||
/usr/bin/mysqld_safe > /dev/null 2>&1 &
|
||||
|
||||
# 6s was reported in #352070 to be too few when using ndbcluster
|
||||
for i in $(seq 1 "${MYSQLD_STARTUP_TIMEOUT:-14}"); do
|
||||
for i in $(seq 1 "${MYSQLD_STARTUP_TIMEOUT:-30}"); do
|
||||
sleep 1
|
||||
if mysqld_status check_alive nowarn ; then break; fi
|
||||
log_progress_msg "."
|
||||
@ -142,7 +142,7 @@ case "${1:-''}" in
|
||||
log_daemon_msg "Killing MariaDB database server by signal" "mysqld"
|
||||
killall -15 mysqld
|
||||
server_down=
|
||||
for i in 1 2 3 4 5 6 7 8 9 10; do
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10; do
|
||||
sleep 1
|
||||
if mysqld_status check_dead nowarn; then server_down=1; break; fi
|
||||
done
|
||||
|
@ -13,8 +13,8 @@
|
||||
fi
|
||||
|
||||
# Create database directories
|
||||
-for dir in $ldata $ldata/mysql $ldata/test
|
||||
+for dir in $ldata $ldata/mysql
|
||||
-for dir in "$ldata" "$ldata/mysql" "$ldata/test"
|
||||
+for dir in "$ldata" "$ldata/mysql"
|
||||
do
|
||||
if test ! -d $dir
|
||||
then
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "../storage/ndb/src/kernel/error/ndbd_exit_codes.c"
|
||||
#include "../storage/ndb/include/mgmapi/mgmapi_error.h"
|
||||
#endif
|
||||
#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
|
||||
|
||||
static my_bool verbose, print_all_codes;
|
||||
|
||||
@ -114,7 +115,7 @@ static void print_version(void)
|
||||
static void usage(void)
|
||||
{
|
||||
print_version();
|
||||
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n");
|
||||
puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
|
||||
printf("Print a description for a system error code or a MySQL error code.\n");
|
||||
printf("If you want to get the error for a negative error code, you should use\n-- before the first error code to tell perror that there was no more options.\n\n");
|
||||
printf("Usage: %s [OPTIONS] [ERRORCODE [ERRORCODE...]]\n",my_progname);
|
||||
|
@ -12,7 +12,16 @@ before calling SSL_new();
|
||||
|
||||
*** end Note ***
|
||||
|
||||
yaSSL Release notes, version 2.1.2 (9/2/2011)
|
||||
yaSSL Release notes, version 2.2.2 (7/5/2012)
|
||||
|
||||
This release of yaSSL contains bug fixes and more security checks around
|
||||
malicious certificates.
|
||||
|
||||
See normal build instructions below under 1.0.6.
|
||||
See libcurl build instructions below under 1.3.0 and note in 1.5.8.
|
||||
|
||||
|
||||
*****************yaSSL Release notes, version 2.1.2 (9/2/2011)
|
||||
|
||||
This release of yaSSL contains bug fixes, better non-blocking support with
|
||||
SSL_write, and OpenSSL RSA public key format support.
|
||||
|
@ -27,7 +27,7 @@
|
||||
Visual Studio Source Annotations header (sourceannotations.h) fails
|
||||
to compile if outside of the global namespace.
|
||||
*/
|
||||
#ifdef YASSL_THREAD_SAFE
|
||||
#ifdef MULTI_THREADED
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
@ -36,8 +36,9 @@
|
||||
namespace yaSSL {
|
||||
|
||||
|
||||
#ifdef YASSL_THREAD_SAFE
|
||||
#ifdef MULTI_THREADED
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
|
||||
class Mutex {
|
||||
CRITICAL_SECTION cs_;
|
||||
@ -77,7 +78,7 @@ namespace yaSSL {
|
||||
};
|
||||
|
||||
#endif // _WIN32
|
||||
#else // YASSL_THREAD_SAFE (WE'RE SINGLE)
|
||||
#else // MULTI_THREADED (WE'RE SINGLE)
|
||||
|
||||
class Mutex {
|
||||
public:
|
||||
@ -87,7 +88,7 @@ namespace yaSSL {
|
||||
};
|
||||
};
|
||||
|
||||
#endif // YASSL_THREAD_SAFE
|
||||
#endif // MULTI_THREADED
|
||||
|
||||
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
#include "rsa.h"
|
||||
|
||||
|
||||
#define YASSL_VERSION "2.2.0"
|
||||
#define YASSL_VERSION "2.2.2"
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
@ -65,7 +65,7 @@ enum YasslError {
|
||||
enum Library { yaSSL_Lib = 0, CryptoLib, SocketLib };
|
||||
enum { MAX_ERROR_SZ = 80 };
|
||||
|
||||
void SetErrorString(unsigned long, char*);
|
||||
void SetErrorString(YasslError, char*);
|
||||
|
||||
/* remove for now, if go back to exceptions use this wrapper
|
||||
// Base class for all yaSSL exceptions
|
||||
|
@ -250,8 +250,7 @@ int CertManager::Validate()
|
||||
TaoCrypt::Source source((*last)->get_buffer(), (*last)->get_length());
|
||||
TaoCrypt::CertDecoder cert(source, true, &signers_, verifyNone_);
|
||||
|
||||
int err = cert.GetError().What();
|
||||
if ( err )
|
||||
if (int err = cert.GetError().What())
|
||||
return err;
|
||||
|
||||
const TaoCrypt::PublicKey& key = cert.GetPublicKey();
|
||||
|
@ -26,7 +26,7 @@
|
||||
namespace yaSSL {
|
||||
|
||||
|
||||
#ifdef YASSL_THREAD_SAFE
|
||||
#ifdef MULTI_THREADED
|
||||
#ifdef _WIN32
|
||||
|
||||
Mutex::Mutex()
|
||||
@ -79,7 +79,7 @@ namespace yaSSL {
|
||||
|
||||
|
||||
#endif // _WIN32
|
||||
#endif // YASSL_THREAD_SAFE
|
||||
#endif // MULTI_THREADED
|
||||
|
||||
|
||||
|
||||
|
@ -27,7 +27,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
/* see man pages for function descriptions */
|
||||
|
||||
#include "runtime.hpp"
|
||||
@ -747,7 +746,7 @@ void SSL_CTX_set_verify(SSL_CTX* ctx, int mode, VerifyCallback vc)
|
||||
int SSL_CTX_load_verify_locations(SSL_CTX* ctx, const char* file,
|
||||
const char* path)
|
||||
{
|
||||
int ret = SSL_SUCCESS;
|
||||
int ret = SSL_FAILURE;
|
||||
const int HALF_PATH = 128;
|
||||
|
||||
if (file) ret = read_file(ctx, file, SSL_FILETYPE_PEM, CA);
|
||||
@ -1014,7 +1013,7 @@ char* ERR_error_string(unsigned long errNumber, char* buffer)
|
||||
static char* msg = (char*)"Please supply a buffer for error string";
|
||||
|
||||
if (buffer) {
|
||||
SetErrorString(errNumber, buffer);
|
||||
SetErrorString(YasslError(errNumber), buffer);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
@ -31,11 +31,6 @@
|
||||
#pragma warning(disable: 4996)
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
|
||||
#pragma warning(disable: 4996)
|
||||
#endif
|
||||
|
||||
namespace yaSSL {
|
||||
|
||||
|
||||
@ -60,7 +55,7 @@ Library Error::get_lib() const
|
||||
*/
|
||||
|
||||
|
||||
void SetErrorString(unsigned long error, char* buffer)
|
||||
void SetErrorString(YasslError error, char* buffer)
|
||||
{
|
||||
using namespace TaoCrypt;
|
||||
const int max = MAX_ERROR_SZ; // shorthand
|
||||
|
@ -92,7 +92,6 @@ typedef BlockCipher<ENCRYPTION, AES, CBC> AES_CBC_Encryption;
|
||||
typedef BlockCipher<DECRYPTION, AES, CBC> AES_CBC_Decryption;
|
||||
|
||||
|
||||
|
||||
} // naemspace
|
||||
|
||||
#endif // TAO_CRYPT_AES_HPP
|
||||
|
@ -136,9 +136,13 @@ void CleanUp();
|
||||
|
||||
// Turn on ia32 ASM for Big Integer
|
||||
// CodeWarrior defines _MSC_VER
|
||||
//
|
||||
// Do not use assembler with GCC, as the implementation for it is broken;
|
||||
// it does not use proper GCC asm contraints and makes assumptions about
|
||||
// frame pointers and so on, which breaks depending on GCC version and
|
||||
// optimization level.
|
||||
#if !defined(TAOCRYPT_DISABLE_X86ASM) && ((defined(_MSC_VER) && \
|
||||
!defined(__MWERKS__) && defined(_M_IX86)) || \
|
||||
(defined(__GNUC__) && defined(__i386__)))
|
||||
!defined(__MWERKS__) && defined(_M_IX86)))
|
||||
#define TAOCRYPT_X86ASM_AVAILABLE
|
||||
#endif
|
||||
|
||||
|
@ -51,6 +51,8 @@ word32 PBKDF2_HMAC<T>::DeriveKey(byte* derived, word32 dLen, const byte* pwd,
|
||||
if (dLen > MaxDerivedKeyLength())
|
||||
return 0;
|
||||
|
||||
if (iterations < 0)
|
||||
return 0;
|
||||
|
||||
ByteBlock buffer(T::DIGEST_SIZE);
|
||||
HMAC<T> hmac;
|
||||
|
@ -154,6 +154,8 @@ word32 GetLength(Source& source)
|
||||
else
|
||||
length = b;
|
||||
|
||||
if (source.IsLeft(length) == false) return 0;
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
|
@ -103,6 +103,16 @@ void HexDecoder::Decode()
|
||||
byte b = coded_.next() - 0x30; // 0 starts at 0x30
|
||||
byte b2 = coded_.next() - 0x30;
|
||||
|
||||
// sanity checks
|
||||
if (b >= sizeof(hexDecode)/sizeof(hexDecode[0])) {
|
||||
coded_.SetError(PEM_E);
|
||||
return;
|
||||
}
|
||||
if (b2 >= sizeof(hexDecode)/sizeof(hexDecode[0])) {
|
||||
coded_.SetError(PEM_E);
|
||||
return;
|
||||
}
|
||||
|
||||
b = hexDecode[b];
|
||||
b2 = hexDecode[b2];
|
||||
|
||||
@ -178,6 +188,7 @@ void Base64Decoder::Decode()
|
||||
{
|
||||
word32 bytes = coded_.size();
|
||||
word32 plainSz = bytes - ((bytes + (pemLineSz - 1)) / pemLineSz);
|
||||
const byte maxIdx = (byte)sizeof(base64Decode) + 0x2B - 1;
|
||||
plainSz = ((plainSz * 3) / 4) + 3;
|
||||
decoded_.New(plainSz);
|
||||
|
||||
@ -200,6 +211,16 @@ void Base64Decoder::Decode()
|
||||
if (e4 == pad)
|
||||
pad4 = true;
|
||||
|
||||
if (e1 < 0x2B || e2 < 0x2B || e3 < 0x2B || e4 < 0x2B) {
|
||||
coded_.SetError(PEM_E);
|
||||
return;
|
||||
}
|
||||
|
||||
if (e1 > maxIdx || e2 > maxIdx || e3 > maxIdx || e4 > maxIdx) {
|
||||
coded_.SetError(PEM_E);
|
||||
return;
|
||||
}
|
||||
|
||||
e1 = base64Decode[e1 - 0x2B];
|
||||
e2 = base64Decode[e2 - 0x2B];
|
||||
e3 = (e3 == pad) ? 0 : base64Decode[e3 - 0x2B];
|
||||
|
@ -1,37 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
/* put features that other apps expect from OpenSSL type crypto */
|
||||
|
||||
|
||||
|
||||
extern "C" {
|
||||
|
||||
// for libcurl configure test, these are the signatures they use
|
||||
// locking handled internally by library
|
||||
char CRYPTO_lock() { return 0;}
|
||||
char CRYPTO_add_lock() { return 0;}
|
||||
|
||||
|
||||
// for openvpn, test are the signatures they use
|
||||
char EVP_CIPHER_CTX_init() { return 0; }
|
||||
char CRYPTO_mem_ctrl() { return 0; }
|
||||
} // extern "C"
|
||||
|
||||
|
||||
|
@ -3,6 +3,21 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "benchmark"=.\benchmark\benchmark.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name taocrypt
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "taocrypt"=.\taocrypt.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
@ -15,7 +30,7 @@ Package=<4>
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "test"=.\test.dsp - Package Owner=<4>
|
||||
Project: "test"=.\test\test.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
|
@ -31,7 +31,7 @@
|
||||
To use MemoryTracker merely add this file to your project
|
||||
No need to instantiate anything
|
||||
|
||||
If your app is multi threaded define YASSL_THREAD_SAFE
|
||||
If your app is multi threaded define MULTI_THREADED
|
||||
|
||||
*********************************************************************/
|
||||
|
||||
|
@ -37,12 +37,12 @@ RSC=rc.exe
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "test\Release"
|
||||
# PROP Intermediate_Dir "test\Release"
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "include" /I "mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O2 /I "../include" /I "../mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@ -61,12 +61,12 @@ LINK32=link.exe
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "test\Debug"
|
||||
# PROP Intermediate_Dir "test\Debug"
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../include" /I "../mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@ -87,7 +87,7 @@ LINK32=link.exe
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\test\test.cpp
|
||||
SOURCE=.\test.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
@ -90,7 +90,7 @@ Package=<4>
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "test"=.\taocrypt\test.dsp - Package Owner=<4>
|
||||
Project: "test"=.\taocrypt\test\test.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
@ -113,9 +113,6 @@ Package=<5>
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name taocrypt
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name yassl
|
||||
End Project Dependency
|
||||
|
@ -51,6 +51,7 @@ SET(HEADERS
|
||||
m_ctype.h
|
||||
my_attribute.h
|
||||
my_compiler.h
|
||||
handler_state.h
|
||||
)
|
||||
|
||||
INSTALL(FILES ${HEADERS} DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development)
|
||||
|
21
include/handler_state.h
Normal file
21
include/handler_state.h
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
Map handler error message to sql states. Note that this list MUST be in
|
||||
increasing order!
|
||||
See sql_state.c for usage
|
||||
*/
|
||||
|
||||
{ HA_ERR_KEY_NOT_FOUND, "02000", "" },
|
||||
{ HA_ERR_FOUND_DUPP_KEY, "23000", "" },
|
||||
{ HA_ERR_WRONG_COMMAND, "0A000", "" },
|
||||
{ HA_ERR_UNSUPPORTED, "0A000", "" },
|
||||
{ HA_WRONG_CREATE_OPTION, "0A000", "" },
|
||||
{ HA_ERR_FOUND_DUPP_UNIQUE, "23000", "" },
|
||||
{ HA_ERR_UNKNOWN_CHARSET, "0A000", "" },
|
||||
{ HA_ERR_READ_ONLY_TRANSACTION, "25000", "" },
|
||||
{ HA_ERR_LOCK_DEADLOCK, "40001", "" },
|
||||
{ HA_ERR_NO_REFERENCED_ROW, "23000", "" },
|
||||
{ HA_ERR_ROW_IS_REFERENCED, "23000", "" },
|
||||
{ HA_ERR_TABLE_EXIST, "42S01", "" },
|
||||
{ HA_ERR_FOREIGN_DUPLICATE_KEY, "23000", "" },
|
||||
{ HA_ERR_TABLE_READONLY, "25000", "" },
|
||||
{ HA_ERR_AUTOINC_ERANGE, "22003", "" },
|
@ -848,6 +848,7 @@ int STDCALL mysql_close_start(MYSQL *sock);
|
||||
int STDCALL mysql_close_cont(MYSQL *sock, int status);
|
||||
my_socket STDCALL mysql_get_socket(const MYSQL *mysql);
|
||||
unsigned int STDCALL mysql_get_timeout_value(const MYSQL *mysql);
|
||||
unsigned int STDCALL mysql_get_timeout_value_ms(const MYSQL *mysql);
|
||||
|
||||
/* status return codes */
|
||||
#define MYSQL_NO_DATA 100
|
||||
|
@ -729,3 +729,4 @@ int mysql_close_start(MYSQL *sock);
|
||||
int mysql_close_cont(MYSQL *sock, int status);
|
||||
my_socket mysql_get_socket(const MYSQL *mysql);
|
||||
unsigned int mysql_get_timeout_value(const MYSQL *mysql);
|
||||
unsigned int mysql_get_timeout_value_ms(const MYSQL *mysql);
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include <debug_sync.h>
|
||||
#include <sql_profile.h>
|
||||
#include <table.h>
|
||||
#include <sql_list.h>
|
||||
|
||||
/* Needed to get access to scheduler variables */
|
||||
void* thd_get_scheduler_data(THD *thd);
|
||||
@ -56,9 +57,14 @@ void thd_unlock_data(THD *thd);
|
||||
bool thd_is_transaction_active(THD *thd);
|
||||
int thd_connection_has_data(THD *thd);
|
||||
void thd_set_net_read_write(THD *thd, uint val);
|
||||
uint thd_get_net_read_write(THD *thd);
|
||||
void thd_set_mysys_var(THD *thd, st_my_thread_var *mysys_var);
|
||||
ulong thd_get_net_wait_timeout(THD *thd);
|
||||
my_socket thd_get_fd(THD *thd);
|
||||
|
||||
THD *first_global_thread();
|
||||
THD *next_global_thread(THD *thd);
|
||||
|
||||
/* Print to the MySQL error log */
|
||||
void sql_print_error(const char *format, ...);
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2010, 2011, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2010, 2012, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -16,11 +16,14 @@
|
||||
#ifndef _welcome_copyright_notice_h_
|
||||
#define _welcome_copyright_notice_h_
|
||||
|
||||
#define COPYRIGHT_NOTICE_CURRENT_YEAR "2012"
|
||||
|
||||
/*
|
||||
This define specifies copyright notice which is displayed by every MySQL
|
||||
program on start, or on help screen.
|
||||
*/
|
||||
#define ORACLE_WELCOME_COPYRIGHT_NOTICE(years) \
|
||||
"Copyright (c) " years ", Oracle, Monty Program Ab and others.\n"
|
||||
#define ORACLE_WELCOME_COPYRIGHT_NOTICE(first_year) \
|
||||
"Copyright (c) " first_year ", " COPYRIGHT_NOTICE_CURRENT_YEAR \
|
||||
", Oracle, Monty Program Ab and others.\n"
|
||||
|
||||
#endif /* _welcome_copyright_notice_h_ */
|
||||
|
@ -17,7 +17,6 @@ INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/strings
|
||||
${SSL_INCLUDE_DIRS}
|
||||
${SSL_INTERNAL_INCLUDE_DIRS}
|
||||
|
@ -205,16 +205,55 @@ DROP PROCEDURE p4;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
# Test of a too big SET INSERT_ID: see if the truncated value goes
|
||||
# into binlog (right), or the too big value (wrong); we look at the
|
||||
# binlog further down with SHOW BINLOG EVENTS.
|
||||
# Test of a too big SET INSERT_ID.
|
||||
# This should generate an error and should not be put in binlog
|
||||
# We look at the binlog further down with SHOW BINLOG EVENTS.
|
||||
|
||||
reset master;
|
||||
create table t1 (id tinyint auto_increment primary key);
|
||||
insert into t1 values(5);
|
||||
set insert_id=128;
|
||||
insert into t1 values(null);
|
||||
--error 167
|
||||
insert into t1 values(null) /* Not binlogged */;
|
||||
|
||||
# The followin insert ignore will be put in binlog
|
||||
set insert_id=128;
|
||||
insert ignore into t1 values(null) /* Insert 128 */;
|
||||
|
||||
# Insert with duplicate key error should not go into binglo
|
||||
set insert_id=5;
|
||||
--error ER_DUP_ENTRY
|
||||
insert into t1 values(null) /* Not binlogged */;
|
||||
|
||||
# Insert with autogenerated key + duplicate key error should go into binlog
|
||||
set insert_id=5;
|
||||
insert ignore into t1 values(null) /* Insert 5 */;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
# Same tests but with 2 rows inserted at a time
|
||||
|
||||
create table t1 (id tinyint auto_increment primary key) engine=myisam;
|
||||
set insert_id=128;
|
||||
--error 167
|
||||
insert into t1 values(5),(null) /* Insert_id 128 */;
|
||||
|
||||
# The followin insert ignore will be put in binlog
|
||||
set insert_id=128;
|
||||
insert ignore into t1 values (4),(null) /* Insert_id 128 */;
|
||||
|
||||
# Insert with duplicate key error should not go into binglo
|
||||
set insert_id=5;
|
||||
--error ER_DUP_ENTRY
|
||||
insert into t1 values(3),(null) /* Insert_id 5 */;
|
||||
|
||||
# Insert with autogenerated key + duplicate key error should go into binlog
|
||||
set insert_id=5;
|
||||
insert ignore into t1 values(2),(null) /* Insert_id 5 */;
|
||||
select * from t1 order by id;
|
||||
drop table t1;
|
||||
|
||||
|
||||
# bug#22027
|
||||
create table t1 (a int);
|
||||
create table if not exists t2 select * from t1;
|
||||
|
@ -28,6 +28,7 @@
|
||||
# BUG#20627: INSERT DELAYED does not honour auto_increment_* variables
|
||||
# Bug in this test: BUG#38068: binlog_stm_binlog fails sporadically in pushbuild
|
||||
|
||||
reset master;
|
||||
|
||||
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
||||
|
||||
|
@ -111,7 +111,7 @@ set auto_increment_increment=11;
|
||||
set auto_increment_offset=4;
|
||||
insert into t1 values(null);
|
||||
insert into t1 values(null);
|
||||
--error ER_DUP_ENTRY
|
||||
--error 167
|
||||
insert into t1 values(null);
|
||||
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t1 order by a;
|
||||
|
||||
@ -120,6 +120,8 @@ create table t2 (a tinyint unsigned not null auto_increment primary key) engine=
|
||||
set auto_increment_increment=10;
|
||||
set auto_increment_offset=1;
|
||||
set insert_id=1000;
|
||||
insert into t2 values(10);
|
||||
--error 167
|
||||
insert into t2 values(null);
|
||||
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t2 order by a;
|
||||
|
||||
@ -127,6 +129,7 @@ select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t2 orde
|
||||
create table t3 like t1;
|
||||
set auto_increment_increment=1000;
|
||||
set auto_increment_offset=700;
|
||||
--error 167
|
||||
insert into t3 values(null);
|
||||
select * from t3 order by a;
|
||||
sync_slave_with_master;
|
||||
|
@ -102,7 +102,9 @@ CREATE TABLE t1(a int, UNIQUE(a));
|
||||
--let $_start= query_get_value(SHOW MASTER STATUS, Position, 1)
|
||||
|
||||
INSERT DELAYED IGNORE INTO t1 VALUES(1);
|
||||
--disable_warnings
|
||||
INSERT DELAYED IGNORE INTO t1 VALUES(1);
|
||||
--enable_warnings
|
||||
flush table t1; # to wait for INSERT DELAYED to be done
|
||||
if (`SELECT @@global.binlog_format = 'STATEMENT'`)
|
||||
{
|
||||
|
@ -19,11 +19,12 @@ select count(*) from t1;
|
||||
|
||||
set auto_increment_increment=1000;
|
||||
set auto_increment_offset=700;
|
||||
--error ER_WARN_DATA_OUT_OF_RANGE
|
||||
--error 167
|
||||
insert into t1 values(null);
|
||||
select count(*) from t1;
|
||||
|
||||
set @@sql_mode=@org_mode;
|
||||
--error 167
|
||||
insert into t1 values(null);
|
||||
select * from t1;
|
||||
|
||||
|
@ -150,7 +150,7 @@ select last_insert_id();
|
||||
last_insert_id()
|
||||
255
|
||||
insert into t1 set i = null;
|
||||
ERROR 23000: Duplicate entry '255' for key 'PRIMARY'
|
||||
ERROR 22003: Out of range value for column 'i' at row 1
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
255
|
||||
@ -162,8 +162,7 @@ select last_insert_id();
|
||||
last_insert_id()
|
||||
255
|
||||
insert into t1 set i = null;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'i' at row 1
|
||||
ERROR 22003: Out of range value for column 'i' at row 1
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
255
|
||||
@ -487,7 +486,7 @@ SELECT @@SESSION.AUTO_INCREMENT_OFFSET;
|
||||
@@SESSION.AUTO_INCREMENT_OFFSET
|
||||
1
|
||||
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
|
||||
ERROR 22003: Out of range value for column 't1' at row 167
|
||||
ERROR 22003: Out of range value for column 'c1' at row 2
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1
|
||||
|
266
mysql-test/r/auto_increment_ranges_innodb.result
Normal file
266
mysql-test/r/auto_increment_ranges_innodb.result
Normal file
@ -0,0 +1,266 @@
|
||||
set default_storage_engine=innodb;
|
||||
drop table if exists t1;
|
||||
#
|
||||
# Testing ranges with smallint
|
||||
#
|
||||
create table t1 (a smallint primary key auto_increment);
|
||||
insert into t1 values(32767);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(32767-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
32766
|
||||
32767
|
||||
truncate table t1;
|
||||
insert into t1 values(32767),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
truncate table t1;
|
||||
insert into t1 values(32767-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(32767+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
32767
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with unsigned smallint
|
||||
#
|
||||
create table t1 (a smallint unsigned primary key auto_increment);
|
||||
insert into t1 values(65535);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(65535-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
65534
|
||||
65535
|
||||
truncate table t1;
|
||||
insert into t1 values(65535),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
truncate table t1;
|
||||
insert into t1 values(65535-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(65535+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
65535
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with integer
|
||||
#
|
||||
create table t1 (a int primary key auto_increment);
|
||||
insert into t1 values(2147483647);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(2147483647-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
2147483646
|
||||
2147483647
|
||||
truncate table t1;
|
||||
insert into t1 values(2147483647),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
truncate table t1;
|
||||
insert into t1 values(2147483647-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(2147483647+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
2147483647
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with unsigned integer
|
||||
#
|
||||
create table t1 (a int unsigned primary key auto_increment);
|
||||
insert into t1 values(4294967295);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(4294967295-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
4294967294
|
||||
4294967295
|
||||
truncate table t1;
|
||||
insert into t1 values(4294967295),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
truncate table t1;
|
||||
insert into t1 values(4294967295-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(4294967295+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
4294967295
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with bigint
|
||||
#
|
||||
create table t1 (a bigint primary key auto_increment);
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned));
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned)-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
9223372036854775806
|
||||
9223372036854775807
|
||||
truncate table t1;
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned)),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
truncate table t1;
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned)-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned)+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
9223372036854775807
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with unsigned bigint
|
||||
#
|
||||
create table t1 (a bigint unsigned primary key auto_increment);
|
||||
insert into t1 values(18446744073709551615-1);
|
||||
insert into t1 values(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
insert into t1 values(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
truncate table t1;
|
||||
insert into t1 values(18446744073709551615-1);
|
||||
insert into t1 values(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
insert into t1 values(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
select * from t1;
|
||||
a
|
||||
18446744073709551614
|
||||
truncate table t1;
|
||||
insert into t1 values(18446744073709551615),(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
select * from t1;
|
||||
a
|
||||
truncate table t1;
|
||||
insert into t1 values(18446744073709551615-1),(NULL),(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
drop table t1;
|
||||
#
|
||||
# Test IGNORE and strict mode
|
||||
#
|
||||
create table t1 (a smallint primary key auto_increment);
|
||||
insert ignore into t1 values(32766),(NULL),(NULL),(1);
|
||||
Warnings:
|
||||
Warning 167 Out of range value for column 'a' at row 3
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
32766
|
||||
32767
|
||||
truncate table t1;
|
||||
set @org_mode=@@sql_mode;
|
||||
set @@sql_mode='ansi,traditional';
|
||||
insert ignore into t1 values(32766),(NULL),(NULL);
|
||||
Warnings:
|
||||
Warning 167 Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(32766),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
set @@sql_mode=@org_mode;
|
||||
drop table t1;
|
||||
#
|
||||
# Test auto increment with negative numbers
|
||||
#
|
||||
CREATE TABLE t1 (a INTEGER AUTO_INCREMENT, PRIMARY KEY (a));
|
||||
INSERT INTO t1 VALUES (NULL), (2), (-5), (NULL);
|
||||
INSERT INTO t1 VALUES (NULL);
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
-5
|
||||
1
|
||||
2
|
||||
3
|
||||
5
|
||||
TRUNCATE TABLE t1;
|
||||
INSERT INTO t1 VALUES (-5), (NULL);
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
-5
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test inserting a value out-of-range into an auto increment column
|
||||
#
|
||||
CREATE TABLE t1 (a smallint AUTO_INCREMENT, PRIMARY KEY (a));
|
||||
INSERT INTO t1 VALUES (2);
|
||||
INSERT INTO t1 VALUES (32768);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
INSERT INTO t1 VALUES (NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
2
|
||||
32767
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test old behaviour
|
||||
#
|
||||
create table t1 (a smallint primary key auto_increment);
|
||||
insert into t1 values(32766),(NULL);
|
||||
delete from t1 where a=32767;
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
272
mysql-test/r/auto_increment_ranges_myisam.result
Normal file
272
mysql-test/r/auto_increment_ranges_myisam.result
Normal file
@ -0,0 +1,272 @@
|
||||
set default_storage_engine=MYISAM;
|
||||
drop table if exists t1;
|
||||
#
|
||||
# Testing ranges with smallint
|
||||
#
|
||||
create table t1 (a smallint primary key auto_increment);
|
||||
insert into t1 values(32767);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(32767-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
32766
|
||||
32767
|
||||
truncate table t1;
|
||||
insert into t1 values(32767),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
32767
|
||||
truncate table t1;
|
||||
insert into t1 values(32767-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(32767+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
32767
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with unsigned smallint
|
||||
#
|
||||
create table t1 (a smallint unsigned primary key auto_increment);
|
||||
insert into t1 values(65535);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(65535-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
65534
|
||||
65535
|
||||
truncate table t1;
|
||||
insert into t1 values(65535),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
65535
|
||||
truncate table t1;
|
||||
insert into t1 values(65535-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(65535+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
65535
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with integer
|
||||
#
|
||||
create table t1 (a int primary key auto_increment);
|
||||
insert into t1 values(2147483647);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(2147483647-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
2147483646
|
||||
2147483647
|
||||
truncate table t1;
|
||||
insert into t1 values(2147483647),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
2147483647
|
||||
truncate table t1;
|
||||
insert into t1 values(2147483647-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(2147483647+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
2147483647
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with unsigned integer
|
||||
#
|
||||
create table t1 (a int unsigned primary key auto_increment);
|
||||
insert into t1 values(4294967295);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(4294967295-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
4294967294
|
||||
4294967295
|
||||
truncate table t1;
|
||||
insert into t1 values(4294967295),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
4294967295
|
||||
truncate table t1;
|
||||
insert into t1 values(4294967295-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(4294967295+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
4294967295
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with bigint
|
||||
#
|
||||
create table t1 (a bigint primary key auto_increment);
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned));
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
truncate table t1;
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned)-1);
|
||||
insert into t1 values(NULL);
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
9223372036854775806
|
||||
9223372036854775807
|
||||
truncate table t1;
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned)),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 2
|
||||
select * from t1;
|
||||
a
|
||||
9223372036854775807
|
||||
truncate table t1;
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned)-1),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(cast(9223372036854775807 as unsigned)+1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
9223372036854775807
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
||||
#
|
||||
# Testing ranges with unsigned bigint
|
||||
#
|
||||
create table t1 (a bigint unsigned primary key auto_increment);
|
||||
insert into t1 values(18446744073709551615-1);
|
||||
insert into t1 values(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
insert into t1 values(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
truncate table t1;
|
||||
insert into t1 values(18446744073709551615-1);
|
||||
insert into t1 values(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
insert into t1 values(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
select * from t1;
|
||||
a
|
||||
18446744073709551614
|
||||
truncate table t1;
|
||||
insert into t1 values(18446744073709551615),(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
select * from t1;
|
||||
a
|
||||
18446744073709551615
|
||||
truncate table t1;
|
||||
insert into t1 values(18446744073709551615-1),(NULL),(NULL);
|
||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||
drop table t1;
|
||||
#
|
||||
# Test IGNORE and strict mode
|
||||
#
|
||||
create table t1 (a smallint primary key auto_increment);
|
||||
insert ignore into t1 values(32766),(NULL),(NULL),(1);
|
||||
Warnings:
|
||||
Warning 167 Out of range value for column 'a' at row 3
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
32766
|
||||
32767
|
||||
truncate table t1;
|
||||
set @org_mode=@@sql_mode;
|
||||
set @@sql_mode='ansi,traditional';
|
||||
insert ignore into t1 values(32766),(NULL),(NULL);
|
||||
Warnings:
|
||||
Warning 167 Out of range value for column 'a' at row 3
|
||||
truncate table t1;
|
||||
insert into t1 values(32766),(NULL),(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 3
|
||||
set @@sql_mode=@org_mode;
|
||||
drop table t1;
|
||||
#
|
||||
# Test auto increment with negative numbers
|
||||
#
|
||||
CREATE TABLE t1 (a INTEGER AUTO_INCREMENT, PRIMARY KEY (a));
|
||||
INSERT INTO t1 VALUES (NULL), (2), (-5), (NULL);
|
||||
INSERT INTO t1 VALUES (NULL);
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
-5
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
TRUNCATE TABLE t1;
|
||||
INSERT INTO t1 VALUES (-5), (NULL);
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
-5
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test inserting a value out-of-range into an auto increment column
|
||||
#
|
||||
CREATE TABLE t1 (a smallint AUTO_INCREMENT, PRIMARY KEY (a));
|
||||
INSERT INTO t1 VALUES (2);
|
||||
INSERT INTO t1 VALUES (32768);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
INSERT INTO t1 VALUES (NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
2
|
||||
32767
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test old behaviour
|
||||
#
|
||||
create table t1 (a smallint primary key auto_increment);
|
||||
insert into t1 values(32766),(NULL);
|
||||
delete from t1 where a=32767;
|
||||
insert into t1 values(NULL);
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
drop table t1;
|
@ -529,6 +529,8 @@ SUCCESS
|
||||
# 13. Read-write statement: INSERT IGNORE, change 0 rows.
|
||||
#
|
||||
insert ignore t1 set a=2;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '2' for key 'a'
|
||||
call p_verify_status_increment(2, 2, 1, 0);
|
||||
SUCCESS
|
||||
|
||||
|
@ -2396,6 +2396,8 @@ a b
|
||||
drop table t1;
|
||||
create table if not exists t1 (a int unique, b int)
|
||||
ignore select 1 as a, 1 as b union select 1 as a, 2 as b;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '1' for key 'a'
|
||||
select * from t1;
|
||||
a b
|
||||
1 1
|
||||
|
@ -1687,6 +1687,7 @@ SELECT t.b, t.c, t1.a
|
||||
FROM t1, (SELECT t2.b, t2.c FROM t3 RIGHT JOIN t2 ON t2.a = t3.b) AS t
|
||||
WHERE t.b AND t.c = t1.a;
|
||||
b c a
|
||||
8 c c
|
||||
EXPLAIN EXTENDED
|
||||
SELECT t.b, t.c, t1.a
|
||||
FROM t1, (SELECT t2.b, t2.c FROM t3 RIGHT JOIN t2 ON t2.a = t3.b) AS t
|
||||
@ -1701,6 +1702,7 @@ SELECT t.b, t.c, t1.a
|
||||
FROM t1, (SELECT t2.b, t2.c FROM t3 RIGHT JOIN t2 ON t2.a = t3.b) AS t
|
||||
WHERE t.b <> 0 AND t.c = t1.a;
|
||||
b c a
|
||||
8 c c
|
||||
INSERT INTO t3 VALUES (100), (200);
|
||||
EXPLAIN EXTENDED
|
||||
SELECT t.b, t.c, t1.a
|
||||
@ -1716,7 +1718,7 @@ SELECT t.b, t.c, t1.a
|
||||
FROM t1, (SELECT t2.b, t2.c FROM t3 RIGHT JOIN t2 ON t2.a = t3.b) AS t
|
||||
WHERE t.b AND t.c = t1.a;
|
||||
b c a
|
||||
NULL NULL c
|
||||
8 c c
|
||||
EXPLAIN EXTENDED
|
||||
SELECT t.b, t.c, t1.a
|
||||
FROM t1, (SELECT t2.b, t2.c FROM t3 RIGHT JOIN t2 ON t2.a = t3.b) AS t
|
||||
@ -1731,7 +1733,7 @@ SELECT t.b, t.c, t1.a
|
||||
FROM t1, (SELECT t2.b, t2.c FROM t3 RIGHT JOIN t2 ON t2.a = t3.b) AS t
|
||||
WHERE t.b <> 0 AND t.c = t1.a;
|
||||
b c a
|
||||
NULL NULL c
|
||||
8 c c
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
|
@ -2867,3 +2867,16 @@ SET @@global.max_allowed_packet:= @tmp_max;
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
SELECT @tmp_max:= @@global.max_allowed_packet;
|
||||
@tmp_max:= @@global.max_allowed_packet
|
||||
1048576
|
||||
SET @@global.max_allowed_packet=1024*1024*1024;
|
||||
SELECT @@global.max_allowed_packet;
|
||||
@@global.max_allowed_packet
|
||||
1073741824
|
||||
SELECT CHAR_LENGTH(EXPORT_SET(1,1,1,REPEAT(1,100000000)));
|
||||
CHAR_LENGTH(EXPORT_SET(1,1,1,REPEAT(1,100000000)))
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1301 Result of repeat() was larger than max_allowed_packet (1048576) - truncated
|
||||
SET @@global.max_allowed_packet:= @tmp_max;
|
||||
|
@ -16,6 +16,7 @@ INDEX_STATISTICS
|
||||
INNODB_BUFFER_POOL_PAGES
|
||||
INNODB_BUFFER_POOL_PAGES_BLOB
|
||||
INNODB_BUFFER_POOL_PAGES_INDEX
|
||||
INNODB_CHANGED_PAGES
|
||||
INNODB_CMP
|
||||
INNODB_CMPMEM
|
||||
INNODB_CMPMEM_RESET
|
||||
@ -88,6 +89,7 @@ INDEX_STATISTICS TABLE_SCHEMA
|
||||
INNODB_BUFFER_POOL_PAGES page_type
|
||||
INNODB_BUFFER_POOL_PAGES_BLOB space_id
|
||||
INNODB_BUFFER_POOL_PAGES_INDEX index_id
|
||||
INNODB_CHANGED_PAGES space_id
|
||||
INNODB_CMP page_size
|
||||
INNODB_CMPMEM page_size
|
||||
INNODB_CMPMEM_RESET page_size
|
||||
@ -160,6 +162,7 @@ INDEX_STATISTICS TABLE_SCHEMA
|
||||
INNODB_BUFFER_POOL_PAGES page_type
|
||||
INNODB_BUFFER_POOL_PAGES_BLOB space_id
|
||||
INNODB_BUFFER_POOL_PAGES_INDEX index_id
|
||||
INNODB_CHANGED_PAGES space_id
|
||||
INNODB_CMP page_size
|
||||
INNODB_CMPMEM page_size
|
||||
INNODB_CMPMEM_RESET page_size
|
||||
@ -238,6 +241,7 @@ INDEX_STATISTICS information_schema.INDEX_STATISTICS 1
|
||||
INNODB_BUFFER_POOL_PAGES information_schema.INNODB_BUFFER_POOL_PAGES 1
|
||||
INNODB_BUFFER_POOL_PAGES_BLOB information_schema.INNODB_BUFFER_POOL_PAGES_BLOB 1
|
||||
INNODB_BUFFER_POOL_PAGES_INDEX information_schema.INNODB_BUFFER_POOL_PAGES_INDEX 1
|
||||
INNODB_CHANGED_PAGES information_schema.INNODB_CHANGED_PAGES 1
|
||||
INNODB_CMP information_schema.INNODB_CMP 1
|
||||
INNODB_CMPMEM information_schema.INNODB_CMPMEM 1
|
||||
INNODB_CMPMEM_RESET information_schema.INNODB_CMPMEM_RESET 1
|
||||
@ -299,6 +303,7 @@ Database: information_schema
|
||||
| INNODB_BUFFER_POOL_PAGES |
|
||||
| INNODB_BUFFER_POOL_PAGES_BLOB |
|
||||
| INNODB_BUFFER_POOL_PAGES_INDEX |
|
||||
| INNODB_CHANGED_PAGES |
|
||||
| INNODB_CMP |
|
||||
| INNODB_CMPMEM |
|
||||
| INNODB_CMPMEM_RESET |
|
||||
@ -361,6 +366,7 @@ Database: INFORMATION_SCHEMA
|
||||
| INNODB_BUFFER_POOL_PAGES |
|
||||
| INNODB_BUFFER_POOL_PAGES_BLOB |
|
||||
| INNODB_BUFFER_POOL_PAGES_INDEX |
|
||||
| INNODB_CHANGED_PAGES |
|
||||
| INNODB_CMP |
|
||||
| INNODB_CMPMEM |
|
||||
| INNODB_CMPMEM_RESET |
|
||||
@ -411,5 +417,5 @@ Wildcard: inf_rmation_schema
|
||||
| information_schema |
|
||||
SELECT table_schema, count(*) FROM information_schema.TABLES WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA;
|
||||
table_schema count(*)
|
||||
information_schema 57
|
||||
information_schema 58
|
||||
mysql 23
|
||||
|
@ -327,9 +327,11 @@ select row_count();
|
||||
row_count()
|
||||
3
|
||||
insert ignore into t1 values (1, 1);
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
select row_count();
|
||||
row_count()
|
||||
0
|
||||
-1
|
||||
replace into t1 values (1, 11);
|
||||
select row_count();
|
||||
row_count()
|
||||
@ -371,7 +373,15 @@ drop table t1,t2;
|
||||
create table t1 (id int primary key auto_increment, data int, unique(data));
|
||||
insert ignore into t1 values(NULL,100),(NULL,110),(NULL,120);
|
||||
insert ignore into t1 values(NULL,10),(NULL,20),(NULL,110),(NULL,120),(NULL,100),(NULL,90);
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '110' for key 'data'
|
||||
Warning 1062 Duplicate entry '120' for key 'data'
|
||||
Warning 1062 Duplicate entry '100' for key 'data'
|
||||
insert ignore into t1 values(NULL,130),(NULL,140),(500,110),(550,120),(450,100),(NULL,150);
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '110' for key 'data'
|
||||
Warning 1062 Duplicate entry '120' for key 'data'
|
||||
Warning 1062 Duplicate entry '100' for key 'data'
|
||||
select * from t1 order by id;
|
||||
id data
|
||||
1 100
|
||||
|
@ -6,6 +6,10 @@ insert into t2 (payoutID) SELECT DISTINCT payoutID FROM t1;
|
||||
insert into t2 (payoutID) SELECT payoutID+10 FROM t1;
|
||||
ERROR 23000: Duplicate entry '16' for key 'PRIMARY'
|
||||
insert ignore into t2 (payoutID) SELECT payoutID+10 FROM t1;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '16' for key 'PRIMARY'
|
||||
Warning 1062 Duplicate entry '16' for key 'PRIMARY'
|
||||
Warning 1062 Duplicate entry '22' for key 'PRIMARY'
|
||||
select * from t2;
|
||||
payoutID
|
||||
1
|
||||
|
@ -172,11 +172,15 @@ DROP TABLE t2;
|
||||
create table t1 (a int not null unique) engine=myisam;
|
||||
insert into t1 values (1),(2);
|
||||
insert ignore into t1 select 1 on duplicate key update a=2;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '2' for key 'a'
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
insert ignore into t1 select a from t1 as t2 on duplicate key update a=t1.a+1 ;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '2' for key 'a'
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
|
@ -5589,4 +5589,52 @@ set join_buffer_size=default;
|
||||
set join_cache_level=default;
|
||||
set optimizer_switch=@tmp_optimizer_switch;
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# Bug #1058071: LEFT JOIN using blobs
|
||||
# (mdev-564) when join buffer size is small
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
col269 decimal(31,10) unsigned DEFAULT NULL,
|
||||
col280 multipoint DEFAULT NULL,
|
||||
col281 tinyint(1) DEFAULT NULL,
|
||||
col282 time NOT NULL,
|
||||
col284 datetime DEFAULT NULL,
|
||||
col286 date DEFAULT NULL,
|
||||
col287 datetime DEFAULT NULL,
|
||||
col288 decimal(30,29) DEFAULT NULL,
|
||||
col291 time DEFAULT NULL,
|
||||
col292 time DEFAULT NULL
|
||||
) ENGINE=Aria;
|
||||
INSERT INTO t1 VALUES
|
||||
(0.0,PointFromText('POINT(9 0)'),0,'11:24:05','2013-04-14 21:30:28',NULL,'2011-12-20 06:00:34',9.9,'13:04:39',NULL),
|
||||
(0.0,NULL,127,'05:43:12','2012-09-05 06:15:27','2027-01-01','2011-10-29 10:48:29',0.0,'06:24:05','11:33:37'),
|
||||
(0.0,NULL,127,'12:54:41','2013-01-12 11:32:58','2011-11-03','2013-01-03 02:00:34',00,'11:54:15','20:19:15'),
|
||||
(0.0,PointFromText('POINT(9 0)'),0,'19:48:07','2012-07-16 15:45:25','2012-03-25','2013-09-07 17:21:52',0.5,'17:36:54','21:24:19'),
|
||||
(0.0,PointFromText('POINT(9 0)'),0,'03:43:48','2012-09-28 00:00:00','2012-06-26','2011-11-16 05:01:09',00,'01:25:42','19:30:06'),
|
||||
(0.0,LineStringFromText('LINESTRING(0 0,9 9,0 0,9 0,0 0)'),127,'11:33:21','2012-03-31 10:29:22','2012-10-10','2012-04-21 19:21:06',NULL,'05:13:22','09:48:34'),
|
||||
(NULL,PointFromText('POINT(9 0)'),127,'00:00:00','0000-00-00','2012-04-04 21:26:12','2013-03-04',0.0,'12:54:30',NULL),
|
||||
(NULL,PointFromText('POINT(9 0)'),1,'00:00:00','2013-05-01 22:37:49','2013-06-26','2012-09-22 17:31:03',0.0,'08:09:57','11:15:36');
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'col286' at row 7
|
||||
CREATE TABLE t2 (b int) ENGINE=Aria;
|
||||
INSERT INTO t2 VALUES (NULL);
|
||||
CREATE TABLE t3 (c int) ENGINE=Aria;
|
||||
INSERT INTO t3 VALUES (NULL);
|
||||
set @tmp_optimizer_switch=@@optimizer_switch;
|
||||
set optimizer_switch = 'outer_join_with_cache=on,join_cache_incremental=on';
|
||||
set join_buffer_size=128;
|
||||
EXPLAIN
|
||||
SELECT 1 AS c FROM t1 NATURAL LEFT JOIN t2 LEFT OUTER JOIN t3 ON 1
|
||||
GROUP BY elt(t1.col282,1,t1.col280);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 8 Using temporary; Using filesort
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||
SELECT 1 AS c FROM t1 NATURAL LEFT JOIN t2 LEFT OUTER JOIN t3 ON 1
|
||||
GROUP BY elt(t1.col282,1,t1.col280);
|
||||
c
|
||||
1
|
||||
set join_buffer_size=default;
|
||||
set optimizer_switch=@tmp_optimizer_switch;
|
||||
DROP table t1,t2,t3;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
|
@ -199,7 +199,7 @@ SELECT @@general_log, @@log;
|
||||
1 1
|
||||
SET GLOBAL log = 0;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@log' is deprecated and will be removed in MariaDB 7.0. Please use '@@general_log' instead
|
||||
Warning 1287 '@@log' is deprecated and will be removed in a future release. Please use '@@general_log' instead
|
||||
SHOW VARIABLES LIKE 'general_log';
|
||||
Variable_name Value
|
||||
general_log OFF
|
||||
@ -230,7 +230,7 @@ SELECT @@slow_query_log, @@log_slow_queries;
|
||||
0 0
|
||||
SET GLOBAL log_slow_queries = 0;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MariaDB 7.0. Please use '@@slow_query_log' instead
|
||||
Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
|
||||
SHOW VARIABLES LIKE 'slow_query_log';
|
||||
Variable_name Value
|
||||
slow_query_log OFF
|
||||
@ -283,16 +283,16 @@ SET GLOBAL slow_query_log_file = @old_slow_query_log_file;
|
||||
deprecated:
|
||||
SET GLOBAL log = 0;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@log' is deprecated and will be removed in MariaDB 7.0. Please use '@@general_log' instead
|
||||
Warning 1287 '@@log' is deprecated and will be removed in a future release. Please use '@@general_log' instead
|
||||
SET GLOBAL log_slow_queries = 0;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MariaDB 7.0. Please use '@@slow_query_log' instead
|
||||
Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
|
||||
SET GLOBAL log = DEFAULT;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@log' is deprecated and will be removed in MariaDB 7.0. Please use '@@general_log' instead
|
||||
Warning 1287 '@@log' is deprecated and will be removed in a future release. Please use '@@general_log' instead
|
||||
SET GLOBAL log_slow_queries = DEFAULT;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MariaDB 7.0. Please use '@@slow_query_log' instead
|
||||
Warning 1287 '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead
|
||||
not deprecated:
|
||||
SELECT @@global.general_log_file INTO @my_glf;
|
||||
SELECT @@global.slow_query_log_file INTO @my_sqlf;
|
||||
|
@ -702,6 +702,8 @@ id
|
||||
2
|
||||
99
|
||||
insert ignore into t1 values (100,1,2,'D'),(1,1,99,'D');
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '1-1' for key 'PRIMARY'
|
||||
commit;
|
||||
select id,id3 from t1;
|
||||
id id3
|
||||
|
@ -278,6 +278,8 @@ bb-1 NULL cc-2 NULL-1
|
||||
drop table t1, t2, t3, t4;
|
||||
create table t1 (a int, b int not null,unique key (a,b),index(b));
|
||||
insert ignore into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(null,7),(9,9),(8,8),(7,7),(null,9),(null,9),(6,6);
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '6-6' for key 'a'
|
||||
create table t2 like t1;
|
||||
insert into t2 select * from t1;
|
||||
alter table t1 modify b blob not null, add c int not null, drop key a, add unique key (a,b(20),c), drop key b, add key (b(10));
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- r/mysqld--help.result 2012-01-13 16:50:49.000000000 +0100
|
||||
+++ r/mysqld--help-win.result 2012-01-19 14:12:00.000000000 +0100
|
||||
@@ -240,7 +240,6 @@
|
||||
--- mysql-test/r/mysqld--help.result 2012-09-08 22:22:06 +0000
|
||||
+++ mysql-test/r/mysqld--help.result 2012-10-01 14:03:59 +0000
|
||||
@@ -244,7 +244,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
|
||||
@@ -436,6 +435,7 @@
|
||||
@@ -440,6 +439,7 @@
|
||||
NULLS_UNEQUAL (default behavior for 4.1 and later),
|
||||
NULLS_EQUAL (emulate 4.0 behavior), and NULLS_IGNORED
|
||||
--myisam-use-mmap Use memory mapping for reading and writing MyISAM tables
|
||||
@ -16,7 +16,7 @@
|
||||
--net-buffer-length=#
|
||||
Buffer length for TCP/IP and socket communication
|
||||
--net-read-timeout=#
|
||||
@@ -695,6 +695,9 @@
|
||||
@@ -707,6 +707,9 @@
|
||||
files within specified directory
|
||||
--server-id=# Uniquely identifies the server instance in the community
|
||||
of replication partners
|
||||
@ -26,7 +26,7 @@
|
||||
--show-slave-auth-info
|
||||
Show user and password in SHOW SLAVE HOSTS on this
|
||||
master.
|
||||
@@ -759,6 +762,10 @@
|
||||
@@ -774,6 +777,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
|
||||
@@ -767,6 +774,7 @@
|
||||
@@ -782,6 +789,7 @@
|
||||
for the complete list of valid sql modes
|
||||
--stack-trace Print a symbolic stack trace on failure
|
||||
(Defaults to on; use --skip-stack-trace to disable.)
|
||||
@ -45,7 +45,7 @@
|
||||
--stored-program-cache=#
|
||||
The soft upper limit for number of cached stored routines
|
||||
for one connection.
|
||||
@@ -807,8 +815,8 @@
|
||||
@@ -822,8 +830,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,
|
||||
@ -56,15 +56,15 @@
|
||||
--transaction-alloc-block-size=#
|
||||
Allocation block size for transactions to be stored in
|
||||
binary log
|
||||
@@ -908,7 +916,6 @@
|
||||
@@ -923,7 +931,6 @@ key-cache-age-threshold 300
|
||||
key-cache-block-size 1024
|
||||
key-cache-division-limit 100
|
||||
key-cache-segments 0
|
||||
language MYSQL_SHAREDIR/
|
||||
-large-pages FALSE
|
||||
lc-messages en_US
|
||||
lc-messages-dir MYSQL_SHAREDIR/
|
||||
lc-time-names en_US
|
||||
@@ -971,6 +978,7 @@
|
||||
@@ -986,6 +993,7 @@ myisam-repair-threads 1
|
||||
myisam-sort-buffer-size 8388608
|
||||
myisam-stats-method nulls_unequal
|
||||
myisam-use-mmap FALSE
|
||||
@ -72,7 +72,7 @@
|
||||
net-buffer-length 16384
|
||||
net-read-timeout 30
|
||||
net-retry-count 10
|
||||
@@ -1035,6 +1043,8 @@
|
||||
@@ -1051,6 +1059,8 @@ safe-user-create FALSE
|
||||
secure-auth FALSE
|
||||
secure-file-priv (No default value)
|
||||
server-id 0
|
||||
@ -81,7 +81,7 @@
|
||||
show-slave-auth-info FALSE
|
||||
skip-grant-tables TRUE
|
||||
skip-name-resolve FALSE
|
||||
@@ -1050,6 +1060,7 @@
|
||||
@@ -1067,6 +1077,7 @@ slave-transaction-retries 10
|
||||
slave-type-conversions
|
||||
slow-launch-time 2
|
||||
slow-query-log FALSE
|
||||
@ -89,3 +89,4 @@
|
||||
sort-buffer-size 2097152
|
||||
sql-mode
|
||||
stack-trace TRUE
|
||||
|
||||
|
@ -204,6 +204,10 @@ The following options may be given as the first argument:
|
||||
-?, --help Display this help and exit.
|
||||
--ignore-builtin-innodb
|
||||
Disable initialization of builtin InnoDB plugin
|
||||
--ignore-db-dirs=name
|
||||
Specifies a directory to add to the ignore list when
|
||||
collecting database names from the datadir. Put a blank
|
||||
argument to reset the list accumulated so far.
|
||||
--init-connect=name Command(s) that are executed for each new connection
|
||||
(unless the user has SUPER privilege)
|
||||
--init-file=name Read SQL commands from this file at startup
|
||||
@ -909,6 +913,7 @@ general-log FALSE
|
||||
group-concat-max-len 1024
|
||||
help TRUE
|
||||
ignore-builtin-innodb FALSE
|
||||
ignore-db-dirs
|
||||
init-connect
|
||||
init-file (No default value)
|
||||
init-rpl-role MASTER
|
||||
|
@ -1,6 +1,8 @@
|
||||
drop table if exists t1,t2;
|
||||
create table t1 (a int, b int not null,unique key (a,b),index(b)) engine=myisam;
|
||||
insert ignore into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(null,7),(9,9),(8,8),(7,7),(null,9),(null,9),(6,6);
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '6-6' for key 'a'
|
||||
explain select * from t1 where a is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref a a 5 const 3 Using where; Using index
|
||||
|
@ -44,9 +44,9 @@ ERROR 42000: DELETE command denied to user 'ssl_user4'@'localhost' for table 't1
|
||||
drop user ssl_user1@localhost, ssl_user2@localhost,
|
||||
ssl_user3@localhost, ssl_user4@localhost, ssl_user5@localhost;
|
||||
drop table t1;
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: ASN: bad other signature confirmation
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: ASN: bad other signature confirmation
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: ASN: bad other signature confirmation
|
||||
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 ''
|
||||
|
@ -1,4 +1,5 @@
|
||||
drop table if exists t1,t2;
|
||||
set @@sort_buffer_size=32804;
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) NOT NULL default '0',
|
||||
`id2` int(11) NOT NULL default '0',
|
||||
|
@ -777,3 +777,14 @@ execute stmt1 ;
|
||||
prepare stmt1 from ' select * from t5 ' ;
|
||||
execute stmt1 ;
|
||||
drop table t1, t5, t9;
|
||||
#
|
||||
# testcase for bug#11765413 - Crash with dependent subquery and
|
||||
# prepared statement
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (1);
|
||||
prepare stmt1 from "select 1 from t1 where 1=(select 1 from t1 having c1)";
|
||||
execute stmt1;
|
||||
1
|
||||
1
|
||||
drop prepare stmt1;
|
||||
drop table t1;
|
||||
|
@ -13,9 +13,9 @@ drop table t1;
|
||||
create table t1 (a tinyint not null auto_increment primary key, b char(20) default "default_value");
|
||||
insert into t1 values (126,"first"),(63, "middle"),(0,"last");
|
||||
insert into t1 values (0,"error");
|
||||
ERROR 23000: Duplicate entry '127' for key 'PRIMARY'
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
replace into t1 values (0,"error");
|
||||
ERROR 23000: Duplicate entry '127' for key 'PRIMARY'
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
replace into t1 values (126,"first updated");
|
||||
replace into t1 values (63,default);
|
||||
select * from t1;
|
||||
|
@ -4887,7 +4887,7 @@ CREATE TABLE t5 (f1 int) ;
|
||||
INSERT INTO t5 VALUES (20),(5);
|
||||
CREATE TABLE t6(f1 int);
|
||||
INSERT INTO t6 VALUES (9),(7);
|
||||
SET SESSION join_buffer_size = 2048;
|
||||
SET SESSION join_buffer_size = 2176;
|
||||
EXPLAIN
|
||||
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -4901,50 +4901,50 @@ SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||
f1 f1 f1 f1 f2 f1 f1
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
SET SESSION join_buffer_size = DEFAULT;
|
||||
|
@ -4898,7 +4898,7 @@ CREATE TABLE t5 (f1 int) ;
|
||||
INSERT INTO t5 VALUES (20),(5);
|
||||
CREATE TABLE t6(f1 int);
|
||||
INSERT INTO t6 VALUES (9),(7);
|
||||
SET SESSION join_buffer_size = 2048;
|
||||
SET SESSION join_buffer_size = 2176;
|
||||
EXPLAIN
|
||||
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -4913,48 +4913,48 @@ f1 f1 f1 f1 f2 f1 f1
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
|
@ -4887,7 +4887,7 @@ CREATE TABLE t5 (f1 int) ;
|
||||
INSERT INTO t5 VALUES (20),(5);
|
||||
CREATE TABLE t6(f1 int);
|
||||
INSERT INTO t6 VALUES (9),(7);
|
||||
SET SESSION join_buffer_size = 2048;
|
||||
SET SESSION join_buffer_size = 2176;
|
||||
EXPLAIN
|
||||
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -4901,50 +4901,50 @@ SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||
f1 f1 f1 f1 f2 f1 f1
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 9
|
||||
3 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 20 9
|
||||
18 9 NULL NULL NULL 20 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 20 7
|
||||
3 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 20 7
|
||||
18 9 NULL NULL NULL 20 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 9
|
||||
3 9 NULL NULL NULL 5 9
|
||||
7 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 9
|
||||
18 9 NULL NULL NULL 5 7
|
||||
3 9 NULL NULL NULL 5 7
|
||||
7 9 NULL NULL NULL 5 7
|
||||
18 9 NULL NULL NULL 5 7
|
||||
SET SESSION join_buffer_size = DEFAULT;
|
||||
|
@ -20,9 +20,7 @@ count(*)
|
||||
0
|
||||
set @@sql_mode=@org_mode;
|
||||
insert into t1 values(null);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
127
|
||||
drop table t1;
|
||||
|
@ -20,9 +20,7 @@ count(*)
|
||||
0
|
||||
set @@sql_mode=@org_mode;
|
||||
insert into t1 values(null);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
127
|
||||
drop table t1;
|
||||
|
@ -20,9 +20,7 @@ count(*)
|
||||
0
|
||||
set @@sql_mode=@org_mode;
|
||||
insert into t1 values(null);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
ERROR 22003: Out of range value for column 'a' at row 1
|
||||
select * from t1;
|
||||
a
|
||||
127
|
||||
drop table t1;
|
||||
|
@ -6638,6 +6638,23 @@ a ( 3, 3 ) NOT IN ( SELECT NULL, NULL )
|
||||
set optimizer_switch=@mdev367_optimizer_switch;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-521 single value subselect transformation problem
|
||||
#
|
||||
CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('u1'),('u2');
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
FLUSH TABLES;
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
DROP TABLE t1;
|
||||
# return optimizer switch changed in the beginning of this test
|
||||
set optimizer_switch=@subselect_tmp;
|
||||
#
|
||||
# lp:944706 Query with impossible or constant subquery in WHERE or HAVING is not
|
||||
# precomputed and thus not part of optimization
|
||||
#
|
||||
@ -6847,6 +6864,27 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-435: Expensive subqueries may be evaluated during optimization in merge_key_fields
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (8),(0);
|
||||
CREATE TABLE t2 (b INT, c VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (4,'j'),(6,'v');
|
||||
CREATE TABLE t3 (d VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES ('b'),('c');
|
||||
EXPLAIN
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY <subquery3> ALL distinct_key NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
a
|
||||
drop table t1, t2, t3;
|
||||
#
|
||||
# MDEV-405: Server crashes in test_if_skip_sort_order on EXPLAIN with GROUP BY and HAVING in EXISTS subquery
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a));
|
||||
|
@ -179,4 +179,23 @@ pk a b
|
||||
SET optimizer_switch=@tmp_optimizer_switch;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# MDEV-567: Wrong result from a query with correlated subquery if ICP is allowed
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int, INDEX idx(a));
|
||||
INSERT INTO t1 VALUES (9,0), (7,1), (1,9), (7,3), (2,1);
|
||||
CREATE TABLE t2 (a int, b int, INDEX idx(a));
|
||||
INSERT INTO t2 VALUES (2,1), (6,4), (7,6), (9,4);
|
||||
CREATE TABLE t3 (a int, b int);
|
||||
INSERT INTO t3 VALUES (1,0), (1,1), (1,3);
|
||||
SELECT * FROM t3
|
||||
WHERE a = (SELECT COUNT(DISTINCT t2.b) FROM t1, t2
|
||||
WHERE t1.a = t2.a AND t2.a BETWEEN 7 AND 9
|
||||
AND t3.b = t1.b
|
||||
GROUP BY t1.b);
|
||||
a b
|
||||
1 0
|
||||
1 1
|
||||
1 3
|
||||
DROP TABLE t1, t2, t3;
|
||||
set optimizer_switch=@subselect2_test_tmp;
|
||||
|
@ -206,6 +206,165 @@ default(a)
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
DROP TABLE t;
|
||||
#
|
||||
# LP BUG#1009187, MDEV-373, MYSQL bug#58628
|
||||
# Wrong result for a query with [NOT] IN subquery predicate if
|
||||
# the left part of the predicate is explicit NULL
|
||||
#
|
||||
CREATE TABLE t1 (pk INT NOT NULL, i INT NOT NULL);
|
||||
INSERT INTO t1 VALUES (0,10), (1,20), (2,30), (3,40);
|
||||
CREATE TABLE t2a (pk INT NOT NULL, i INT NOT NULL, PRIMARY KEY(i,pk));
|
||||
INSERT INTO t2a VALUES (0,0), (1,1), (2,2), (3,3);
|
||||
CREATE TABLE t2b (pk INT, i INT);
|
||||
INSERT INTO t2b VALUES (0,0), (1,1), (2,2), (3,3);
|
||||
CREATE TABLE t2c (pk INT NOT NULL, i INT NOT NULL);
|
||||
INSERT INTO t2c VALUES (0,0), (1,1), (2,2), (3,3);
|
||||
create index it2c on t2c (i,pk);
|
||||
CREATE TABLE t2d (pk INT NOT NULL, i INT NOT NULL, PRIMARY KEY(i));
|
||||
INSERT INTO t2d VALUES (0,0), (1,1), (2,2), (3,3);
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE NULL NOT IN (SELECT t2a.i FROM t2a WHERE t2a.pk = t1.pk);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
2 DEPENDENT SUBQUERY t2a unique_subquery PRIMARY PRIMARY 8 const,test.t1.pk 1 Using index; Using where; Full scan on NULL key
|
||||
SELECT * FROM t1 WHERE NULL NOT IN (SELECT t2a.i FROM t2a WHERE t2a.pk = t1.pk);
|
||||
pk i
|
||||
SELECT * FROM t1 WHERE 1+NULL NOT IN (SELECT t2a.i FROM t2a WHERE t2a.pk = t1.pk);
|
||||
pk i
|
||||
SELECT * FROM t1 WHERE NULL IN (SELECT t2a.i FROM t2a WHERE t2a.pk = t1.pk) IS UNKNOWN;
|
||||
pk i
|
||||
0 10
|
||||
1 20
|
||||
2 30
|
||||
3 40
|
||||
SELECT t1.pk, NULL NOT IN (SELECT t2a.i FROM t2a WHERE t2a.pk = t1.pk) FROM t1;
|
||||
pk NULL NOT IN (SELECT t2a.i FROM t2a WHERE t2a.pk = t1.pk)
|
||||
0 NULL
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 NULL
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE NULL NOT IN (SELECT t2b.i FROM t2b WHERE t2b.pk = t1.pk);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
2 DEPENDENT SUBQUERY t2b ALL NULL NULL NULL NULL 4 Using where
|
||||
SELECT * FROM t1 WHERE NULL NOT IN (SELECT t2b.i FROM t2b WHERE t2b.pk = t1.pk);
|
||||
pk i
|
||||
SELECT * FROM t1 WHERE NULL IN (SELECT t2b.i FROM t2b WHERE t2b.pk = t1.pk) IS UNKNOWN;
|
||||
pk i
|
||||
0 10
|
||||
1 20
|
||||
2 30
|
||||
3 40
|
||||
SELECT t1.pk, NULL NOT IN (SELECT t2b.i FROM t2b WHERE t2b.pk = t1.pk) FROM t1;
|
||||
pk NULL NOT IN (SELECT t2b.i FROM t2b WHERE t2b.pk = t1.pk)
|
||||
0 NULL
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 NULL
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE NULL NOT IN (SELECT t2c.i FROM t2c WHERE t2c.pk = t1.pk);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
2 DEPENDENT SUBQUERY t2c index_subquery it2c it2c 8 const,test.t1.pk 2 Using index; Using where; Full scan on NULL key
|
||||
SELECT * FROM t1 WHERE NULL NOT IN (SELECT t2c.i FROM t2c WHERE t2c.pk = t1.pk);
|
||||
pk i
|
||||
SELECT * FROM t1 WHERE NULL IN (SELECT t2c.i FROM t2c WHERE t2c.pk = t1.pk) IS UNKNOWN;
|
||||
pk i
|
||||
0 10
|
||||
1 20
|
||||
2 30
|
||||
3 40
|
||||
SELECT t1.pk, NULL NOT IN (SELECT t2c.i FROM t2c WHERE t2c.pk = t1.pk) FROM t1;
|
||||
pk NULL NOT IN (SELECT t2c.i FROM t2c WHERE t2c.pk = t1.pk)
|
||||
0 NULL
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 NULL
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE NULL NOT IN (SELECT t2d.i FROM t2d WHERE t2d.pk = t1.pk);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
2 DEPENDENT SUBQUERY t2d const PRIMARY PRIMARY 4 const 1 Using where; Full scan on NULL key
|
||||
SELECT * FROM t1 WHERE NULL NOT IN (SELECT t2d.i FROM t2d WHERE t2d.pk = t1.pk);
|
||||
pk i
|
||||
SELECT * FROM t1 WHERE NULL IN (SELECT t2d.i FROM t2d WHERE t2d.pk = t1.pk) IS UNKNOWN;
|
||||
pk i
|
||||
0 10
|
||||
1 20
|
||||
2 30
|
||||
3 40
|
||||
SELECT t1.pk, NULL NOT IN (SELECT t2d.i FROM t2d WHERE t2d.pk = t1.pk) FROM t1;
|
||||
pk NULL NOT IN (SELECT t2d.i FROM t2d WHERE t2d.pk = t1.pk)
|
||||
0 NULL
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 NULL
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE (NULL, 1) NOT IN (SELECT t2a.i, t2a.pk FROM t2a WHERE t2a.pk = t1.pk);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
2 DEPENDENT SUBQUERY t2a eq_ref PRIMARY PRIMARY 8 const,test.t1.pk 1 Using where; Using index; Full scan on NULL key
|
||||
SELECT * FROM t1 WHERE (NULL, 1) NOT IN (SELECT t2a.i, t2a.pk FROM t2a WHERE t2a.pk = t1.pk);
|
||||
pk i
|
||||
0 10
|
||||
2 30
|
||||
3 40
|
||||
SELECT (NULL, 1) NOT IN (SELECT t2a.i, t2a.pk FROM t2a WHERE t2a.pk = t1.pk) from t1;
|
||||
(NULL, 1) NOT IN (SELECT t2a.i, t2a.pk FROM t2a WHERE t2a.pk = t1.pk)
|
||||
1
|
||||
NULL
|
||||
1
|
||||
1
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE (NULL, 1) NOT IN (SELECT t2b.i, t2b.pk FROM t2b WHERE t2b.pk = t1.pk);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
2 DEPENDENT SUBQUERY t2b ALL NULL NULL NULL NULL 4 Using where
|
||||
SELECT * FROM t1 WHERE (NULL, 1) NOT IN (SELECT t2b.i, t2b.pk FROM t2b WHERE t2b.pk = t1.pk);
|
||||
pk i
|
||||
0 10
|
||||
2 30
|
||||
3 40
|
||||
SELECT (NULL, 1) NOT IN (SELECT t2b.i, t2b.pk FROM t2b WHERE t2b.pk = t1.pk) from t1;
|
||||
(NULL, 1) NOT IN (SELECT t2b.i, t2b.pk FROM t2b WHERE t2b.pk = t1.pk)
|
||||
1
|
||||
NULL
|
||||
1
|
||||
1
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE (NULL, 1) NOT IN (SELECT t2c.i, t2c.pk FROM t2c WHERE t2c.pk = t1.pk);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
2 DEPENDENT SUBQUERY t2c ref it2c it2c 8 const,test.t1.pk 2 Using where; Using index; Full scan on NULL key
|
||||
SELECT * FROM t1 WHERE (NULL, 1) NOT IN (SELECT t2c.i, t2c.pk FROM t2c WHERE t2c.pk = t1.pk);
|
||||
pk i
|
||||
0 10
|
||||
2 30
|
||||
3 40
|
||||
SELECT (NULL, 1) NOT IN (SELECT t2c.i, t2c.pk FROM t2c WHERE t2c.pk = t1.pk) from t1;
|
||||
(NULL, 1) NOT IN (SELECT t2c.i, t2c.pk FROM t2c WHERE t2c.pk = t1.pk)
|
||||
1
|
||||
NULL
|
||||
1
|
||||
1
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE (NULL, 1) NOT IN (SELECT t2d.i, t2d.pk FROM t2d WHERE t2d.pk = t1.pk);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
2 DEPENDENT SUBQUERY t2d const PRIMARY PRIMARY 4 const 1 Using where; Full scan on NULL key
|
||||
SELECT * FROM t1 WHERE (NULL, 1) NOT IN (SELECT t2d.i, t2d.pk FROM t2d WHERE t2d.pk = t1.pk);
|
||||
pk i
|
||||
0 10
|
||||
2 30
|
||||
3 40
|
||||
SELECT (NULL, 1) NOT IN (SELECT t2d.i, t2d.pk FROM t2d WHERE t2d.pk = t1.pk) from t1;
|
||||
(NULL, 1) NOT IN (SELECT t2d.i, t2d.pk FROM t2d WHERE t2d.pk = t1.pk)
|
||||
1
|
||||
NULL
|
||||
1
|
||||
1
|
||||
drop table t1, t2a, t2b, t2c, t2d;
|
||||
#
|
||||
# End of 5.1 tests.
|
||||
#
|
||||
#
|
||||
@ -271,7 +430,7 @@ set @old_optimizer_switch = @@session.optimizer_switch,
|
||||
SET SESSION OPTIMIZER_SWITCH = 'materialization=off,semijoin=off,loosescan=off,firstmatch=off,mrr=on';
|
||||
SET SESSION engine_condition_pushdown = 1;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MariaDB 7.0. Please use '@@optimizer_switch' instead
|
||||
Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
|
||||
SELECT `time_nokey` G1 FROM t1 WHERE ( `varchar_nokey` , `varchar_key` ) IN (
|
||||
SELECT `varchar_nokey` , `varchar_nokey` ) AND `varchar_key` >= 'c' HAVING G1 ORDER
|
||||
BY `pk` ;
|
||||
@ -279,7 +438,7 @@ G1
|
||||
set @@session.optimizer_switch = @old_optimizer_switch,
|
||||
@@session.engine_condition_pushdown = @old_engine_condition_pushdown;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MariaDB 7.0. Please use '@@optimizer_switch' instead
|
||||
Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# During work with BUG#45863 I had problems with a query that was
|
||||
@ -466,7 +625,7 @@ SELECT @old_icp:=@@engine_condition_pushdown;
|
||||
#
|
||||
SET SESSION engine_condition_pushdown = 'ON';
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MariaDB 7.0. Please use '@@optimizer_switch' instead
|
||||
Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
|
||||
|
||||
SELECT pk
|
||||
FROM t2
|
||||
@ -481,7 +640,7 @@ pk
|
||||
# Restore old value for Index condition pushdown
|
||||
SET SESSION engine_condition_pushdown=@old_icp;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MariaDB 7.0. Please use '@@optimizer_switch' instead
|
||||
Warning 1287 '@@engine_condition_pushdown' is deprecated and will be removed in a future release. Please use '@@optimizer_switch' instead
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# End of 5.3 tests.
|
||||
@ -1192,7 +1351,7 @@ ON SUBQUERY2_t3.f2)
|
||||
GROUP BY t1.f4 ORDER BY t1.f1 LIMIT 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 system NULL NULL NULL NULL 1 Using temporary; Using filesort
|
||||
1 PRIMARY t1 index NULL f4 5 NULL 11 Using where
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 11 Using where
|
||||
2 DEPENDENT SUBQUERY SUBQUERY2_t1 system NULL NULL NULL NULL 1
|
||||
2 DEPENDENT SUBQUERY SUBQUERY2_t2 index NULL f4 5 NULL 11 Using index
|
||||
2 DEPENDENT SUBQUERY SUBQUERY2_t3 ALL NULL NULL NULL NULL 11 Using where; Using join buffer (flat, BNL join)
|
||||
|
@ -6637,6 +6637,23 @@ a ( 3, 3 ) NOT IN ( SELECT NULL, NULL )
|
||||
set optimizer_switch=@mdev367_optimizer_switch;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-521 single value subselect transformation problem
|
||||
#
|
||||
CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('u1'),('u2');
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
FLUSH TABLES;
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
DROP TABLE t1;
|
||||
# return optimizer switch changed in the beginning of this test
|
||||
set optimizer_switch=@subselect_tmp;
|
||||
#
|
||||
# lp:944706 Query with impossible or constant subquery in WHERE or HAVING is not
|
||||
# precomputed and thus not part of optimization
|
||||
#
|
||||
@ -6845,6 +6862,26 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-435: Expensive subqueries may be evaluated during optimization in merge_key_fields
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (8),(0);
|
||||
CREATE TABLE t2 (b INT, c VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (4,'j'),(6,'v');
|
||||
CREATE TABLE t3 (d VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES ('b'),('c');
|
||||
EXPLAIN
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
a
|
||||
drop table t1, t2, t3;
|
||||
#
|
||||
# MDEV-405: Server crashes in test_if_skip_sort_order on EXPLAIN with GROUP BY and HAVING in EXISTS subquery
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a));
|
||||
|
@ -6633,6 +6633,23 @@ a ( 3, 3 ) NOT IN ( SELECT NULL, NULL )
|
||||
set optimizer_switch=@mdev367_optimizer_switch;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-521 single value subselect transformation problem
|
||||
#
|
||||
CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('u1'),('u2');
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
FLUSH TABLES;
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
DROP TABLE t1;
|
||||
# return optimizer switch changed in the beginning of this test
|
||||
set optimizer_switch=@subselect_tmp;
|
||||
#
|
||||
# lp:944706 Query with impossible or constant subquery in WHERE or HAVING is not
|
||||
# precomputed and thus not part of optimization
|
||||
#
|
||||
@ -6842,6 +6859,27 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-435: Expensive subqueries may be evaluated during optimization in merge_key_fields
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (8),(0);
|
||||
CREATE TABLE t2 (b INT, c VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (4,'j'),(6,'v');
|
||||
CREATE TABLE t3 (d VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES ('b'),('c');
|
||||
EXPLAIN
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY <subquery3> ALL distinct_key NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
a
|
||||
drop table t1, t2, t3;
|
||||
#
|
||||
# MDEV-405: Server crashes in test_if_skip_sort_order on EXPLAIN with GROUP BY and HAVING in EXISTS subquery
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a));
|
||||
|
@ -6644,6 +6644,23 @@ a ( 3, 3 ) NOT IN ( SELECT NULL, NULL )
|
||||
set optimizer_switch=@mdev367_optimizer_switch;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-521 single value subselect transformation problem
|
||||
#
|
||||
CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('u1'),('u2');
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
FLUSH TABLES;
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
DROP TABLE t1;
|
||||
# return optimizer switch changed in the beginning of this test
|
||||
set optimizer_switch=@subselect_tmp;
|
||||
#
|
||||
# lp:944706 Query with impossible or constant subquery in WHERE or HAVING is not
|
||||
# precomputed and thus not part of optimization
|
||||
#
|
||||
@ -6853,6 +6870,27 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-435: Expensive subqueries may be evaluated during optimization in merge_key_fields
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (8),(0);
|
||||
CREATE TABLE t2 (b INT, c VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (4,'j'),(6,'v');
|
||||
CREATE TABLE t3 (d VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES ('b'),('c');
|
||||
EXPLAIN
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY <subquery3> ALL distinct_key NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
a
|
||||
drop table t1, t2, t3;
|
||||
#
|
||||
# MDEV-405: Server crashes in test_if_skip_sort_order on EXPLAIN with GROUP BY and HAVING in EXISTS subquery
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a));
|
||||
|
@ -6633,6 +6633,23 @@ a ( 3, 3 ) NOT IN ( SELECT NULL, NULL )
|
||||
set optimizer_switch=@mdev367_optimizer_switch;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-521 single value subselect transformation problem
|
||||
#
|
||||
CREATE TABLE t1 (f1 char(2), PRIMARY KEY (f1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('u1'),('u2');
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
FLUSH TABLES;
|
||||
SELECT a.* FROM t1 a WHERE ( SELECT EXISTS ( SELECT 1 FROM t1 b WHERE b.f1 = a.f1 ) );
|
||||
f1
|
||||
u1
|
||||
u2
|
||||
DROP TABLE t1;
|
||||
# return optimizer switch changed in the beginning of this test
|
||||
set optimizer_switch=@subselect_tmp;
|
||||
#
|
||||
# lp:944706 Query with impossible or constant subquery in WHERE or HAVING is not
|
||||
# precomputed and thus not part of optimization
|
||||
#
|
||||
@ -6842,6 +6859,27 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-435: Expensive subqueries may be evaluated during optimization in merge_key_fields
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (8),(0);
|
||||
CREATE TABLE t2 (b INT, c VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (4,'j'),(6,'v');
|
||||
CREATE TABLE t3 (d VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES ('b'),('c');
|
||||
EXPLAIN
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY <subquery3> ALL distinct_key NULL NULL NULL 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT * FROM t1
|
||||
WHERE a = (SELECT MAX(b) FROM t2 WHERE c IN (SELECT MAX(d) FROM t3)) OR a = 10;
|
||||
a
|
||||
drop table t1, t2, t3;
|
||||
#
|
||||
# MDEV-405: Server crashes in test_if_skip_sort_order on EXPLAIN with GROUP BY and HAVING in EXISTS subquery
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a));
|
||||
|
@ -165,6 +165,8 @@ select @log;
|
||||
(BEFORE_INSERT: new=(id=1, data=1))(AFTER_INSERT: new=(id=1, data=1))
|
||||
set @log:= "";
|
||||
insert ignore t1 values (1, 2);
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
select @log;
|
||||
@log
|
||||
(BEFORE_INSERT: new=(id=1, data=2))
|
||||
|
@ -538,7 +538,7 @@ Warning 1292 Truncated incorrect read_buffer_size value: '100'
|
||||
set read_rnd_buffer_size=100;
|
||||
set global rpl_recovery_rank=100;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MariaDB 7.0.
|
||||
Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
|
||||
set global server_id=100;
|
||||
set global slow_launch_time=100;
|
||||
set sort_buffer_size=100;
|
||||
@ -1060,7 +1060,7 @@ set global net_write_timeout =@my_net_write_timeout;
|
||||
set global net_read_timeout =@my_net_read_timeout;
|
||||
set global rpl_recovery_rank =@my_rpl_recovery_rank;
|
||||
Warnings:
|
||||
Warning 1287 The syntax '@@rpl_recovery_rank' is deprecated and will be removed in MariaDB 7.0.
|
||||
Warning 1287 '@@rpl_recovery_rank' is deprecated and will be removed in a future release.
|
||||
set global server_id =@my_server_id;
|
||||
set global slow_launch_time =@my_slow_launch_time;
|
||||
set global default_storage_engine =@my_storage_engine;
|
||||
|
@ -4530,6 +4530,55 @@ WHERE t4.a >= v1.a);
|
||||
a a
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
#
|
||||
# LP bug #823237: dependent subquery with LEFT JOIN
|
||||
# referencing view in WHERE
|
||||
# (duplicate of LP bug #823189)
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
CREATE TABLE t2 ( b int, d int, e int);
|
||||
INSERT INTO t2 VALUES (7,8,0);
|
||||
CREATE TABLE t3 ( c int);
|
||||
INSERT INTO t3 VALUES (0);
|
||||
CREATE TABLE t4 (a int, b int, c int);
|
||||
INSERT INTO t4 VALUES (93,1,0), (95,NULL,0);
|
||||
CREATE VIEW v4 AS SELECT * FROM t4;
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM t3 , t4
|
||||
WHERE t4.c <= (SELECT t2.e FROM t2 LEFT JOIN t1 ON ( t1.a = t2.d )
|
||||
WHERE t2.b > t4.b);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1 100.00
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t4.b' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 select 0 AS `c`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t4`.`c` AS `c` from `test`.`t4` where (`test`.`t4`.`c` <= <expr_cache><`test`.`t4`.`b`>((select 0 from dual where (7 > `test`.`t4`.`b`))))
|
||||
SELECT * FROM t3 , t4
|
||||
WHERE t4.c <= (SELECT t2.e FROM t2 LEFT JOIN t1 ON ( t1.a = t2.d )
|
||||
WHERE t2.b > t4.b);
|
||||
c a b c
|
||||
0 93 1 0
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM t3, v4
|
||||
WHERE v4.c <= (SELECT t2.e FROM t2 LEFT JOIN t1 ON ( t1.a = t2.d )
|
||||
WHERE t2.b > v4.b);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1 100.00
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'v4.b' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 select 0 AS `c`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t4`.`c` AS `c` from `test`.`t4` where (`test`.`t4`.`c` <= <expr_cache><`test`.`t4`.`b`>((select 0 from dual where (7 > `test`.`t4`.`b`))))
|
||||
SELECT * FROM t3, v4
|
||||
WHERE v4.c <= (SELECT t2.e FROM t2 LEFT JOIN t1 ON ( t1.a = t2.d )
|
||||
WHERE t2.b > v4.b);
|
||||
c a b c
|
||||
0 93 1 0
|
||||
DROP VIEW v4;
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
drop table if exists t_9801;
|
||||
drop view if exists v_9801;
|
||||
create table t_9801 (s1 int);
|
||||
@ -4730,6 +4779,49 @@ id id bbb iddqd val1
|
||||
30631 NULL NULL NULL NULL
|
||||
drop view v2;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-589 (LP BUG#1007647) :
|
||||
# Assertion `vcol_table == 0 || vcol_table == table' failed in
|
||||
# fill_record(THD*, List<Item>&, List<Item>&, bool)
|
||||
#
|
||||
CREATE TABLE t1 (f1 INT, f2 INT);
|
||||
CREATE TABLE t2 (f1 INT, f2 INT);
|
||||
CREATE ALGORITHM=MERGE VIEW v1 AS SELECT a1.f1, a2.f2 FROM t1 AS a1, t1 AS a2;
|
||||
CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM v1;
|
||||
CREATE ALGORITHM=MERGE VIEW v3 AS SELECT a1.f1, a2.f2 FROM t1 AS a1, t2 AS a2;
|
||||
CREATE ALGORITHM=MERGE VIEW v4 AS SELECT * FROM v3;
|
||||
INSERT INTO v3 (f1, f2) VALUES (1, 2);
|
||||
ERROR HY000: Can not modify more than one base table through a join view 'test.v3'
|
||||
INSERT INTO v1 (f1, f2) VALUES (1, 2);
|
||||
ERROR HY000: Can not modify more than one base table through a join view 'test.v1'
|
||||
INSERT INTO v4 (f1, f2) VALUES (1, 2);
|
||||
ERROR HY000: Can not modify more than one base table through a join view 'test.v4'
|
||||
INSERT INTO v2 (f1, f2) VALUES (1, 2);
|
||||
ERROR HY000: Can not modify more than one base table through a join view 'test.v2'
|
||||
drop view v4,v3,v2,v1;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-3799 fix of above bugfix (MDEV-589)
|
||||
# Wrong result (NULLs instead of real values) with RIGHT JOIN
|
||||
# in a FROM subquery and derived_merge=on
|
||||
#
|
||||
CREATE TABLE t1 (f1 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (4),(6);
|
||||
CREATE TABLE t2 (f2 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (7),(8);
|
||||
SELECT * FROM (
|
||||
SELECT * FROM t1 RIGHT JOIN t2 ON f1 = f2
|
||||
) AS alias;
|
||||
f1 f2
|
||||
NULL 7
|
||||
NULL 8
|
||||
SELECT * FROM (
|
||||
SELECT * FROM t2 LEFT JOIN t1 ON f1 = f2
|
||||
) AS alias;
|
||||
f2 f1
|
||||
7 NULL
|
||||
8 NULL
|
||||
drop tables t1,t2;
|
||||
# -----------------------------------------------------------------
|
||||
# -- End of 5.3 tests.
|
||||
# -----------------------------------------------------------------
|
||||
|
@ -276,6 +276,8 @@ bb-1 NULL cc-2 NULL-1
|
||||
drop table t1, t2, t3, t4;
|
||||
create table t1 (a int, b int not null,unique key (a,b),index(b));
|
||||
insert ignore into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(null,7),(9,9),(8,8),(7,7),(null,9),(null,9),(6,6);
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '6-6' for key 'a'
|
||||
create table t2 like t1;
|
||||
insert into t2 select * from t1;
|
||||
alter table t1 modify b blob not null, add c int not null, drop key a, add unique key (a,b(20),c), drop key b, add key (b(10));
|
||||
|
@ -69,6 +69,8 @@ INSERT INTO t1 VALUES (1);
|
||||
START TRANSACTION;
|
||||
INSERT INTO t2 VALUES (1);
|
||||
INSERT IGNORE INTO t1 VALUES (1);
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
COMMIT;
|
||||
INSERT INTO t1 VALUES (2);
|
||||
START TRANSACTION;
|
||||
|
@ -578,13 +578,46 @@ DROP PROCEDURE p4;
|
||||
End of 5.0 tests
|
||||
reset master;
|
||||
create table t1 (id tinyint auto_increment primary key);
|
||||
insert into t1 values(5);
|
||||
set insert_id=128;
|
||||
insert into t1 values(null);
|
||||
insert into t1 values(null) /* Not binlogged */;
|
||||
ERROR 22003: Out of range value for column 'id' at row 1
|
||||
set insert_id=128;
|
||||
insert ignore into t1 values(null) /* Insert 128 */;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'id' at row 1
|
||||
Warning 167 Out of range value for column 'id' at row 1
|
||||
set insert_id=5;
|
||||
insert into t1 values(null) /* Not binlogged */;
|
||||
ERROR 23000: Duplicate entry '5' for key 'PRIMARY'
|
||||
set insert_id=5;
|
||||
insert ignore into t1 values(null) /* Insert 5 */;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '5' for key 'PRIMARY'
|
||||
select * from t1;
|
||||
id
|
||||
127
|
||||
5
|
||||
drop table t1;
|
||||
create table t1 (id tinyint auto_increment primary key) engine=myisam;
|
||||
set insert_id=128;
|
||||
insert into t1 values(5),(null) /* Insert_id 128 */;
|
||||
ERROR 22003: Out of range value for column 'id' at row 2
|
||||
set insert_id=128;
|
||||
insert ignore into t1 values (4),(null) /* Insert_id 128 */;
|
||||
Warnings:
|
||||
Warning 167 Out of range value for column 'id' at row 2
|
||||
set insert_id=5;
|
||||
insert into t1 values(3),(null) /* Insert_id 5 */;
|
||||
ERROR 23000: Duplicate entry '5' for key 'PRIMARY'
|
||||
set insert_id=5;
|
||||
insert ignore into t1 values(2),(null) /* Insert_id 5 */;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '5' for key 'PRIMARY'
|
||||
select * from t1 order by id;
|
||||
id
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
create table if not exists t2 select * from t1;
|
||||
@ -603,6 +636,24 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key) engine=myisam
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE IF NOT EXISTS `t2` (
|
||||
@ -625,6 +676,7 @@ master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
||||
master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
drop table t1,t2,t3,tt1;
|
||||
reset master;
|
||||
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
||||
insert /* before delayed */ delayed /* after delayed */ into t1 values (207);
|
||||
insert /*! delayed */ into t1 values (null);
|
||||
@ -632,35 +684,6 @@ insert delayed into t1 values (300);
|
||||
FLUSH TABLES;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key)
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE IF NOT EXISTS `t2` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
)
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE IF NOT EXISTS `t3` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
)
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
||||
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
||||
master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS `tt1` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1`,`t2`,`t3` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
|
@ -1,3 +1,4 @@
|
||||
reset master;
|
||||
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
||||
insert /* before delayed */ delayed /* after delayed */ into t1 values (207);
|
||||
insert /*! delayed */ into t1 values (null);
|
||||
@ -5,9 +6,6 @@ insert delayed into t1 values (300);
|
||||
FLUSH TABLES;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `mtr`; INSERT INTO test_suppressions (pattern) VALUES ( NAME_CONST('pattern',_latin1'Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT' COLLATE 'latin1_swedish_ci'))
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; insert /* before delayed */ /* after delayed */ into t1 values (207)
|
||||
|
@ -387,13 +387,46 @@ DROP PROCEDURE p4;
|
||||
End of 5.0 tests
|
||||
reset master;
|
||||
create table t1 (id tinyint auto_increment primary key);
|
||||
insert into t1 values(5);
|
||||
set insert_id=128;
|
||||
insert into t1 values(null);
|
||||
insert into t1 values(null) /* Not binlogged */;
|
||||
ERROR 22003: Out of range value for column 'id' at row 1
|
||||
set insert_id=128;
|
||||
insert ignore into t1 values(null) /* Insert 128 */;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'id' at row 1
|
||||
Warning 167 Out of range value for column 'id' at row 1
|
||||
set insert_id=5;
|
||||
insert into t1 values(null) /* Not binlogged */;
|
||||
ERROR 23000: Duplicate entry '5' for key 'PRIMARY'
|
||||
set insert_id=5;
|
||||
insert ignore into t1 values(null) /* Insert 5 */;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '5' for key 'PRIMARY'
|
||||
select * from t1;
|
||||
id
|
||||
127
|
||||
5
|
||||
drop table t1;
|
||||
create table t1 (id tinyint auto_increment primary key) engine=myisam;
|
||||
set insert_id=128;
|
||||
insert into t1 values(5),(null) /* Insert_id 128 */;
|
||||
ERROR 22003: Out of range value for column 'id' at row 2
|
||||
set insert_id=128;
|
||||
insert ignore into t1 values (4),(null) /* Insert_id 128 */;
|
||||
Warnings:
|
||||
Warning 167 Out of range value for column 'id' at row 2
|
||||
set insert_id=5;
|
||||
insert into t1 values(3),(null) /* Insert_id 5 */;
|
||||
ERROR 23000: Duplicate entry '5' for key 'PRIMARY'
|
||||
set insert_id=5;
|
||||
insert ignore into t1 values(2),(null) /* Insert_id 5 */;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '5' for key 'PRIMARY'
|
||||
select * from t1 order by id;
|
||||
id
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
create table if not exists t2 select * from t1;
|
||||
@ -408,8 +441,33 @@ show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key)
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=127
|
||||
master-bin.000001 # Query # # use `test`; insert into t1 values(null)
|
||||
master-bin.000001 # Query # # use `test`; insert into t1 values(5)
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=128
|
||||
master-bin.000001 # Query # # use `test`; insert ignore into t1 values(null) /* Insert 128 */
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=5
|
||||
master-bin.000001 # Query # # use `test`; insert ignore into t1 values(null) /* Insert 5 */
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key) engine=myisam
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=128
|
||||
master-bin.000001 # Query # # use `test`; insert into t1 values(5),(null) /* Insert_id 128 */
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=128
|
||||
master-bin.000001 # Query # # use `test`; insert ignore into t1 values (4),(null) /* Insert_id 128 */
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=5
|
||||
master-bin.000001 # Query # # use `test`; insert into t1 values(3),(null) /* Insert_id 5 */
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=5
|
||||
master-bin.000001 # Query # # use `test`; insert ignore into t1 values(2),(null) /* Insert_id 5 */
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
||||
@ -426,6 +484,7 @@ master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
drop table t1,t2,t3,tt1;
|
||||
reset master;
|
||||
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
||||
insert /* before delayed */ delayed /* after delayed */ into t1 values (207);
|
||||
insert /*! delayed */ into t1 values (null);
|
||||
@ -433,27 +492,6 @@ insert delayed into t1 values (300);
|
||||
FLUSH TABLES;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key)
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Intvar # # INSERT_ID=127
|
||||
master-bin.000001 # Query # # use `test`; insert into t1 values(null)
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
||||
master-bin.000001 # Query # # use `test`; create table if not exists t2 select * from t1
|
||||
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
|
||||
master-bin.000001 # Query # # use `test`; create table if not exists t3 like tt1
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `mysql`; INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test')
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `mysql`; UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@'
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE `tt1` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1`,`t2`,`t3` /* generated by server */
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
|
@ -2682,6 +2682,7 @@ CREATE TABLE insert_2_keys (a INT UNIQUE KEY, b INT UNIQUE KEY);
|
||||
INSERT INTO insert_2_keys values (1, 1);
|
||||
INSERT IGNORE INTO insert_table SELECT * FROM filler_table;
|
||||
Warnings:
|
||||
Warning 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
|
||||
TRUNCATE TABLE insert_table;
|
||||
INSERT INTO insert_table SELECT * FROM filler_table ON DUPLICATE KEY UPDATE a = 1;
|
||||
|
@ -1,5 +1,5 @@
|
||||
source include/have_archive.inc;
|
||||
source federated.inc;
|
||||
source suite/federated/include/federated.inc;
|
||||
|
||||
|
||||
connection slave;
|
||||
@ -54,5 +54,5 @@ connection slave;
|
||||
DROP TABLE federated.archive_table;
|
||||
|
||||
|
||||
source federated_cleanup.inc;
|
||||
source suite/federated/include/federated_cleanup.inc;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
source federated.inc;
|
||||
source suite/federated/include/federated.inc;
|
||||
|
||||
connection slave;
|
||||
--disable_warnings
|
||||
@ -37,5 +37,5 @@ connection slave;
|
||||
DROP TABLE federated.bug_13118_table;
|
||||
|
||||
|
||||
source federated_cleanup.inc;
|
||||
source suite/federated/include/federated_cleanup.inc;
|
||||
|
||||
|
@ -4,7 +4,7 @@ if (!$MYSQL_BUG25714)
|
||||
skip Need bug25714 test program;
|
||||
}
|
||||
|
||||
source federated.inc;
|
||||
source suite/federated/include/federated.inc;
|
||||
|
||||
connection master;
|
||||
# Disable concurrent inserts to avoid test failures when reading
|
||||
@ -59,4 +59,4 @@ SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
|
||||
|
||||
|
||||
|
||||
source federated_cleanup.inc;
|
||||
source suite/federated/include/federated_cleanup.inc;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user