Merging patch for BUG#58246 with mysql-5.1-bugteam.
This commit is contained in:
commit
bfb43fb44f
@ -42,8 +42,7 @@ ADD_DEFINITIONS(-DSHAREDIR="share")
|
|||||||
# Set debug options
|
# Set debug options
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
||||||
|
|
||||||
|
SET(localstatedir "C:\\\\mysql\\\\data\\\\")
|
||||||
SET(localstatedir "C:\\mysql\\data")
|
|
||||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
|
||||||
${CMAKE_SOURCE_DIR}/support-files/my-huge.ini @ONLY)
|
${CMAKE_SOURCE_DIR}/support-files/my-huge.ini @ONLY)
|
||||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.cnf.sh
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.cnf.sh
|
||||||
|
@ -1,119 +0,0 @@
|
|||||||
MySQL FLOSS License Exception
|
|
||||||
|
|
||||||
The MySQL AB Exception for Free/Libre and Open Source
|
|
||||||
Software-only Applications Using MySQL Client Libraries (the
|
|
||||||
"FLOSS Exception").
|
|
||||||
|
|
||||||
Version 0.6, 7 March 2007
|
|
||||||
|
|
||||||
Exception Intent
|
|
||||||
|
|
||||||
We want specified Free/Libre and Open Source Software (``FLOSS'')
|
|
||||||
applications to be able to use specified GPL-licensed MySQL client
|
|
||||||
libraries (the ``Program'') despite the fact that not all FLOSS
|
|
||||||
licenses are compatible with version 2 of the GNU General Public
|
|
||||||
License (the ``GPL'').
|
|
||||||
|
|
||||||
Legal Terms and Conditions
|
|
||||||
|
|
||||||
As a special exception to the terms and conditions of version 2.0
|
|
||||||
of the GPL:
|
|
||||||
|
|
||||||
1. You are free to distribute a Derivative Work that is formed
|
|
||||||
entirely from the Program and one or more works (each, a
|
|
||||||
"FLOSS Work") licensed under one or more of the licenses
|
|
||||||
listed below in section 1, as long as:
|
|
||||||
a. You obey the GPL in all respects for the Program and the
|
|
||||||
Derivative Work, except for identifiable sections of the
|
|
||||||
Derivative Work which are not derived from the Program,
|
|
||||||
and which can reasonably be considered independent and
|
|
||||||
separate works in themselves,
|
|
||||||
b. all identifiable sections of the Derivative Work which
|
|
||||||
are not derived from the Program, and which can
|
|
||||||
reasonably be considered independent and separate works
|
|
||||||
in themselves,
|
|
||||||
i. are distributed subject to one of the FLOSS licenses
|
|
||||||
listed below, and
|
|
||||||
ii. the object code or executable form of those sections
|
|
||||||
are accompanied by the complete corresponding
|
|
||||||
machine-readable source code for those sections on
|
|
||||||
the same medium and under the same FLOSS license as
|
|
||||||
the corresponding object code or executable forms of
|
|
||||||
those sections, and
|
|
||||||
c. any works which are aggregated with the Program or with a
|
|
||||||
Derivative Work on a volume of a storage or distribution
|
|
||||||
medium in accordance with the GPL, can reasonably be
|
|
||||||
considered independent and separate works in themselves
|
|
||||||
which are not derivatives of either the Program, a
|
|
||||||
Derivative Work or a FLOSS Work.
|
|
||||||
If the above conditions are not met, then the Program may only
|
|
||||||
be copied, modified, distributed or used under the terms and
|
|
||||||
conditions of the GPL or another valid licensing option from
|
|
||||||
MySQL AB.
|
|
||||||
|
|
||||||
2. FLOSS License List
|
|
||||||
|
|
||||||
License name Version(s)/Copyright Date
|
|
||||||
Academic Free License 2.0
|
|
||||||
Apache Software License 1.0/1.1/2.0
|
|
||||||
Apple Public Source License 2.0
|
|
||||||
Artistic license From Perl 5.8.0
|
|
||||||
BSD license "July 22 1999"
|
|
||||||
Common Development and Distribution License (CDDL) 1.0
|
|
||||||
Common Public License 1.0
|
|
||||||
Eclipse Public License 1.0
|
|
||||||
GNU Library or "Lesser" General Public License (LGPL) 2.0/2.1
|
|
||||||
Jabber Open Source License 1.0
|
|
||||||
MIT license (As listed in file MIT-License.txt) ---
|
|
||||||
Mozilla Public License (MPL) 1.0/1.1
|
|
||||||
Open Software License 2.0
|
|
||||||
OpenSSL license (with original SSLeay license) "2003" ("1998")
|
|
||||||
PHP License 3.0
|
|
||||||
Python license (CNRI Python License) ---
|
|
||||||
Python Software Foundation License 2.1.1
|
|
||||||
Sleepycat License "1999"
|
|
||||||
University of Illinois/NCSA Open Source License ---
|
|
||||||
W3C License "2001"
|
|
||||||
X11 License "2001"
|
|
||||||
Zlib/libpng License ---
|
|
||||||
Zope Public License 2.0
|
|
||||||
|
|
||||||
Due to the many variants of some of the above licenses, we
|
|
||||||
require that any version follow the 2003 version of the Free
|
|
||||||
Software Foundation's Free Software Definition
|
|
||||||
(http://www.gnu.org/philosophy/free-sw.html) or version 1.9 of
|
|
||||||
the Open Source Definition by the Open Source Initiative
|
|
||||||
(http://www.opensource.org/docs/definition.php).
|
|
||||||
|
|
||||||
3. Definitions
|
|
||||||
|
|
||||||
a. Terms used, but not defined, herein shall have the
|
|
||||||
meaning provided in the GPL.
|
|
||||||
b. Derivative Work means a derivative work under copyright
|
|
||||||
law.
|
|
||||||
|
|
||||||
4. Applicability: This FLOSS Exception applies to all Programs
|
|
||||||
that contain a notice placed by MySQL AB saying that the
|
|
||||||
Program may be distributed under the terms of this FLOSS
|
|
||||||
Exception. If you create or distribute a work which is a
|
|
||||||
Derivative Work of both the Program and any other work
|
|
||||||
licensed under the GPL, then this FLOSS Exception is not
|
|
||||||
available for that work; thus, you must remove the FLOSS
|
|
||||||
Exception notice from that work and comply with the GPL in all
|
|
||||||
respects, including by retaining all GPL notices. You may
|
|
||||||
choose to redistribute a copy of the Program exclusively under
|
|
||||||
the terms of the GPL by removing the FLOSS Exception notice
|
|
||||||
from that copy of the Program, provided that the copy has
|
|
||||||
never been modified by you or any third party.
|
|
||||||
|
|
||||||
Appendix A. Qualified Libraries and Packages
|
|
||||||
|
|
||||||
The following is a non-exhaustive list of libraries and packages
|
|
||||||
which are covered by the FLOSS License Exception. Please note that
|
|
||||||
this appendix is provided merely as an additional service to
|
|
||||||
specific FLOSS projects wishing to simplify licensing information
|
|
||||||
for their users. Compliance with one of the licenses noted under
|
|
||||||
the "FLOSS license list" section remains a prerequisite.
|
|
||||||
|
|
||||||
Package Name Qualifying License and Version
|
|
||||||
Apache Portable Runtime (APR) Apache Software License 2.0
|
|
@ -19,7 +19,7 @@ AUTOMAKE_OPTIONS = foreign
|
|||||||
|
|
||||||
# These are built from source in the Docs directory
|
# These are built from source in the Docs directory
|
||||||
EXTRA_DIST = INSTALL-SOURCE INSTALL-WIN-SOURCE \
|
EXTRA_DIST = INSTALL-SOURCE INSTALL-WIN-SOURCE \
|
||||||
README COPYING EXCEPTIONS-CLIENT CMakeLists.txt
|
README COPYING CMakeLists.txt
|
||||||
|
|
||||||
SUBDIRS = . include @docs_dirs@ @zlib_dir@ \
|
SUBDIRS = . include @docs_dirs@ @zlib_dir@ \
|
||||||
@readline_topdir@ sql-common scripts \
|
@readline_topdir@ sql-common scripts \
|
||||||
|
@ -1449,8 +1449,8 @@ static struct my_option my_long_options[] =
|
|||||||
&opt_sigint_ignore, &opt_sigint_ignore, 0, GET_BOOL,
|
&opt_sigint_ignore, &opt_sigint_ignore, 0, GET_BOOL,
|
||||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"one-database", 'o',
|
{"one-database", 'o',
|
||||||
"Only update the default database. This is useful for skipping updates "
|
"Ignore statements except those that occur while the default "
|
||||||
"to other database in the update log.",
|
"database is the one named at the command line.",
|
||||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#ifdef USE_POPEN
|
#ifdef USE_POPEN
|
||||||
{"pager", OPT_PAGER,
|
{"pager", OPT_PAGER,
|
||||||
@ -2736,6 +2736,10 @@ static void get_current_db()
|
|||||||
{
|
{
|
||||||
MYSQL_RES *res;
|
MYSQL_RES *res;
|
||||||
|
|
||||||
|
/* If one_database is set, current_db is not supposed to change. */
|
||||||
|
if (one_database)
|
||||||
|
return;
|
||||||
|
|
||||||
my_free(current_db, MYF(MY_ALLOW_ZERO_PTR));
|
my_free(current_db, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
current_db= NULL;
|
current_db= NULL;
|
||||||
/* In case of error below current_db will be NULL */
|
/* In case of error below current_db will be NULL */
|
||||||
|
@ -471,7 +471,7 @@ VAR* var_init(VAR* v, const char *name, int name_len, const char *val,
|
|||||||
void var_free(void* v);
|
void var_free(void* v);
|
||||||
VAR* var_get(const char *var_name, const char** var_name_end,
|
VAR* var_get(const char *var_name, const char** var_name_end,
|
||||||
my_bool raw, my_bool ignore_not_existing);
|
my_bool raw, my_bool ignore_not_existing);
|
||||||
void eval_expr(VAR* v, const char *p, const char** p_end);
|
void eval_expr(VAR* v, const char *p, const char** p_end, bool backtick= true);
|
||||||
my_bool match_delimiter(int c, const char *delim, uint length);
|
my_bool match_delimiter(int c, const char *delim, uint length);
|
||||||
void dump_result_to_reject_file(char *buf, int size);
|
void dump_result_to_reject_file(char *buf, int size);
|
||||||
void dump_warning_messages();
|
void dump_warning_messages();
|
||||||
@ -2233,7 +2233,8 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
|
|||||||
dynstr_append_mem(&result, "\t", 1);
|
dynstr_append_mem(&result, "\t", 1);
|
||||||
}
|
}
|
||||||
end= result.str + result.length-1;
|
end= result.str + result.length-1;
|
||||||
eval_expr(var, result.str, (const char**) &end);
|
/* Evaluation should not recurse via backtick */
|
||||||
|
eval_expr(var, result.str, (const char**) &end, false);
|
||||||
dynstr_free(&result);
|
dynstr_free(&result);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2389,7 +2390,7 @@ void var_copy(VAR *dest, VAR *src)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void eval_expr(VAR *v, const char *p, const char **p_end)
|
void eval_expr(VAR *v, const char *p, const char **p_end, bool backtick)
|
||||||
{
|
{
|
||||||
|
|
||||||
DBUG_ENTER("eval_expr");
|
DBUG_ENTER("eval_expr");
|
||||||
@ -2414,7 +2415,7 @@ void eval_expr(VAR *v, const char *p, const char **p_end)
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*p == '`')
|
if (*p == '`' && backtick)
|
||||||
{
|
{
|
||||||
var_query_set(v, p, p_end);
|
var_query_set(v, p, p_end);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
@ -5439,7 +5440,9 @@ void do_block(enum block_cmd cmd, struct st_command* command)
|
|||||||
if (*expr_start == '!')
|
if (*expr_start == '!')
|
||||||
{
|
{
|
||||||
not_expr= TRUE;
|
not_expr= TRUE;
|
||||||
expr_start++; /* Step past the '!' */
|
expr_start++; /* Step past the '!', then any whitespace */
|
||||||
|
while (*expr_start && my_isspace(charset_info, *expr_start))
|
||||||
|
expr_start++;
|
||||||
}
|
}
|
||||||
/* Find ending ')' */
|
/* Find ending ')' */
|
||||||
expr_end= strrchr(expr_start, ')');
|
expr_end= strrchr(expr_start, ')');
|
||||||
@ -7779,13 +7782,16 @@ static void dump_backtrace(void)
|
|||||||
{
|
{
|
||||||
struct st_connection *conn= cur_con;
|
struct st_connection *conn= cur_con;
|
||||||
|
|
||||||
my_safe_print_str("read_command_buf", read_command_buf,
|
fprintf(stderr, "read_command_buf (%p): ", read_command_buf);
|
||||||
sizeof(read_command_buf));
|
my_safe_print_str(read_command_buf, sizeof(read_command_buf));
|
||||||
|
|
||||||
if (conn)
|
if (conn)
|
||||||
{
|
{
|
||||||
my_safe_print_str("conn->name", conn->name, conn->name_len);
|
fprintf(stderr, "conn->name (%p): ", conn->name);
|
||||||
|
my_safe_print_str(conn->name, conn->name_len);
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
my_safe_print_str("conn->cur_query", conn->cur_query, conn->cur_query_len);
|
fprintf(stderr, "conn->cur_query (%p): ", conn->cur_query);
|
||||||
|
my_safe_print_str(conn->cur_query, conn->cur_query_len);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
fputs("Attempting backtrace...\n", stderr);
|
fputs("Attempting backtrace...\n", stderr);
|
||||||
|
@ -12,7 +12,7 @@ dnl
|
|||||||
dnl When changing the major version number please also check the switch
|
dnl When changing the major version number please also check the switch
|
||||||
dnl statement in mysqlbinlog::check_master_version(). You may also need
|
dnl statement in mysqlbinlog::check_master_version(). You may also need
|
||||||
dnl to update version.c in ndb.
|
dnl to update version.c in ndb.
|
||||||
AC_INIT([MySQL Server], [5.1.54], [], [mysql])
|
AC_INIT([MySQL Server], [5.1.55], [], [mysql])
|
||||||
|
|
||||||
AC_CONFIG_SRCDIR([sql/mysqld.cc])
|
AC_CONFIG_SRCDIR([sql/mysqld.cc])
|
||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
|
@ -73,8 +73,8 @@ extern "C" {
|
|||||||
extern void *(*my_str_malloc)(size_t);
|
extern void *(*my_str_malloc)(size_t);
|
||||||
extern void (*my_str_free)(void *);
|
extern void (*my_str_free)(void *);
|
||||||
|
|
||||||
#if MY_GNUC_PREREQ(3, 4)
|
#if defined(HAVE_STPCPY) && MY_GNUC_PREREQ(3, 4) && !defined(__INTEL_COMPILER)
|
||||||
#define strmov(dest, src) __builtin_stpcpy(dest, src)
|
#define strmov(A,B) __builtin_stpcpy((A),(B))
|
||||||
#elif defined(HAVE_STPCPY)
|
#elif defined(HAVE_STPCPY)
|
||||||
#define strmov(A,B) stpcpy((A),(B))
|
#define strmov(A,B) stpcpy((A),(B))
|
||||||
#ifndef stpcpy
|
#ifndef stpcpy
|
||||||
|
@ -47,7 +47,7 @@ C_MODE_START
|
|||||||
#if defined(HAVE_STACKTRACE) || defined(HAVE_BACKTRACE)
|
#if defined(HAVE_STACKTRACE) || defined(HAVE_BACKTRACE)
|
||||||
void my_init_stacktrace();
|
void my_init_stacktrace();
|
||||||
void my_print_stacktrace(uchar* stack_bottom, ulong thread_stack);
|
void my_print_stacktrace(uchar* stack_bottom, ulong thread_stack);
|
||||||
void my_safe_print_str(const char* name, const char* val, int max_len);
|
void my_safe_print_str(const char* val, int max_len);
|
||||||
void my_write_core(int sig);
|
void my_write_core(int sig);
|
||||||
#if BACKTRACE_DEMANGLE
|
#if BACKTRACE_DEMANGLE
|
||||||
char *my_demangle(const char *mangled_name, int *status);
|
char *my_demangle(const char *mangled_name, int *status);
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
# published by the Free Software Foundation.
|
# published by the Free Software Foundation.
|
||||||
#
|
#
|
||||||
# There are special exceptions to the terms and conditions of the GPL as it
|
# There are special exceptions to the terms and conditions of the GPL as it
|
||||||
# is applied to this software. View the full text of the exception in file
|
# is applied to this software.
|
||||||
# EXCEPTIONS-CLIENT in the directory of this software distribution.
|
|
||||||
#
|
#
|
||||||
# This library is distributed in the hope that it will be useful,
|
# This library is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
# published by the Free Software Foundation.
|
# published by the Free Software Foundation.
|
||||||
#
|
#
|
||||||
# There are special exceptions to the terms and conditions of the GPL as it
|
# There are special exceptions to the terms and conditions of the GPL as it
|
||||||
# is applied to this software. View the full text of the exception in file
|
# is applied to this software.
|
||||||
# EXCEPTIONS-CLIENT in the directory of this software distribution.
|
|
||||||
#
|
#
|
||||||
# This library is distributed in the hope that it will be useful,
|
# This library is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
the Free Software Foundation.
|
the Free Software Foundation.
|
||||||
|
|
||||||
There are special exceptions to the terms and conditions of the GPL as it
|
There are special exceptions to the terms and conditions of the GPL as it
|
||||||
is applied to this software. View the full text of the exception in file
|
is applied to this software.
|
||||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
the Free Software Foundation.
|
the Free Software Foundation.
|
||||||
|
|
||||||
There are special exceptions to the terms and conditions of the GPL as it
|
There are special exceptions to the terms and conditions of the GPL as it
|
||||||
is applied to this software. View the full text of the exception in file
|
is applied to this software.
|
||||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
the Free Software Foundation.
|
the Free Software Foundation.
|
||||||
|
|
||||||
There are special exceptions to the terms and conditions of the GPL as it
|
There are special exceptions to the terms and conditions of the GPL as it
|
||||||
is applied to this software. View the full text of the exception in file
|
is applied to this software.
|
||||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
the Free Software Foundation.
|
the Free Software Foundation.
|
||||||
|
|
||||||
There are special exceptions to the terms and conditions of the GPL as it
|
There are special exceptions to the terms and conditions of the GPL as it
|
||||||
is applied to this software. View the full text of the exception in file
|
is applied to this software.
|
||||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
the Free Software Foundation.
|
the Free Software Foundation.
|
||||||
|
|
||||||
There are special exceptions to the terms and conditions of the GPL as it
|
There are special exceptions to the terms and conditions of the GPL as it
|
||||||
is applied to this software. View the full text of the exception in file
|
is applied to this software.
|
||||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
the Free Software Foundation.
|
the Free Software Foundation.
|
||||||
|
|
||||||
There are special exceptions to the terms and conditions of the GPL as it
|
There are special exceptions to the terms and conditions of the GPL as it
|
||||||
is applied to this software. View the full text of the exception in file
|
is applied to this software.
|
||||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
# published by the Free Software Foundation.
|
# published by the Free Software Foundation.
|
||||||
#
|
#
|
||||||
# There are special exceptions to the terms and conditions of the GPL as it
|
# There are special exceptions to the terms and conditions of the GPL as it
|
||||||
# is applied to this software. View the full text of the exception in file
|
# is applied to this software.
|
||||||
# EXCEPTIONS-CLIENT in the directory of this software distribution.
|
|
||||||
#
|
#
|
||||||
# This library is distributed in the hope that it will be useful,
|
# This library is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -302,5 +302,58 @@ BINLOG '
|
|||||||
SHOW BINLOG EVENTS;
|
SHOW BINLOG EVENTS;
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # BUG#54903 BINLOG statement toggles session variables
|
||||||
|
--echo # ----------------------------------------------------------------------
|
||||||
|
--echo # This test verify that BINLOG statement doesn't change current session's
|
||||||
|
--echo # variables foreign_key_checks and unique_checks.
|
||||||
|
--echo
|
||||||
|
CREATE TABLE t1 (c1 INT KEY);
|
||||||
|
|
||||||
|
SET @@SESSION.foreign_key_checks= ON;
|
||||||
|
SET @@SESSION.unique_checks= ON;
|
||||||
|
|
||||||
|
--echo # INSERT INTO t1 VALUES (1)
|
||||||
|
--echo # foreign_key_checks=0 and unique_checks=0
|
||||||
|
BINLOG '
|
||||||
|
dfLtTBMBAAAAKQAAANcAAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
dfLtTBcBAAAAIgAAAPkAAAAAABcAAAAAAAcAAf/+AQAAAA==
|
||||||
|
';
|
||||||
|
|
||||||
|
SELECT * FROM t1;
|
||||||
|
--echo # Their values should be ON
|
||||||
|
SHOW SESSION VARIABLES LIKE "%_checks";
|
||||||
|
|
||||||
|
--echo
|
||||||
|
SET @@SESSION.foreign_key_checks= OFF;
|
||||||
|
SET @@SESSION.unique_checks= OFF;
|
||||||
|
|
||||||
|
--echo # INSERT INTO t1 VALUES(2)
|
||||||
|
--echo # foreign_key_checks=1 and unique_checks=1
|
||||||
|
BINLOG '
|
||||||
|
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
dfLtTBcBAAAAIgAAAM0BAAAAABcAAAAAAAEAAf/+AgAAAA==
|
||||||
|
';
|
||||||
|
|
||||||
|
SELECT * FROM t1;
|
||||||
|
--echo # Their values should be OFF
|
||||||
|
SHOW SESSION VARIABLES LIKE "%_checks";
|
||||||
|
|
||||||
|
--echo # INSERT INTO t1 VALUES(2)
|
||||||
|
--echo # foreign_key_checks=1 and unique_checks=1
|
||||||
|
--echo # It should not change current session's variables, even error happens
|
||||||
|
--error 1062
|
||||||
|
BINLOG '
|
||||||
|
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
dfLtTBcBAAAAIgAAAM0BAAAAABcAAAAAAAEAAf/+AgAAAA==
|
||||||
|
';
|
||||||
|
|
||||||
|
SELECT * FROM t1;
|
||||||
|
--echo # Their values should be OFF
|
||||||
|
SHOW SESSION VARIABLES LIKE "%_checks";
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
disconnect fresh;
|
disconnect fresh;
|
||||||
|
|
||||||
|
@ -53,9 +53,7 @@ source include/wait_for_slave_to_start.inc;
|
|||||||
connection master;
|
connection master;
|
||||||
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
||||||
# it until it's told to
|
# it until it's told to
|
||||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
wait
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Send shutdown to the connected server and give
|
# Send shutdown to the connected server and give
|
||||||
# it 10 seconds to die before zapping it
|
# it 10 seconds to die before zapping it
|
||||||
@ -85,9 +83,7 @@ source include/wait_for_slave_io_error.inc;
|
|||||||
eval set @@global.debug = "-d,$dbug_sync_point";
|
eval set @@global.debug = "-d,$dbug_sync_point";
|
||||||
|
|
||||||
# Write file to make mysql-test-run.pl start up the server again
|
# Write file to make mysql-test-run.pl start up the server again
|
||||||
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
restart
|
|
||||||
EOF
|
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
# Turn on reconnect
|
# Turn on reconnect
|
||||||
|
46
mysql-test/include/ctype_8bit.inc
Normal file
46
mysql-test/include/ctype_8bit.inc
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#
|
||||||
|
# Test Unicode conversion, upper, lower
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
CREATE TABLE t1 AS SELECT ' ' AS a LIMIT 0;
|
||||||
|
INSERT INTO t1 VALUES (0x00),(0x01),(0x02),(0x03),(0x04),(0x05),(0x06),(0x07);
|
||||||
|
INSERT INTO t1 VALUES (0x08),(0x09),(0x0A),(0x0B),(0x0C),(0x0D),(0x0E),(0x0F);
|
||||||
|
INSERT INTO t1 VALUES (0x10),(0x11),(0x12),(0x13),(0x14),(0x15),(0x16),(0x17);
|
||||||
|
INSERT INTO t1 VALUES (0x18),(0x19),(0x1A),(0x1B),(0x1C),(0x1D),(0x1E),(0x1F);
|
||||||
|
INSERT INTO t1 VALUES (0x20),(0x21),(0x22),(0x23),(0x24),(0x25),(0x26),(0x27);
|
||||||
|
INSERT INTO t1 VALUES (0x28),(0x29),(0x2A),(0x2B),(0x2C),(0x2D),(0x2E),(0x2F);
|
||||||
|
INSERT INTO t1 VALUES (0x30),(0x31),(0x32),(0x33),(0x34),(0x35),(0x36),(0x37);
|
||||||
|
INSERT INTO t1 VALUES (0x38),(0x39),(0x3A),(0x3B),(0x3C),(0x3D),(0x3E),(0x3F);
|
||||||
|
INSERT INTO t1 VALUES (0x40),(0x41),(0x42),(0x43),(0x44),(0x45),(0x46),(0x47);
|
||||||
|
INSERT INTO t1 VALUES (0x48),(0x49),(0x4A),(0x4B),(0x4C),(0x4D),(0x4E),(0x4F);
|
||||||
|
INSERT INTO t1 VALUES (0x50),(0x51),(0x52),(0x53),(0x54),(0x55),(0x56),(0x57);
|
||||||
|
INSERT INTO t1 VALUES (0x58),(0x59),(0x5A),(0x5B),(0x5C),(0x5D),(0x5E),(0x5F);
|
||||||
|
INSERT INTO t1 VALUES (0x60),(0x61),(0x62),(0x63),(0x64),(0x65),(0x66),(0x67);
|
||||||
|
INSERT INTO t1 VALUES (0x68),(0x69),(0x6A),(0x6B),(0x6C),(0x6D),(0x6E),(0x6F);
|
||||||
|
INSERT INTO t1 VALUES (0x70),(0x71),(0x72),(0x73),(0x74),(0x75),(0x76),(0x77);
|
||||||
|
INSERT INTO t1 VALUES (0x78),(0x79),(0x7A),(0x7B),(0x7C),(0x7D),(0x7E),(0x7F);
|
||||||
|
INSERT INTO t1 VALUES (0x80),(0x81),(0x82),(0x83),(0x84),(0x85),(0x86),(0x87);
|
||||||
|
INSERT INTO t1 VALUES (0x88),(0x89),(0x8A),(0x8B),(0x8C),(0x8D),(0x8E),(0x8F);
|
||||||
|
INSERT INTO t1 VALUES (0x90),(0x91),(0x92),(0x93),(0x94),(0x95),(0x96),(0x97);
|
||||||
|
INSERT INTO t1 VALUES (0x98),(0x99),(0x9A),(0x9B),(0x9C),(0x9D),(0x9E),(0x9F);
|
||||||
|
INSERT INTO t1 VALUES (0xA0),(0xA1),(0xA2),(0xA3),(0xA4),(0xA5),(0xA6),(0xA7);
|
||||||
|
INSERT INTO t1 VALUES (0xA8),(0xA9),(0xAA),(0xAB),(0xAC),(0xAD),(0xAE),(0xAF);
|
||||||
|
INSERT INTO t1 VALUES (0xB0),(0xB1),(0xB2),(0xB3),(0xB4),(0xB5),(0xB6),(0xB7);
|
||||||
|
INSERT INTO t1 VALUES (0xB8),(0xB9),(0xBA),(0xBB),(0xBC),(0xBD),(0xBE),(0xBF);
|
||||||
|
INSERT INTO t1 VALUES (0xC0),(0xC1),(0xC2),(0xC3),(0xC4),(0xC5),(0xC6),(0xC7);
|
||||||
|
INSERT INTO t1 VALUES (0xC8),(0xC9),(0xCA),(0xCB),(0xCC),(0xCD),(0xCE),(0xCF);
|
||||||
|
INSERT INTO t1 VALUES (0xD0),(0xD1),(0xD2),(0xD3),(0xD4),(0xD5),(0xD6),(0xD7);
|
||||||
|
INSERT INTO t1 VALUES (0xD8),(0xD9),(0xDA),(0xDB),(0xDC),(0xDD),(0xDE),(0xDF);
|
||||||
|
INSERT INTO t1 VALUES (0xE0),(0xE1),(0xE2),(0xE3),(0xE4),(0xE5),(0xE6),(0xE7);
|
||||||
|
INSERT INTO t1 VALUES (0xE8),(0xE9),(0xEA),(0xEB),(0xEC),(0xED),(0xEE),(0xEF);
|
||||||
|
INSERT INTO t1 VALUES (0xF0),(0xF1),(0xF2),(0xF3),(0xF4),(0xF5),(0xF6),(0xF7);
|
||||||
|
INSERT INTO t1 VALUES (0xF8),(0xF9),(0xFA),(0xFB),(0xFC),(0xFD),(0xFE),(0xFF);
|
||||||
|
SELECT
|
||||||
|
HEX(a) AS chr,
|
||||||
|
HEX(LOWER(a)) AS upper,
|
||||||
|
HEX(LOWER(a)) AS lower,
|
||||||
|
HEX(@utf8:=CONVERT(a USING utf8)) AS utf8,
|
||||||
|
HEX(@roundtrip:=CAST(@utf8 AS CHAR)) AS roundtrip,
|
||||||
|
if(a=BINARY @roundtrip,'','Round trip unsafe') AS issafe
|
||||||
|
FROM t1 ORDER BY chr;
|
||||||
|
DROP TABLE t1;
|
@ -1,18 +1,14 @@
|
|||||||
|
|
||||||
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
||||||
# it until it's told to
|
# it until it's told to
|
||||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
wait
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Send shutdown to the connected server and give
|
# Send shutdown to the connected server and give
|
||||||
# it 10 seconds to die before zapping it
|
# it 10 seconds to die before zapping it
|
||||||
shutdown_server 10;
|
shutdown_server 10;
|
||||||
|
|
||||||
# Write file to make mysql-test-run.pl start up the server again
|
# Write file to make mysql-test-run.pl start up the server again
|
||||||
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
restart
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Turn on reconnect
|
# Turn on reconnect
|
||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
|
@ -143,7 +143,7 @@ sub collect_test_cases ($$$) {
|
|||||||
{
|
{
|
||||||
last unless $opt_reorder;
|
last unless $opt_reorder;
|
||||||
# test->{name} is always in suite.name format
|
# test->{name} is always in suite.name format
|
||||||
if ( $test->{name} =~ /.*\.$tname/ )
|
if ( $test->{name} =~ /^$sname.*\.$tname$/ )
|
||||||
{
|
{
|
||||||
$found= 1;
|
$found= 1;
|
||||||
last;
|
last;
|
||||||
|
@ -569,7 +569,10 @@ sub run_test_server ($$$) {
|
|||||||
if ( !$opt_force ) {
|
if ( !$opt_force ) {
|
||||||
# Test has failed, force is off
|
# Test has failed, force is off
|
||||||
push(@$completed, $result);
|
push(@$completed, $result);
|
||||||
return $completed;
|
return $completed unless $result->{'dont_kill_server'};
|
||||||
|
# Prevent kill of server, to get valgrind report
|
||||||
|
print $sock "BYE\n";
|
||||||
|
next;
|
||||||
}
|
}
|
||||||
elsif ($opt_max_test_fail > 0 and
|
elsif ($opt_max_test_fail > 0 and
|
||||||
$num_failed_test >= $opt_max_test_fail) {
|
$num_failed_test >= $opt_max_test_fail) {
|
||||||
@ -809,13 +812,14 @@ sub run_worker ($) {
|
|||||||
elsif ($line eq 'BYE'){
|
elsif ($line eq 'BYE'){
|
||||||
mtr_report("Server said BYE");
|
mtr_report("Server said BYE");
|
||||||
stop_all_servers($opt_shutdown_timeout);
|
stop_all_servers($opt_shutdown_timeout);
|
||||||
|
my $valgrind_reports= 0;
|
||||||
if ($opt_valgrind_mysqld) {
|
if ($opt_valgrind_mysqld) {
|
||||||
valgrind_exit_reports();
|
$valgrind_reports= valgrind_exit_reports();
|
||||||
}
|
}
|
||||||
if ( $opt_gprof ) {
|
if ( $opt_gprof ) {
|
||||||
gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
|
gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
|
||||||
}
|
}
|
||||||
exit(0);
|
exit($valgrind_reports);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mtr_error("Could not understand server, '$line'");
|
mtr_error("Could not understand server, '$line'");
|
||||||
@ -3680,7 +3684,6 @@ sub run_testcase ($) {
|
|||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Check if it was an expected crash
|
# Check if it was an expected crash
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
SRVDIED:
|
|
||||||
my $check_crash = check_expected_crash_and_restart($proc);
|
my $check_crash = check_expected_crash_and_restart($proc);
|
||||||
if ($check_crash)
|
if ($check_crash)
|
||||||
{
|
{
|
||||||
@ -3690,6 +3693,7 @@ sub run_testcase ($) {
|
|||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SRVDIED:
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Stop the test case timer
|
# Stop the test case timer
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
@ -4239,7 +4243,12 @@ sub after_failure ($) {
|
|||||||
sub report_failure_and_restart ($) {
|
sub report_failure_and_restart ($) {
|
||||||
my $tinfo= shift;
|
my $tinfo= shift;
|
||||||
|
|
||||||
stop_all_servers();
|
if ($opt_valgrind_mysqld && ($tinfo->{'warnings'} || $tinfo->{'timeout'})) {
|
||||||
|
# In these cases we may want valgrind report from normal termination
|
||||||
|
$tinfo->{'dont_kill_server'}= 1;
|
||||||
|
}
|
||||||
|
# Shotdown properly if not to be killed (for valgrind)
|
||||||
|
stop_all_servers($tinfo->{'dont_kill_server'} ? $opt_shutdown_timeout : 0);
|
||||||
|
|
||||||
$tinfo->{'result'}= 'MTR_RES_FAILED';
|
$tinfo->{'result'}= 'MTR_RES_FAILED';
|
||||||
|
|
||||||
@ -5366,6 +5375,8 @@ sub valgrind_arguments {
|
|||||||
#
|
#
|
||||||
|
|
||||||
sub valgrind_exit_reports() {
|
sub valgrind_exit_reports() {
|
||||||
|
my $found_err= 0;
|
||||||
|
|
||||||
foreach my $log_file (keys %mysqld_logs)
|
foreach my $log_file (keys %mysqld_logs)
|
||||||
{
|
{
|
||||||
my @culprits= ();
|
my @culprits= ();
|
||||||
@ -5401,7 +5412,7 @@ sub valgrind_exit_reports() {
|
|||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
# This line marks the start of a valgrind report
|
# This line marks the start of a valgrind report
|
||||||
$found_report= 1 if $line =~ /ERROR SUMMARY:/;
|
$found_report= 1 if $line =~ /^==\d+== .* SUMMARY:/;
|
||||||
|
|
||||||
if ($found_report) {
|
if ($found_report) {
|
||||||
$line=~ s/^==\d+== //;
|
$line=~ s/^==\d+== //;
|
||||||
@ -5418,8 +5429,11 @@ sub valgrind_exit_reports() {
|
|||||||
mtr_print ("Valgrind report from $log_file after tests:\n", @culprits);
|
mtr_print ("Valgrind report from $log_file after tests:\n", @culprits);
|
||||||
mtr_print_line();
|
mtr_print_line();
|
||||||
print ("$valgrind_rep\n");
|
print ("$valgrind_rep\n");
|
||||||
|
$found_err= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $found_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -18,7 +18,7 @@ change_user
|
|||||||
SELECT @@session.sql_big_selects;
|
SELECT @@session.sql_big_selects;
|
||||||
@@session.sql_big_selects
|
@@session.sql_big_selects
|
||||||
0
|
0
|
||||||
SET @@global.max_join_size = -1;
|
SET @@global.max_join_size = 18446744073709551615;
|
||||||
SET @@session.max_join_size = default;
|
SET @@session.max_join_size = default;
|
||||||
change_user
|
change_user
|
||||||
SELECT @@session.sql_big_selects;
|
SELECT @@session.sql_big_selects;
|
||||||
|
@ -215,6 +215,17 @@ SET GLOBAL event_scheduler = OFF;
|
|||||||
|
|
||||||
# -- End of Bug#35074.
|
# -- End of Bug#35074.
|
||||||
|
|
||||||
|
#
|
||||||
|
# -- Bug#49752: 2469.126.2 unintentionally breaks authentication
|
||||||
|
# against MySQL 5.1 server
|
||||||
|
#
|
||||||
|
GRANT ALL ON test.* TO 'Azundris12345678'@'localhost' IDENTIFIED BY 'test123';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
DROP USER 'Azundris12345678'@'localhost';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
#
|
||||||
|
# -- End of Bug#49752
|
||||||
|
#
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
# -- End of 5.1 tests
|
# -- End of 5.1 tests
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
|
@ -70,3 +70,311 @@ we_ivo NULL
|
|||||||
we_martin NULL
|
we_martin NULL
|
||||||
we_toshko NULL
|
we_toshko NULL
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Start of 5.1 tests
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
cp1251_general_ci
|
||||||
|
CREATE TABLE t1 AS SELECT ' ' AS a LIMIT 0;
|
||||||
|
INSERT INTO t1 VALUES (0x00),(0x01),(0x02),(0x03),(0x04),(0x05),(0x06),(0x07);
|
||||||
|
INSERT INTO t1 VALUES (0x08),(0x09),(0x0A),(0x0B),(0x0C),(0x0D),(0x0E),(0x0F);
|
||||||
|
INSERT INTO t1 VALUES (0x10),(0x11),(0x12),(0x13),(0x14),(0x15),(0x16),(0x17);
|
||||||
|
INSERT INTO t1 VALUES (0x18),(0x19),(0x1A),(0x1B),(0x1C),(0x1D),(0x1E),(0x1F);
|
||||||
|
INSERT INTO t1 VALUES (0x20),(0x21),(0x22),(0x23),(0x24),(0x25),(0x26),(0x27);
|
||||||
|
INSERT INTO t1 VALUES (0x28),(0x29),(0x2A),(0x2B),(0x2C),(0x2D),(0x2E),(0x2F);
|
||||||
|
INSERT INTO t1 VALUES (0x30),(0x31),(0x32),(0x33),(0x34),(0x35),(0x36),(0x37);
|
||||||
|
INSERT INTO t1 VALUES (0x38),(0x39),(0x3A),(0x3B),(0x3C),(0x3D),(0x3E),(0x3F);
|
||||||
|
INSERT INTO t1 VALUES (0x40),(0x41),(0x42),(0x43),(0x44),(0x45),(0x46),(0x47);
|
||||||
|
INSERT INTO t1 VALUES (0x48),(0x49),(0x4A),(0x4B),(0x4C),(0x4D),(0x4E),(0x4F);
|
||||||
|
INSERT INTO t1 VALUES (0x50),(0x51),(0x52),(0x53),(0x54),(0x55),(0x56),(0x57);
|
||||||
|
INSERT INTO t1 VALUES (0x58),(0x59),(0x5A),(0x5B),(0x5C),(0x5D),(0x5E),(0x5F);
|
||||||
|
INSERT INTO t1 VALUES (0x60),(0x61),(0x62),(0x63),(0x64),(0x65),(0x66),(0x67);
|
||||||
|
INSERT INTO t1 VALUES (0x68),(0x69),(0x6A),(0x6B),(0x6C),(0x6D),(0x6E),(0x6F);
|
||||||
|
INSERT INTO t1 VALUES (0x70),(0x71),(0x72),(0x73),(0x74),(0x75),(0x76),(0x77);
|
||||||
|
INSERT INTO t1 VALUES (0x78),(0x79),(0x7A),(0x7B),(0x7C),(0x7D),(0x7E),(0x7F);
|
||||||
|
INSERT INTO t1 VALUES (0x80),(0x81),(0x82),(0x83),(0x84),(0x85),(0x86),(0x87);
|
||||||
|
INSERT INTO t1 VALUES (0x88),(0x89),(0x8A),(0x8B),(0x8C),(0x8D),(0x8E),(0x8F);
|
||||||
|
INSERT INTO t1 VALUES (0x90),(0x91),(0x92),(0x93),(0x94),(0x95),(0x96),(0x97);
|
||||||
|
INSERT INTO t1 VALUES (0x98),(0x99),(0x9A),(0x9B),(0x9C),(0x9D),(0x9E),(0x9F);
|
||||||
|
INSERT INTO t1 VALUES (0xA0),(0xA1),(0xA2),(0xA3),(0xA4),(0xA5),(0xA6),(0xA7);
|
||||||
|
INSERT INTO t1 VALUES (0xA8),(0xA9),(0xAA),(0xAB),(0xAC),(0xAD),(0xAE),(0xAF);
|
||||||
|
INSERT INTO t1 VALUES (0xB0),(0xB1),(0xB2),(0xB3),(0xB4),(0xB5),(0xB6),(0xB7);
|
||||||
|
INSERT INTO t1 VALUES (0xB8),(0xB9),(0xBA),(0xBB),(0xBC),(0xBD),(0xBE),(0xBF);
|
||||||
|
INSERT INTO t1 VALUES (0xC0),(0xC1),(0xC2),(0xC3),(0xC4),(0xC5),(0xC6),(0xC7);
|
||||||
|
INSERT INTO t1 VALUES (0xC8),(0xC9),(0xCA),(0xCB),(0xCC),(0xCD),(0xCE),(0xCF);
|
||||||
|
INSERT INTO t1 VALUES (0xD0),(0xD1),(0xD2),(0xD3),(0xD4),(0xD5),(0xD6),(0xD7);
|
||||||
|
INSERT INTO t1 VALUES (0xD8),(0xD9),(0xDA),(0xDB),(0xDC),(0xDD),(0xDE),(0xDF);
|
||||||
|
INSERT INTO t1 VALUES (0xE0),(0xE1),(0xE2),(0xE3),(0xE4),(0xE5),(0xE6),(0xE7);
|
||||||
|
INSERT INTO t1 VALUES (0xE8),(0xE9),(0xEA),(0xEB),(0xEC),(0xED),(0xEE),(0xEF);
|
||||||
|
INSERT INTO t1 VALUES (0xF0),(0xF1),(0xF2),(0xF3),(0xF4),(0xF5),(0xF6),(0xF7);
|
||||||
|
INSERT INTO t1 VALUES (0xF8),(0xF9),(0xFA),(0xFB),(0xFC),(0xFD),(0xFE),(0xFF);
|
||||||
|
SELECT
|
||||||
|
HEX(a) AS chr,
|
||||||
|
HEX(LOWER(a)) AS upper,
|
||||||
|
HEX(LOWER(a)) AS lower,
|
||||||
|
HEX(@utf8:=CONVERT(a USING utf8)) AS utf8,
|
||||||
|
HEX(@roundtrip:=CAST(@utf8 AS CHAR)) AS roundtrip,
|
||||||
|
if(a=BINARY @roundtrip,'','Round trip unsafe') AS issafe
|
||||||
|
FROM t1 ORDER BY chr;
|
||||||
|
chr upper lower utf8 roundtrip issafe
|
||||||
|
00 00 00 00 00
|
||||||
|
01 01 01 01 01
|
||||||
|
02 02 02 02 02
|
||||||
|
03 03 03 03 03
|
||||||
|
04 04 04 04 04
|
||||||
|
05 05 05 05 05
|
||||||
|
06 06 06 06 06
|
||||||
|
07 07 07 07 07
|
||||||
|
08 08 08 08 08
|
||||||
|
09 09 09 09 09
|
||||||
|
0A 0A 0A 0A 0A
|
||||||
|
0B 0B 0B 0B 0B
|
||||||
|
0C 0C 0C 0C 0C
|
||||||
|
0D 0D 0D 0D 0D
|
||||||
|
0E 0E 0E 0E 0E
|
||||||
|
0F 0F 0F 0F 0F
|
||||||
|
10 10 10 10 10
|
||||||
|
11 11 11 11 11
|
||||||
|
12 12 12 12 12
|
||||||
|
13 13 13 13 13
|
||||||
|
14 14 14 14 14
|
||||||
|
15 15 15 15 15
|
||||||
|
16 16 16 16 16
|
||||||
|
17 17 17 17 17
|
||||||
|
18 18 18 18 18
|
||||||
|
19 19 19 19 19
|
||||||
|
1A 1A 1A 1A 1A
|
||||||
|
1B 1B 1B 1B 1B
|
||||||
|
1C 1C 1C 1C 1C
|
||||||
|
1D 1D 1D 1D 1D
|
||||||
|
1E 1E 1E 1E 1E
|
||||||
|
1F 1F 1F 1F 1F
|
||||||
|
20 20 20 20 20
|
||||||
|
21 21 21 21 21
|
||||||
|
22 22 22 22 22
|
||||||
|
23 23 23 23 23
|
||||||
|
24 24 24 24 24
|
||||||
|
25 25 25 25 25
|
||||||
|
26 26 26 26 26
|
||||||
|
27 27 27 27 27
|
||||||
|
28 28 28 28 28
|
||||||
|
29 29 29 29 29
|
||||||
|
2A 2A 2A 2A 2A
|
||||||
|
2B 2B 2B 2B 2B
|
||||||
|
2C 2C 2C 2C 2C
|
||||||
|
2D 2D 2D 2D 2D
|
||||||
|
2E 2E 2E 2E 2E
|
||||||
|
2F 2F 2F 2F 2F
|
||||||
|
30 30 30 30 30
|
||||||
|
31 31 31 31 31
|
||||||
|
32 32 32 32 32
|
||||||
|
33 33 33 33 33
|
||||||
|
34 34 34 34 34
|
||||||
|
35 35 35 35 35
|
||||||
|
36 36 36 36 36
|
||||||
|
37 37 37 37 37
|
||||||
|
38 38 38 38 38
|
||||||
|
39 39 39 39 39
|
||||||
|
3A 3A 3A 3A 3A
|
||||||
|
3B 3B 3B 3B 3B
|
||||||
|
3C 3C 3C 3C 3C
|
||||||
|
3D 3D 3D 3D 3D
|
||||||
|
3E 3E 3E 3E 3E
|
||||||
|
3F 3F 3F 3F 3F
|
||||||
|
40 40 40 40 40
|
||||||
|
41 61 61 41 41
|
||||||
|
42 62 62 42 42
|
||||||
|
43 63 63 43 43
|
||||||
|
44 64 64 44 44
|
||||||
|
45 65 65 45 45
|
||||||
|
46 66 66 46 46
|
||||||
|
47 67 67 47 47
|
||||||
|
48 68 68 48 48
|
||||||
|
49 69 69 49 49
|
||||||
|
4A 6A 6A 4A 4A
|
||||||
|
4B 6B 6B 4B 4B
|
||||||
|
4C 6C 6C 4C 4C
|
||||||
|
4D 6D 6D 4D 4D
|
||||||
|
4E 6E 6E 4E 4E
|
||||||
|
4F 6F 6F 4F 4F
|
||||||
|
50 70 70 50 50
|
||||||
|
51 71 71 51 51
|
||||||
|
52 72 72 52 52
|
||||||
|
53 73 73 53 53
|
||||||
|
54 74 74 54 54
|
||||||
|
55 75 75 55 55
|
||||||
|
56 76 76 56 56
|
||||||
|
57 77 77 57 57
|
||||||
|
58 78 78 58 58
|
||||||
|
59 79 79 59 59
|
||||||
|
5A 7A 7A 5A 5A
|
||||||
|
5B 5B 5B 5B 5B
|
||||||
|
5C 5C 5C 5C 5C
|
||||||
|
5D 5D 5D 5D 5D
|
||||||
|
5E 5E 5E 5E 5E
|
||||||
|
5F 5F 5F 5F 5F
|
||||||
|
60 60 60 60 60
|
||||||
|
61 61 61 61 61
|
||||||
|
62 62 62 62 62
|
||||||
|
63 63 63 63 63
|
||||||
|
64 64 64 64 64
|
||||||
|
65 65 65 65 65
|
||||||
|
66 66 66 66 66
|
||||||
|
67 67 67 67 67
|
||||||
|
68 68 68 68 68
|
||||||
|
69 69 69 69 69
|
||||||
|
6A 6A 6A 6A 6A
|
||||||
|
6B 6B 6B 6B 6B
|
||||||
|
6C 6C 6C 6C 6C
|
||||||
|
6D 6D 6D 6D 6D
|
||||||
|
6E 6E 6E 6E 6E
|
||||||
|
6F 6F 6F 6F 6F
|
||||||
|
70 70 70 70 70
|
||||||
|
71 71 71 71 71
|
||||||
|
72 72 72 72 72
|
||||||
|
73 73 73 73 73
|
||||||
|
74 74 74 74 74
|
||||||
|
75 75 75 75 75
|
||||||
|
76 76 76 76 76
|
||||||
|
77 77 77 77 77
|
||||||
|
78 78 78 78 78
|
||||||
|
79 79 79 79 79
|
||||||
|
7A 7A 7A 7A 7A
|
||||||
|
7B 7B 7B 7B 7B
|
||||||
|
7C 7C 7C 7C 7C
|
||||||
|
7D 7D 7D 7D 7D
|
||||||
|
7E 7E 7E 7E 7E
|
||||||
|
7F 7F 7F 7F 7F
|
||||||
|
80 90 90 D082 80
|
||||||
|
81 83 83 D083 81
|
||||||
|
82 82 82 E2809A 82
|
||||||
|
83 83 83 D193 83
|
||||||
|
84 84 84 E2809E 84
|
||||||
|
85 85 85 E280A6 85
|
||||||
|
86 86 86 E280A0 86
|
||||||
|
87 87 87 E280A1 87
|
||||||
|
88 88 88 E282AC 88
|
||||||
|
89 89 89 E280B0 89
|
||||||
|
8A 9A 9A D089 8A
|
||||||
|
8B 8B 8B E280B9 8B
|
||||||
|
8C 9C 9C D08A 8C
|
||||||
|
8D 9D 9D D08C 8D
|
||||||
|
8E 9E 9E D08B 8E
|
||||||
|
8F 9F 9F D08F 8F
|
||||||
|
90 90 90 D192 90
|
||||||
|
91 91 91 E28098 91
|
||||||
|
92 92 92 E28099 92
|
||||||
|
93 93 93 E2809C 93
|
||||||
|
94 94 94 E2809D 94
|
||||||
|
95 95 95 E280A2 95
|
||||||
|
96 96 96 E28093 96
|
||||||
|
97 97 97 E28094 97
|
||||||
|
98 98 98 3F 3F Round trip unsafe
|
||||||
|
99 99 99 E284A2 99
|
||||||
|
9A 9A 9A D199 9A
|
||||||
|
9B 9B 9B E280BA 9B
|
||||||
|
9C 9C 9C D19A 9C
|
||||||
|
9D 9D 9D D19C 9D
|
||||||
|
9E 9E 9E D19B 9E
|
||||||
|
9F 9F 9F D19F 9F
|
||||||
|
A0 A0 A0 C2A0 A0
|
||||||
|
A1 A2 A2 D08E A1
|
||||||
|
A2 A2 A2 D19E A2
|
||||||
|
A3 BC BC D088 A3
|
||||||
|
A4 A4 A4 C2A4 A4
|
||||||
|
A5 B4 B4 D290 A5
|
||||||
|
A6 A6 A6 C2A6 A6
|
||||||
|
A7 A7 A7 C2A7 A7
|
||||||
|
A8 B8 B8 D081 A8
|
||||||
|
A9 A9 A9 C2A9 A9
|
||||||
|
AA BA BA D084 AA
|
||||||
|
AB AB AB C2AB AB
|
||||||
|
AC AC AC C2AC AC
|
||||||
|
AD AD AD C2AD AD
|
||||||
|
AE AE AE C2AE AE
|
||||||
|
AF BF BF D087 AF
|
||||||
|
B0 B0 B0 C2B0 B0
|
||||||
|
B1 B1 B1 C2B1 B1
|
||||||
|
B2 B3 B3 D086 B2
|
||||||
|
B3 B3 B3 D196 B3
|
||||||
|
B4 B4 B4 D291 B4
|
||||||
|
B5 B5 B5 C2B5 B5
|
||||||
|
B6 B6 B6 C2B6 B6
|
||||||
|
B7 B7 B7 C2B7 B7
|
||||||
|
B8 B8 B8 D191 B8
|
||||||
|
B9 B9 B9 E28496 B9
|
||||||
|
BA BA BA D194 BA
|
||||||
|
BB BB BB C2BB BB
|
||||||
|
BC BC BC D198 BC
|
||||||
|
BD BE BE D085 BD
|
||||||
|
BE BE BE D195 BE
|
||||||
|
BF BF BF D197 BF
|
||||||
|
C0 E0 E0 D090 C0
|
||||||
|
C1 E1 E1 D091 C1
|
||||||
|
C2 E2 E2 D092 C2
|
||||||
|
C3 E3 E3 D093 C3
|
||||||
|
C4 E4 E4 D094 C4
|
||||||
|
C5 E5 E5 D095 C5
|
||||||
|
C6 E6 E6 D096 C6
|
||||||
|
C7 E7 E7 D097 C7
|
||||||
|
C8 E8 E8 D098 C8
|
||||||
|
C9 E9 E9 D099 C9
|
||||||
|
CA EA EA D09A CA
|
||||||
|
CB EB EB D09B CB
|
||||||
|
CC EC EC D09C CC
|
||||||
|
CD ED ED D09D CD
|
||||||
|
CE EE EE D09E CE
|
||||||
|
CF EF EF D09F CF
|
||||||
|
D0 F0 F0 D0A0 D0
|
||||||
|
D1 F1 F1 D0A1 D1
|
||||||
|
D2 F2 F2 D0A2 D2
|
||||||
|
D3 F3 F3 D0A3 D3
|
||||||
|
D4 F4 F4 D0A4 D4
|
||||||
|
D5 F5 F5 D0A5 D5
|
||||||
|
D6 F6 F6 D0A6 D6
|
||||||
|
D7 F7 F7 D0A7 D7
|
||||||
|
D8 F8 F8 D0A8 D8
|
||||||
|
D9 F9 F9 D0A9 D9
|
||||||
|
DA FA FA D0AA DA
|
||||||
|
DB FB FB D0AB DB
|
||||||
|
DC FC FC D0AC DC
|
||||||
|
DD FD FD D0AD DD
|
||||||
|
DE FE FE D0AE DE
|
||||||
|
DF FF FF D0AF DF
|
||||||
|
E0 E0 E0 D0B0 E0
|
||||||
|
E1 E1 E1 D0B1 E1
|
||||||
|
E2 E2 E2 D0B2 E2
|
||||||
|
E3 E3 E3 D0B3 E3
|
||||||
|
E4 E4 E4 D0B4 E4
|
||||||
|
E5 E5 E5 D0B5 E5
|
||||||
|
E6 E6 E6 D0B6 E6
|
||||||
|
E7 E7 E7 D0B7 E7
|
||||||
|
E8 E8 E8 D0B8 E8
|
||||||
|
E9 E9 E9 D0B9 E9
|
||||||
|
EA EA EA D0BA EA
|
||||||
|
EB EB EB D0BB EB
|
||||||
|
EC EC EC D0BC EC
|
||||||
|
ED ED ED D0BD ED
|
||||||
|
EE EE EE D0BE EE
|
||||||
|
EF EF EF D0BF EF
|
||||||
|
F0 F0 F0 D180 F0
|
||||||
|
F1 F1 F1 D181 F1
|
||||||
|
F2 F2 F2 D182 F2
|
||||||
|
F3 F3 F3 D183 F3
|
||||||
|
F4 F4 F4 D184 F4
|
||||||
|
F5 F5 F5 D185 F5
|
||||||
|
F6 F6 F6 D186 F6
|
||||||
|
F7 F7 F7 D187 F7
|
||||||
|
F8 F8 F8 D188 F8
|
||||||
|
F9 F9 F9 D189 F9
|
||||||
|
FA FA FA D18A FA
|
||||||
|
FB FB FB D18B FB
|
||||||
|
FC FC FC D18C FC
|
||||||
|
FD FD FD D18D FD
|
||||||
|
FE FE FE D18E FE
|
||||||
|
FF FF FF D18F FF
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of 5.1 tests
|
||||||
|
#
|
||||||
|
@ -1898,3 +1898,34 @@ CONVERT(a, CHAR) CONVERT(b, CHAR)
|
|||||||
70000 1092
|
70000 1092
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
SELECT LENGTH(RPAD(0.0115E88, 61297, _utf8'яэюя'));
|
||||||
|
LENGTH(RPAD(0.0115E88, 61297, _utf8'яэюя'))
|
||||||
|
61297
|
||||||
|
SELECT LENGTH(RPAD(0.0115E88, 61297, _utf8'йцуя'));
|
||||||
|
LENGTH(RPAD(0.0115E88, 61297, _utf8'йцуя'))
|
||||||
|
61297
|
||||||
|
SELECT HEX(RPAD(0x20, 2, _utf8 0xD18F));
|
||||||
|
HEX(RPAD(0x20, 2, _utf8 0xD18F))
|
||||||
|
20D1
|
||||||
|
SELECT HEX(RPAD(0x20, 4, _utf8 0xD18F));
|
||||||
|
HEX(RPAD(0x20, 4, _utf8 0xD18F))
|
||||||
|
20D18FD1
|
||||||
|
SELECT HEX(LPAD(0x20, 2, _utf8 0xD18F));
|
||||||
|
HEX(LPAD(0x20, 2, _utf8 0xD18F))
|
||||||
|
D120
|
||||||
|
SELECT HEX(LPAD(0x20, 4, _utf8 0xD18F));
|
||||||
|
HEX(LPAD(0x20, 4, _utf8 0xD18F))
|
||||||
|
D18FD120
|
||||||
|
SELECT HEX(RPAD(_utf8 0xD18F, 3, 0x20));
|
||||||
|
HEX(RPAD(_utf8 0xD18F, 3, 0x20))
|
||||||
|
D18F20
|
||||||
|
SELECT HEX(LPAD(_utf8 0xD18F, 3, 0x20));
|
||||||
|
HEX(LPAD(_utf8 0xD18F, 3, 0x20))
|
||||||
|
20D18F
|
||||||
|
SELECT HEX(INSERT(_utf8 0xD18F, 2, 1, 0x20));
|
||||||
|
HEX(INSERT(_utf8 0xD18F, 2, 1, 0x20))
|
||||||
|
D120
|
||||||
|
SELECT HEX(INSERT(_utf8 0xD18FD18E, 2, 1, 0x20));
|
||||||
|
HEX(INSERT(_utf8 0xD18FD18E, 2, 1, 0x20))
|
||||||
|
D120D18E
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -251,4 +251,50 @@ EXPLAIN SELECT c1 FROM t1 WHERE c2 = 1 AND c4 = 1 AND c5 = 1;
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref c2,c2_2 c2 10 const,const 3 Using where
|
1 SIMPLE t1 ref c2,c2_2 c2 10 const,const 3 Using where
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#56814 Explain + subselect + fulltext crashes server
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(f1 VARCHAR(6) NOT NULL,
|
||||||
|
FULLTEXT KEY(f1),UNIQUE(f1));
|
||||||
|
INSERT INTO t1 VALUES ('test');
|
||||||
|
EXPLAIN SELECT 1 FROM t1
|
||||||
|
WHERE 1 > ALL((SELECT 1 FROM t1 JOIN t1 a ON (MATCH(t1.f1) AGAINST (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1));
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
2 SUBQUERY a system NULL NULL NULL NULL 1 Using filesort
|
||||||
|
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
||||||
|
PREPARE stmt FROM
|
||||||
|
'EXPLAIN SELECT 1 FROM t1
|
||||||
|
WHERE 1 > ALL((SELECT 1 FROM t1 RIGHT OUTER JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) AGAINST (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1))';
|
||||||
|
EXECUTE stmt;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
2 SUBQUERY a system NULL NULL NULL NULL 1 Using filesort
|
||||||
|
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
||||||
|
EXECUTE stmt;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
2 SUBQUERY a system NULL NULL NULL NULL 1 Using filesort
|
||||||
|
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
PREPARE stmt FROM
|
||||||
|
'EXPLAIN SELECT 1 FROM t1
|
||||||
|
WHERE 1 > ALL((SELECT 1 FROM t1 JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) AGAINST (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1))';
|
||||||
|
EXECUTE stmt;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
2 SUBQUERY a system NULL NULL NULL NULL 1 Using filesort
|
||||||
|
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
||||||
|
EXECUTE stmt;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
2 SUBQUERY a system NULL NULL NULL NULL 1 Using filesort
|
||||||
|
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests.
|
End of 5.1 tests.
|
||||||
|
@ -644,4 +644,40 @@ Table Op Msg_type Msg_text
|
|||||||
test.t1 repair status OK
|
test.t1 repair status OK
|
||||||
SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#54484 explain + prepared statement: crash and Got error -1 from storage engine
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(f1 VARCHAR(6) NOT NULL, FULLTEXT KEY(f1), UNIQUE(f1));
|
||||||
|
INSERT INTO t1 VALUES ('test');
|
||||||
|
SELECT 1 FROM t1 WHERE 1 >
|
||||||
|
ALL((SELECT 1 FROM t1 JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) against (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1)) xor f1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
PREPARE stmt FROM
|
||||||
|
'SELECT 1 FROM t1 WHERE 1 >
|
||||||
|
ALL((SELECT 1 FROM t1 RIGHT OUTER JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) against (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1)) xor f1';
|
||||||
|
EXECUTE stmt;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
EXECUTE stmt;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
PREPARE stmt FROM
|
||||||
|
'SELECT 1 FROM t1 WHERE 1 >
|
||||||
|
ALL((SELECT 1 FROM t1 JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) against (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1))';
|
||||||
|
EXECUTE stmt;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
EXECUTE stmt;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1029,4 +1029,12 @@ GROUP_CONCAT(t1.a ORDER BY t1.a)
|
|||||||
1,1,2,2
|
1,1,2,2
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#57194 group_concat cause crash and/or invalid memory reads with type errors
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(f1 int);
|
||||||
|
INSERT INTO t1 values (0),(0);
|
||||||
|
SELECT POLYGON((SELECT 1 FROM (SELECT 1 IN (GROUP_CONCAT(t1.f1)) FROM t1, t1 t GROUP BY t.f1 ) d));
|
||||||
|
ERROR 22007: Illegal non geometric '(select 1 from (select (1 = group_concat(`test`.`t1`.`f1` separator ',')) AS `1 IN (GROUP_CONCAT(t1.f1))` from `test`.`t1` join `test`.`t1` `t` group by `t`.`f1`) `d`)' value found during parsing
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -482,4 +482,20 @@ RAND(i)
|
|||||||
0.155220427694936
|
0.155220427694936
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# Bug#57477 SIGFPE when dividing a huge number a negative number
|
||||||
|
#
|
||||||
|
SELECT -9999999999999999991 DIV -1;
|
||||||
|
-9999999999999999991 DIV -1
|
||||||
|
-9223372036854775808
|
||||||
|
Warnings:
|
||||||
|
Error 1292 Truncated incorrect DECIMAL value: ''
|
||||||
|
SELECT -9223372036854775808 DIV -1;
|
||||||
|
-9223372036854775808 DIV -1
|
||||||
|
-9223372036854775808
|
||||||
|
SELECT -9223372036854775808 MOD -1;
|
||||||
|
-9223372036854775808 MOD -1
|
||||||
|
0
|
||||||
|
SELECT -9223372036854775808999 MOD -1;
|
||||||
|
-9223372036854775808999 MOD -1
|
||||||
|
0
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -351,4 +351,10 @@ GREATEST(a, (SELECT b FROM t1 LIMIT 1))
|
|||||||
3
|
3
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SELECT INET_NTOA(0);
|
||||||
|
INET_NTOA(0)
|
||||||
|
0.0.0.0
|
||||||
|
SELECT '1' IN ('1', INET_NTOA(0));
|
||||||
|
'1' IN ('1', INET_NTOA(0))
|
||||||
|
1
|
||||||
End of tests
|
End of tests
|
||||||
|
@ -1845,4 +1845,14 @@ SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
|||||||
SUBSTRING(a,1,10) LENGTH(a)
|
SUBSTRING(a,1,10) LENGTH(a)
|
||||||
1111111111 1300
|
1111111111 1300
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#57688 Assertion `!table || (!table->write_set || bitmap_is_set(table->write_set, field
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(f1 INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (16777214),(0);
|
||||||
|
SELECT COUNT(*) FROM t1 LEFT JOIN t1 t2
|
||||||
|
ON 1 WHERE t2.f1 > 1 GROUP BY t2.f1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
# End of 5.1 tests
|
# End of 5.1 tests
|
||||||
|
@ -1397,4 +1397,34 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1
|
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#57688 Assertion `!table || (!table->write_set || bitmap_is_set(table->write_set, field
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 INT NOT NULL, PRIMARY KEY (f1));
|
||||||
|
CREATE TABLE t2 (f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY (f1, f2));
|
||||||
|
INSERT INTO t1 VALUES (4);
|
||||||
|
INSERT INTO t2 VALUES (3, 3);
|
||||||
|
INSERT INTO t2 VALUES (7, 7);
|
||||||
|
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 system PRIMARY NULL NULL NULL 1 Using temporary; Using filesort
|
||||||
|
1 SIMPLE t2 ref PRIMARY PRIMARY 4 const 1 Using index
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
f1 f1 f2
|
||||||
|
4 NULL NULL
|
||||||
|
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4 AND t2.f1 IS NOT NULL AND t2.f2 IS NOT NULL
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 system PRIMARY NULL NULL NULL 1 Using filesort
|
||||||
|
1 SIMPLE t2 ref PRIMARY PRIMARY 4 const 1 Using where; Using index
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4 AND t2.f1 IS NOT NULL AND t2.f2 IS NOT NULL
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
f1 f1 f2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -334,8 +334,7 @@ test.t1 check status OK
|
|||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
set global key_cache_block_size= @my_key_cache_block_size;
|
set global key_cache_block_size= @my_key_cache_block_size;
|
||||||
set @@global.key_buffer_size=0;
|
set @@global.key_buffer_size=0;
|
||||||
Warnings:
|
ERROR HY000: Cannot drop default keycache
|
||||||
Warning 1438 Cannot drop default keycache
|
|
||||||
select @@global.key_buffer_size;
|
select @@global.key_buffer_size;
|
||||||
@@global.key_buffer_size
|
@@global.key_buffer_size
|
||||||
2097152
|
2097152
|
||||||
|
@ -2024,6 +2024,8 @@ SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE
|
|||||||
TABLE_SCHEMA = 'test' and TABLE_NAME='tm1';
|
TABLE_SCHEMA = 'test' and TABLE_NAME='tm1';
|
||||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
|
||||||
NULL test tm1 BASE TABLE NULL NULL NULL # # # # # # # # # # NULL # # Unable to open underlying table which is differently defined or of non-MyISAM ty
|
NULL test tm1 BASE TABLE NULL NULL NULL # # # # # # # # # # NULL # # Unable to open underlying table which is differently defined or of non-MyISAM ty
|
||||||
|
Warnings:
|
||||||
|
Warning 1168 Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||||
DROP TABLE tm1;
|
DROP TABLE tm1;
|
||||||
CREATE TABLE t1(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM;
|
CREATE TABLE t1(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM;
|
||||||
CREATE TABLE t2(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM;
|
CREATE TABLE t2(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM;
|
||||||
|
@ -235,4 +235,73 @@ Bug #47147: mysql client option --skip-column-names does not apply to vertical o
|
|||||||
*************************** 1. row ***************************
|
*************************** 1. row ***************************
|
||||||
1
|
1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #54899: --one-database option cannot handle DROP/CREATE DATABASE
|
||||||
|
# commands.
|
||||||
|
#
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
USE connected_db;
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_connected_db
|
||||||
|
table_in_connected_db
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Testing --one-database option
|
||||||
|
#
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
SHOW TABLES IN connected_db;
|
||||||
|
Tables_in_connected_db
|
||||||
|
t1
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
Tables_in_test
|
||||||
|
t1
|
||||||
|
USE test;
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
Tables_in_test
|
||||||
|
SHOW TABLES IN test1;
|
||||||
|
Tables_in_test1
|
||||||
|
DROP DATABASE test1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Checking --one-database option followed by the execution of
|
||||||
|
# connect command.
|
||||||
|
#
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
SHOW TABLES IN connected_db;
|
||||||
|
Tables_in_connected_db
|
||||||
|
t1
|
||||||
|
t2
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
Tables_in_test
|
||||||
|
t1
|
||||||
|
t2
|
||||||
|
DROP TABLE test.t1;
|
||||||
|
DROP TABLE test.t2;
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Checking --one-database option with no database specified
|
||||||
|
# at command-line.
|
||||||
|
#
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
Tables_in_test
|
||||||
|
|
||||||
|
#
|
||||||
|
# Checking --one-database option with non_existent_db
|
||||||
|
# specified with USE command
|
||||||
|
#
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
SHOW TABLES IN connected_db;
|
||||||
|
Tables_in_connected_db
|
||||||
|
table_in_connected_db
|
||||||
|
|
||||||
|
SHOW TABLES IN connected_db;
|
||||||
|
Tables_in_connected_db
|
||||||
|
table_in_connected_db
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
|
||||||
End of tests
|
End of tests
|
||||||
|
@ -308,6 +308,10 @@ var3 two columns with same name
|
|||||||
var4 from query that returns NULL
|
var4 from query that returns NULL
|
||||||
var5 from query that returns no row
|
var5 from query that returns no row
|
||||||
failing query in let
|
failing query in let
|
||||||
|
create table t1 (a varchar(100));
|
||||||
|
insert into t1 values ('`select 42`');
|
||||||
|
`select 42`
|
||||||
|
drop table t1;
|
||||||
mysqltest: At line 1: Error running query 'failing query': 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'failing query' at line 1
|
mysqltest: At line 1: Error running query 'failing query': 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'failing query' at line 1
|
||||||
mysqltest: At line 1: Missing required argument 'filename' to command 'source'
|
mysqltest: At line 1: Missing required argument 'filename' to command 'source'
|
||||||
mysqltest: At line 1: Could not open './non_existingFile' for reading, errno: 2
|
mysqltest: At line 1: Could not open './non_existingFile' for reading, errno: 2
|
||||||
@ -398,7 +402,9 @@ true-inner
|
|||||||
true-inner again
|
true-inner again
|
||||||
true-outer
|
true-outer
|
||||||
Counter is greater than 0, (counter=10)
|
Counter is greater than 0, (counter=10)
|
||||||
|
Counter should still be 10, is 10
|
||||||
Counter is not 0, (counter=0)
|
Counter is not 0, (counter=0)
|
||||||
|
Not space var works
|
||||||
Counter is true, (counter=alpha)
|
Counter is true, (counter=alpha)
|
||||||
Beta is true
|
Beta is true
|
||||||
while with string, only once
|
while with string, only once
|
||||||
|
@ -1,5 +1,31 @@
|
|||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
#
|
#
|
||||||
|
# Bug#56287: crash when using Partition datetime in sub in query
|
||||||
|
#
|
||||||
|
CREATE TABLE t1
|
||||||
|
(c1 bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
c2 varchar(40) not null default '',
|
||||||
|
c3 datetime not NULL,
|
||||||
|
PRIMARY KEY (c1,c3),
|
||||||
|
KEY partidx(c3))
|
||||||
|
ENGINE=InnoDB
|
||||||
|
PARTITION BY RANGE (TO_DAYS(c3))
|
||||||
|
(PARTITION p200912 VALUES LESS THAN (to_days('2010-01-01')),
|
||||||
|
PARTITION p201103 VALUES LESS THAN (to_days('2011-04-01')),
|
||||||
|
PARTITION p201912 VALUES LESS THAN MAXVALUE);
|
||||||
|
insert into t1(c2,c3) values ("Test row",'2010-01-01 00:00:00');
|
||||||
|
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
|
||||||
|
PARTITION_NAME TABLE_ROWS
|
||||||
|
p200912 0
|
||||||
|
p201103 1
|
||||||
|
p201912 0
|
||||||
|
SELECT count(*) FROM t1 p where c3 in
|
||||||
|
(select c3 from t1 t where t.c3 < date '2011-04-26 19:19:44'
|
||||||
|
and t.c3 > date '2011-04-26 19:18:44') ;
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# Bug#51830: Incorrect partition pruning on range partition (regression)
|
# Bug#51830: Incorrect partition pruning on range partition (regression)
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a INT NOT NULL)
|
CREATE TABLE t1 (a INT NOT NULL)
|
||||||
@ -387,3 +413,9 @@ a b
|
|||||||
3 2003-03-03
|
3 2003-03-03
|
||||||
COMMIT;
|
COMMIT;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (i1 int NOT NULL primary key, f1 int) ENGINE = InnoDB
|
||||||
|
PARTITION BY HASH(i1) PARTITIONS 2;
|
||||||
|
INSERT INTO t1 VALUES (1,1), (2,2);
|
||||||
|
SELECT * FROM t1 WHERE i1 = ( SELECT i1 FROM t1 WHERE f1=0 LIMIT 1 );
|
||||||
|
i1 f1
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -660,6 +660,8 @@ flush tables;
|
|||||||
SHOW TABLE STATUS like 't1';
|
SHOW TABLE STATUS like 't1';
|
||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
t1 NULL NULL NULL NULL # # # # NULL NULL NULL NULL NULL NULL NULL NULL Incorrect information in file: './test/t1.frm'
|
t1 NULL NULL NULL NULL # # # # NULL NULL NULL NULL NULL NULL NULL NULL Incorrect information in file: './test/t1.frm'
|
||||||
|
Warnings:
|
||||||
|
Warning 1033 Incorrect information in file: './test/t1.frm'
|
||||||
show create table t1;
|
show create table t1;
|
||||||
ERROR HY000: Incorrect information in file: './test/t1.frm'
|
ERROR HY000: Incorrect information in file: './test/t1.frm'
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
@ -447,4 +447,7 @@ IF(
|
|||||||
count(*), 1)
|
count(*), 1)
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
select @v:=@v:=sum(1) from dual;
|
||||||
|
@v:=@v:=sum(1)
|
||||||
|
1
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1511,4 +1511,37 @@ SELECT @@skip_name_resolve;
|
|||||||
SHOW VARIABLES LIKE 'skip_name_resolve';
|
SHOW VARIABLES LIKE 'skip_name_resolve';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
skip_name_resolve OFF
|
skip_name_resolve OFF
|
||||||
|
#
|
||||||
|
# Bug #43233 : Some server variables are clipped during "update,"
|
||||||
|
# not "check" stage
|
||||||
|
#
|
||||||
|
SET @kbs=@@global.key_buffer_size;
|
||||||
|
SET @kcbs=@@global.key_cache_block_size;
|
||||||
|
throw errors in STRICT mode
|
||||||
|
SET SQL_MODE=STRICT_ALL_TABLES;
|
||||||
|
SET @@global.max_binlog_cache_size=-1;
|
||||||
|
ERROR 42000: Variable 'max_binlog_cache_size' can't be set to the value of '-1'
|
||||||
|
SET @@global.max_join_size=0;
|
||||||
|
ERROR 42000: Variable 'max_join_size' can't be set to the value of '0'
|
||||||
|
SET @@global.key_buffer_size=0;
|
||||||
|
ERROR HY000: Cannot drop default keycache
|
||||||
|
SET @@global.key_cache_block_size=0;
|
||||||
|
ERROR 42000: Variable 'key_cache_block_size' can't be set to the value of '0'
|
||||||
|
throw warnings in default mode
|
||||||
|
SET SQL_MODE=DEFAULT;
|
||||||
|
SET @@global.max_binlog_cache_size=-1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_binlog_cache_size value: '-1'
|
||||||
|
SET @@global.max_join_size=0;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_join_size value: '0'
|
||||||
|
SET @@global.key_buffer_size=0;
|
||||||
|
ERROR HY000: Cannot drop default keycache
|
||||||
|
SET @@global.key_cache_block_size=0;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect key_cache_block_size value: '0'
|
||||||
|
SET @@global.max_binlog_cache_size=DEFAULT;
|
||||||
|
SET @@global.max_join_size=DEFAULT;
|
||||||
|
SET @@global.key_buffer_size=@kbs;
|
||||||
|
SET @@global.key_cache_block_size=@kcbs;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -840,6 +840,8 @@ show table status;
|
|||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
t1 MyISAM 10 Fixed 0 0 0 # 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
t1 MyISAM 10 Fixed 0 0 0 # 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||||
v1 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL View 'test.v1' references invalid table(s) or column(s) or function(s) or define
|
v1 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL View 'test.v1' references invalid table(s) or column(s) or function(s) or define
|
||||||
|
Warnings:
|
||||||
|
Warning 1356 View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create view v1 as select 99999999999999999999999999999999999999999999999999999 as col1;
|
create view v1 as select 99999999999999999999999999999999999999999999999999999 as col1;
|
||||||
|
@ -1093,4 +1093,11 @@ Warnings:
|
|||||||
Warning 1525 Incorrect XML value: 'parse error at line 1 pos 23: unexpected END-OF-INPUT'
|
Warning 1525 Incorrect XML value: 'parse error at line 1 pos 23: unexpected END-OF-INPUT'
|
||||||
Warning 1525 Incorrect XML value: 'parse error at line 1 pos 23: unexpected END-OF-INPUT'
|
Warning 1525 Incorrect XML value: 'parse error at line 1 pos 23: unexpected END-OF-INPUT'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#57279 updatexml dies with: Assertion failed: str_arg[length] == 0
|
||||||
|
#
|
||||||
|
SELECT UPDATEXML(NULL, (LPAD(0.1111E-15, '2011', 1)), 1);
|
||||||
|
ERROR 22007: Illegal double '111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111' value found during parsing
|
||||||
|
SELECT EXTRACTVALUE('', LPAD(0.1111E-15, '2011', 1));
|
||||||
|
ERROR 22007: Illegal double '111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111' value found during parsing
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1330,3 +1330,62 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
# # Write_rows 1 # table_id: # flags: STMT_END_F
|
# # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||||
# # Query 1 # COMMIT
|
# # Query 1 # COMMIT
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# BUG#54903 BINLOG statement toggles session variables
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# This test verify that BINLOG statement doesn't change current session's
|
||||||
|
# variables foreign_key_checks and unique_checks.
|
||||||
|
|
||||||
|
CREATE TABLE t1 (c1 INT KEY);
|
||||||
|
SET @@SESSION.foreign_key_checks= ON;
|
||||||
|
SET @@SESSION.unique_checks= ON;
|
||||||
|
# INSERT INTO t1 VALUES (1)
|
||||||
|
# foreign_key_checks=0 and unique_checks=0
|
||||||
|
BINLOG '
|
||||||
|
dfLtTBMBAAAAKQAAANcAAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
dfLtTBcBAAAAIgAAAPkAAAAAABcAAAAAAAcAAf/+AQAAAA==
|
||||||
|
';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
# Their values should be ON
|
||||||
|
SHOW SESSION VARIABLES LIKE "%_checks";
|
||||||
|
Variable_name Value
|
||||||
|
foreign_key_checks ON
|
||||||
|
unique_checks ON
|
||||||
|
|
||||||
|
SET @@SESSION.foreign_key_checks= OFF;
|
||||||
|
SET @@SESSION.unique_checks= OFF;
|
||||||
|
# INSERT INTO t1 VALUES(2)
|
||||||
|
# foreign_key_checks=1 and unique_checks=1
|
||||||
|
BINLOG '
|
||||||
|
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
dfLtTBcBAAAAIgAAAM0BAAAAABcAAAAAAAEAAf/+AgAAAA==
|
||||||
|
';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
# Their values should be OFF
|
||||||
|
SHOW SESSION VARIABLES LIKE "%_checks";
|
||||||
|
Variable_name Value
|
||||||
|
foreign_key_checks OFF
|
||||||
|
unique_checks OFF
|
||||||
|
# INSERT INTO t1 VALUES(2)
|
||||||
|
# foreign_key_checks=1 and unique_checks=1
|
||||||
|
# It should not change current session's variables, even error happens
|
||||||
|
BINLOG '
|
||||||
|
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
dfLtTBcBAAAAIgAAAM0BAAAAABcAAAAAAAEAAf/+AgAAAA==
|
||||||
|
';
|
||||||
|
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
# Their values should be OFF
|
||||||
|
SHOW SESSION VARIABLES LIKE "%_checks";
|
||||||
|
Variable_name Value
|
||||||
|
foreign_key_checks OFF
|
||||||
|
unique_checks OFF
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -801,3 +801,62 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
# # Write_rows 1 # table_id: # flags: STMT_END_F
|
# # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||||
# # Query 1 # COMMIT
|
# # Query 1 # COMMIT
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# BUG#54903 BINLOG statement toggles session variables
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# This test verify that BINLOG statement doesn't change current session's
|
||||||
|
# variables foreign_key_checks and unique_checks.
|
||||||
|
|
||||||
|
CREATE TABLE t1 (c1 INT KEY);
|
||||||
|
SET @@SESSION.foreign_key_checks= ON;
|
||||||
|
SET @@SESSION.unique_checks= ON;
|
||||||
|
# INSERT INTO t1 VALUES (1)
|
||||||
|
# foreign_key_checks=0 and unique_checks=0
|
||||||
|
BINLOG '
|
||||||
|
dfLtTBMBAAAAKQAAANcAAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
dfLtTBcBAAAAIgAAAPkAAAAAABcAAAAAAAcAAf/+AQAAAA==
|
||||||
|
';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
# Their values should be ON
|
||||||
|
SHOW SESSION VARIABLES LIKE "%_checks";
|
||||||
|
Variable_name Value
|
||||||
|
foreign_key_checks ON
|
||||||
|
unique_checks ON
|
||||||
|
|
||||||
|
SET @@SESSION.foreign_key_checks= OFF;
|
||||||
|
SET @@SESSION.unique_checks= OFF;
|
||||||
|
# INSERT INTO t1 VALUES(2)
|
||||||
|
# foreign_key_checks=1 and unique_checks=1
|
||||||
|
BINLOG '
|
||||||
|
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
dfLtTBcBAAAAIgAAAM0BAAAAABcAAAAAAAEAAf/+AgAAAA==
|
||||||
|
';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
# Their values should be OFF
|
||||||
|
SHOW SESSION VARIABLES LIKE "%_checks";
|
||||||
|
Variable_name Value
|
||||||
|
foreign_key_checks OFF
|
||||||
|
unique_checks OFF
|
||||||
|
# INSERT INTO t1 VALUES(2)
|
||||||
|
# foreign_key_checks=1 and unique_checks=1
|
||||||
|
# It should not change current session's variables, even error happens
|
||||||
|
BINLOG '
|
||||||
|
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
|
||||||
|
dfLtTBcBAAAAIgAAAM0BAAAAABcAAAAAAAEAAf/+AgAAAA==
|
||||||
|
';
|
||||||
|
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
# Their values should be OFF
|
||||||
|
SHOW SESSION VARIABLES LIKE "%_checks";
|
||||||
|
Variable_name Value
|
||||||
|
foreign_key_checks OFF
|
||||||
|
unique_checks OFF
|
||||||
|
DROP TABLE t1;
|
||||||
|
67
mysql-test/suite/federated/federated_bug_35333.result
Normal file
67
mysql-test/suite/federated/federated_bug_35333.result
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#
|
||||||
|
# Bug 35333 "If a Federated table can't connect to the remote hose, can't retrieve metadata"
|
||||||
|
#
|
||||||
|
# Queries such as SHOW TABLE STATUS and SELECT * FROM INFORMATION_SCHEMA.TABLES fail
|
||||||
|
# when encountering a federated table that cannot connect to its remote table.
|
||||||
|
#
|
||||||
|
# The fix is to store the error text in the TABLE COMMENTS column of I_S.TABLES, clear
|
||||||
|
# the remote connection error and push a warning instead. This allows the SELECT operation
|
||||||
|
# to complete while still indicating a problem. This fix applies to any non-fatal system
|
||||||
|
# error that occurs during a query against I_S.TABLES.de
|
||||||
|
CREATE DATABASE federated;
|
||||||
|
CREATE DATABASE federated;
|
||||||
|
CREATE DATABASE IF NOT EXISTS realdb;
|
||||||
|
DROP TABLE IF EXISTS realdb.t0;
|
||||||
|
DROP TABLE IF EXISTS federated.t0;
|
||||||
|
#
|
||||||
|
# Create the base table to be referenced
|
||||||
|
#
|
||||||
|
CREATE TABLE realdb.t0 (a text, b text) ENGINE=MYISAM;
|
||||||
|
#
|
||||||
|
# Create a federated table with a bogus port number
|
||||||
|
#
|
||||||
|
CREATE TABLE federated.t0 (a text, b text) ENGINE=FEDERATED
|
||||||
|
CONNECTION='mysql://root@127.0.0.1:63333/realdb/t0';
|
||||||
|
#
|
||||||
|
# Trigger a federated system error during a INFORMATION_SCHEMA.TABLES query
|
||||||
|
#
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, TABLE_ROWS, DATA_LENGTH, TABLE_COMMENT
|
||||||
|
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'realdb' or TABLE_SCHEMA = 'federated';
|
||||||
|
TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE ROW_FORMAT TABLE_ROWS DATA_LENGTH TABLE_COMMENT
|
||||||
|
federated t0 BASE TABLE FEDERATED NULL 0 Unable to connect to foreign data source: Can't connect to MySQL server on '127.
|
||||||
|
realdb t0 BASE TABLE MyISAM Dynamic 0 0
|
||||||
|
Warnings:
|
||||||
|
Warning 1429 Unable to connect to foreign data source: Can't connect to MySQL server on '127.0.0.1' (socket errno)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1429 Unable to connect to foreign data source: Can't connect to MySQL server on '127.0.0.1' (socket errno)
|
||||||
|
#
|
||||||
|
# Create a MyISAM table then corrupt the file
|
||||||
|
#
|
||||||
|
USE realdb;
|
||||||
|
CREATE TABLE t1 (c1 int) ENGINE=MYISAM;
|
||||||
|
#
|
||||||
|
# Corrupt the MyISAM table by deleting the base file
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Trigger a MyISAM system error during an INFORMATION_SCHEMA.TABLES query
|
||||||
|
#
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, TABLE_ROWS, DATA_LENGTH, TABLE_COMMENT
|
||||||
|
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE ROW_FORMAT TABLE_ROWS DATA_LENGTH TABLE_COMMENT
|
||||||
|
realdb t1 BASE TABLE NULL NULL NULL NULL Can't find file: 't1' (errno: 2)
|
||||||
|
Warnings:
|
||||||
|
Warning 1017 Can't find file: 't1' (errno: 2)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1017 Can't find file: 't1' (errno: 2)
|
||||||
|
#
|
||||||
|
# Cleanup
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS realdb.t0;
|
||||||
|
DROP TABLE IF EXISTS federated.t0;
|
||||||
|
DROP DATABASE realdb;
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
DROP DATABASE federated;
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
DROP DATABASE federated;
|
74
mysql-test/suite/federated/federated_bug_35333.test
Normal file
74
mysql-test/suite/federated/federated_bug_35333.test
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
--echo #
|
||||||
|
--echo # Bug 35333 "If a Federated table can't connect to the remote hose, can't retrieve metadata"
|
||||||
|
--echo #
|
||||||
|
--echo # Queries such as SHOW TABLE STATUS and SELECT * FROM INFORMATION_SCHEMA.TABLES fail
|
||||||
|
--echo # when encountering a federated table that cannot connect to its remote table.
|
||||||
|
--echo #
|
||||||
|
--echo # The fix is to store the error text in the TABLE COMMENTS column of I_S.TABLES, clear
|
||||||
|
--echo # the remote connection error and push a warning instead. This allows the SELECT operation
|
||||||
|
--echo # to complete while still indicating a problem. This fix applies to any non-fatal system
|
||||||
|
--echo # error that occurs during a query against I_S.TABLES.de
|
||||||
|
|
||||||
|
--source federated.inc
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
CREATE DATABASE IF NOT EXISTS realdb;
|
||||||
|
# Federated database exists
|
||||||
|
DROP TABLE IF EXISTS realdb.t0;
|
||||||
|
DROP TABLE IF EXISTS federated.t0;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Create the base table to be referenced
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE realdb.t0 (a text, b text) ENGINE=MYISAM;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Create a federated table with a bogus port number
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE federated.t0 (a text, b text) ENGINE=FEDERATED
|
||||||
|
CONNECTION='mysql://root@127.0.0.1:63333/realdb/t0';
|
||||||
|
|
||||||
|
#--warning ER_CONNECT_TO_FOREIGN_DATA_SOURCE
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Trigger a federated system error during a INFORMATION_SCHEMA.TABLES query
|
||||||
|
--echo #
|
||||||
|
# Remove O/S-specific socket error
|
||||||
|
--replace_regex /\(.*\)/(socket errno)/
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, TABLE_ROWS, DATA_LENGTH, TABLE_COMMENT
|
||||||
|
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'realdb' or TABLE_SCHEMA = 'federated';
|
||||||
|
|
||||||
|
# Remove O/S-specific socket error
|
||||||
|
--replace_regex /\(.*\)/(socket errno)/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Create a MyISAM table then corrupt the file
|
||||||
|
--echo #
|
||||||
|
USE realdb;
|
||||||
|
CREATE TABLE t1 (c1 int) ENGINE=MYISAM;
|
||||||
|
--echo #
|
||||||
|
--echo # Corrupt the MyISAM table by deleting the base file
|
||||||
|
--echo #
|
||||||
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
|
--remove_file $MYSQLD_DATADIR/realdb/t1.MYD
|
||||||
|
--remove_file $MYSQLD_DATADIR/realdb/t1.MYI
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Trigger a MyISAM system error during an INFORMATION_SCHEMA.TABLES query
|
||||||
|
--echo #
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, TABLE_ROWS, DATA_LENGTH, TABLE_COMMENT
|
||||||
|
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--echo #
|
||||||
|
--echo # Cleanup
|
||||||
|
--echo #
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS realdb.t0;
|
||||||
|
DROP TABLE IF EXISTS federated.t0;
|
||||||
|
DROP DATABASE realdb;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
--source federated_cleanup.inc
|
@ -2599,6 +2599,46 @@ rows 3
|
|||||||
Extra Using index
|
Extra Using index
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# Bug#56862 Execution of a query that uses index merge returns a wrong result
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
INDEX idx(a))
|
||||||
|
ENGINE=INNODB;
|
||||||
|
INSERT INTO t1(a,b) VALUES
|
||||||
|
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
||||||
|
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
||||||
|
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
||||||
|
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
||||||
|
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1 VALUES (1000000, 0, 0);
|
||||||
|
SET SESSION sort_buffer_size = 1024*36;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
|
2 DERIVED t1 index_merge PRIMARY,idx idx,PRIMARY 5,4 NULL 3537 Using sort_union(idx,PRIMARY); Using where
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
COUNT(*)
|
||||||
|
1537
|
||||||
|
SET SESSION sort_buffer_size = DEFAULT;
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Test for bug #39932 "create table fails if column for FK is in different
|
# Test for bug #39932 "create table fails if column for FK is in different
|
||||||
|
@ -824,6 +824,48 @@ CREATE INDEX b ON t1(a,b,c,d);
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
--echo # Bug#56862 Execution of a query that uses index merge returns a wrong result
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
INDEX idx(a))
|
||||||
|
ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO t1(a,b) VALUES
|
||||||
|
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
||||||
|
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
||||||
|
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
||||||
|
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
||||||
|
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1 VALUES (1000000, 0, 0);
|
||||||
|
|
||||||
|
SET SESSION sort_buffer_size = 1024*36;
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
|
||||||
|
SET SESSION sort_buffer_size = DEFAULT;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
854
mysql-test/suite/innodb_plugin/r/innodb-create-options.result
Executable file
854
mysql-test/suite/innodb_plugin/r/innodb-create-options.result
Executable file
@ -0,0 +1,854 @@
|
|||||||
|
SET storage_engine=InnoDB;
|
||||||
|
SET GLOBAL innodb_file_format=`Barracuda`;
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
SET SESSION innodb_strict_mode = ON;
|
||||||
|
# Test 1) StrictMode=ON, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0
|
||||||
|
# KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified'
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
# 'FIXED' is sent to InnoDB since it is used by MyISAM.
|
||||||
|
# But it is an invalid mode in InnoDB
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: invalid ROW_FORMAT specifier.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: invalid ROW_FORMAT specifier.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact
|
||||||
|
# Test 2) StrictMode=ON, CREATE with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE
|
||||||
|
# KEY_BLOCK_SIZE is incompatible with COMPACT, REDUNDANT, & DYNAMIC
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=8
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=8
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed KEY_BLOCK_SIZE=16
|
||||||
|
# Test 3) StrictMode=ON, ALTER with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: invalid ROW_FORMAT specifier.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=1
|
||||||
|
# Test 4) StrictMode=ON, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid non-zero KEY_BLOCK_SIZE
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=2;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=4;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=8;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=16
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed KEY_BLOCK_SIZE=1
|
||||||
|
# Test 5) StrictMode=ON, CREATE with a valid KEY_BLOCK_SIZE
|
||||||
|
# ALTER with each ROW_FORMAT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=2;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`i` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=2
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`i` int(11) DEFAULT NULL,
|
||||||
|
`f1` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=2
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=2
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT
|
||||||
|
# Test 6) StrictMode=ON, CREATE with an invalid KEY_BLOCK_SIZE.
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=9;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 16]
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
# Test 7) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and
|
||||||
|
# and a valid non-zero KEY_BLOCK_SIZE are rejected with Antelope
|
||||||
|
# and that they can be set to default values during strict mode.
|
||||||
|
SET GLOBAL innodb_file_format=Antelope;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=4;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=8;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SET GLOBAL innodb_file_format=Barracuda;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||||
|
SET GLOBAL innodb_file_format=Antelope;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SET GLOBAL innodb_file_format=Barracuda;
|
||||||
|
# Test 8) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and
|
||||||
|
# and a valid non-zero KEY_BLOCK_SIZE are rejected with
|
||||||
|
# innodb_file_per_table=OFF and that they can be set to default
|
||||||
|
# values during strict mode.
|
||||||
|
SET GLOBAL innodb_file_per_table=OFF;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
|
||||||
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
||||||
|
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=1;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||||
|
SET GLOBAL innodb_file_per_table=OFF;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table.
|
||||||
|
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
##################################################
|
||||||
|
SET SESSION innodb_strict_mode = OFF;
|
||||||
|
# Test 9) StrictMode=OFF, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0
|
||||||
|
# KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified'
|
||||||
|
# 'FIXED' is sent to InnoDB since it is used by MyISAM.
|
||||||
|
# It is an invalid mode in InnoDB, use COMPACT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=FIXED
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=FIXED
|
||||||
|
# Test 10) StrictMode=OFF, CREATE with each ROW_FORMAT & a valid KEY_BLOCK_SIZE
|
||||||
|
# KEY_BLOCK_SIZE is ignored with COMPACT, REDUNDANT, & DYNAMIC
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT KEY_BLOCK_SIZE=1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT KEY_BLOCK_SIZE=2
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC KEY_BLOCK_SIZE=4
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=8
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=8
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed KEY_BLOCK_SIZE=16
|
||||||
|
# Test 11) StrictMode=OFF, ALTER with each ROW_FORMAT & a valid KEY_BLOCK_SIZE
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=FIXED KEY_BLOCK_SIZE=1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT KEY_BLOCK_SIZE=2
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC KEY_BLOCK_SIZE=4
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=8 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=8 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT KEY_BLOCK_SIZE=8
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=1
|
||||||
|
# Test 12) StrictMode=OFF, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid KEY_BLOCK_SIZE
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=2;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT KEY_BLOCK_SIZE=2
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT KEY_BLOCK_SIZE=2
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC KEY_BLOCK_SIZE=2
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=2
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=4
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed KEY_BLOCK_SIZE=8
|
||||||
|
# Test 13) StrictMode=OFF, CREATE with a valid KEY_BLOCK_SIZE
|
||||||
|
# ALTER with each ROW_FORMAT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`i` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`i` int(11) DEFAULT NULL,
|
||||||
|
`f1` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Redundant row_format=REDUNDANT KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=16 unless ROW_FORMAT=COMPRESSED.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=16
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPACT
|
||||||
|
# Test 14) StrictMode=OFF, CREATE with an invalid KEY_BLOCK_SIZE, it defaults to 8
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=15;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=15.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=15.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact KEY_BLOCK_SIZE=15
|
||||||
|
# Test 15) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a
|
||||||
|
valid KEY_BLOCK_SIZE are remembered but not used when ROW_FORMAT
|
||||||
|
is reverted to Antelope and then used again when ROW_FORMAT=Barracuda.
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=1
|
||||||
|
SET GLOBAL innodb_file_format=Antelope;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1.
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1.
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPRESSED KEY_BLOCK_SIZE=1
|
||||||
|
SET GLOBAL innodb_file_format=Barracuda;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC
|
||||||
|
SET GLOBAL innodb_file_format=Antelope;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=DYNAMIC
|
||||||
|
SET GLOBAL innodb_file_format=Barracuda;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC
|
||||||
|
# Test 16) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a
|
||||||
|
valid KEY_BLOCK_SIZE are remembered but not used when innodb_file_per_table=OFF
|
||||||
|
and then used again when innodb_file_per_table=ON.
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=2
|
||||||
|
SET GLOBAL innodb_file_per_table=OFF;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2.
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||||
|
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=2.
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=COMPRESSED KEY_BLOCK_SIZE=2
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compressed row_format=COMPRESSED KEY_BLOCK_SIZE=2
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC
|
||||||
|
SET GLOBAL innodb_file_per_table=OFF;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
||||||
|
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Compact row_format=DYNAMIC
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||||
|
t1 Dynamic row_format=DYNAMIC
|
||||||
|
# Cleanup
|
||||||
|
DROP TABLE IF EXISTS t1;
|
@ -83,8 +83,6 @@ test t8 Compact
|
|||||||
test t9 Compact
|
test t9 Compact
|
||||||
drop table t0,t00,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14;
|
drop table t0,t00,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14;
|
||||||
alter table t1 key_block_size=0;
|
alter table t1 key_block_size=0;
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=0.
|
|
||||||
alter table t1 row_format=dynamic;
|
alter table t1 row_format=dynamic;
|
||||||
SELECT table_schema, table_name, row_format
|
SELECT table_schema, table_name, row_format
|
||||||
FROM information_schema.tables WHERE engine='innodb';
|
FROM information_schema.tables WHERE engine='innodb';
|
||||||
@ -190,16 +188,9 @@ set global innodb_file_per_table = on;
|
|||||||
set global innodb_file_format = `1`;
|
set global innodb_file_format = `1`;
|
||||||
set innodb_strict_mode = off;
|
set innodb_strict_mode = off;
|
||||||
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=0.
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set innodb_strict_mode = on;
|
set innodb_strict_mode = on;
|
||||||
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
||||||
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
|
||||||
show warnings;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 0. Valid values are [1, 2, 4, 8, 16]
|
|
||||||
Error 1005 Can't create table 'test.t1' (errno: 1478)
|
|
||||||
create table t2 (id int primary key) engine = innodb key_block_size = 9;
|
create table t2 (id int primary key) engine = innodb key_block_size = 9;
|
||||||
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t2' (errno: 1478)
|
||||||
show warnings;
|
show warnings;
|
||||||
@ -218,6 +209,7 @@ create table t11(id int primary key) engine = innodb row_format = redundant;
|
|||||||
SELECT table_schema, table_name, row_format
|
SELECT table_schema, table_name, row_format
|
||||||
FROM information_schema.tables WHERE engine='innodb';
|
FROM information_schema.tables WHERE engine='innodb';
|
||||||
table_schema table_name row_format
|
table_schema table_name row_format
|
||||||
|
test t1 Compact
|
||||||
test t10 Compact
|
test t10 Compact
|
||||||
test t11 Redundant
|
test t11 Redundant
|
||||||
test t3 Compressed
|
test t3 Compressed
|
||||||
@ -227,7 +219,7 @@ test t6 Compressed
|
|||||||
test t7 Compressed
|
test t7 Compressed
|
||||||
test t8 Compressed
|
test t8 Compressed
|
||||||
test t9 Dynamic
|
test t9 Dynamic
|
||||||
drop table t3, t4, t5, t6, t7, t8, t9, t10, t11;
|
drop table t1, t3, t4, t5, t6, t7, t8, t9, t10, t11;
|
||||||
create table t1 (id int primary key) engine = innodb
|
create table t1 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = compressed;
|
key_block_size = 8 row_format = compressed;
|
||||||
create table t2 (id int primary key) engine = innodb
|
create table t2 (id int primary key) engine = innodb
|
||||||
@ -253,16 +245,12 @@ Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
|||||||
Error 1005 Can't create table 'test.t4' (errno: 1478)
|
Error 1005 Can't create table 'test.t4' (errno: 1478)
|
||||||
create table t5 (id int primary key) engine = innodb
|
create table t5 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = default;
|
key_block_size = 8 row_format = default;
|
||||||
ERROR HY000: Can't create table 'test.t5' (errno: 1478)
|
|
||||||
show warnings;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
|
||||||
Error 1005 Can't create table 'test.t5' (errno: 1478)
|
|
||||||
SELECT table_schema, table_name, row_format
|
SELECT table_schema, table_name, row_format
|
||||||
FROM information_schema.tables WHERE engine='innodb';
|
FROM information_schema.tables WHERE engine='innodb';
|
||||||
table_schema table_name row_format
|
table_schema table_name row_format
|
||||||
test t1 Compressed
|
test t1 Compressed
|
||||||
drop table t1;
|
test t5 Compressed
|
||||||
|
drop table t1, t5;
|
||||||
create table t1 (id int primary key) engine = innodb
|
create table t1 (id int primary key) engine = innodb
|
||||||
key_block_size = 9 row_format = redundant;
|
key_block_size = 9 row_format = redundant;
|
||||||
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
ERROR HY000: Can't create table 'test.t1' (errno: 1478)
|
||||||
|
27
mysql-test/suite/innodb_plugin/r/innodb_bug53046.result
Normal file
27
mysql-test/suite/innodb_plugin/r/innodb_bug53046.result
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
CREATE TABLE bug53046_1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
|
||||||
|
CREATE TABLE bug53046_2 (c2 INT PRIMARY KEY,
|
||||||
|
FOREIGN KEY (c2) REFERENCES bug53046_1(c1)
|
||||||
|
ON UPDATE CASCADE ON DELETE CASCADE) ENGINE=INNODB;
|
||||||
|
INSERT INTO bug53046_1 VALUES (1);
|
||||||
|
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||||
|
FROM bug53046_1;
|
||||||
|
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||||
|
FROM bug53046_1;
|
||||||
|
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||||
|
FROM bug53046_1;
|
||||||
|
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||||
|
FROM bug53046_1;
|
||||||
|
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||||
|
FROM bug53046_1;
|
||||||
|
INSERT INTO bug53046_2 VALUES (1), (2);
|
||||||
|
ANALYZE TABLE bug53046_1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.bug53046_1 analyze status OK
|
||||||
|
SHOW TABLE STATUS LIKE 'bug53046_1';
|
||||||
|
UPDATE bug53046_1 SET c1 = c1 - 1;
|
||||||
|
DELETE FROM bug53046_1;
|
||||||
|
INSERT INTO bug53046_1 VALUES (1);
|
||||||
|
INSERT INTO bug53046_2 VALUES (1);
|
||||||
|
TRUNCATE TABLE bug53046_2;
|
||||||
|
DROP TABLE bug53046_2;
|
||||||
|
DROP TABLE bug53046_1;
|
@ -1,91 +0,0 @@
|
|||||||
SET GLOBAL innodb_file_format='Barracuda';
|
|
||||||
SET GLOBAL innodb_file_per_table=ON;
|
|
||||||
SET innodb_strict_mode=ON;
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug54679 Compressed row_format=COMPRESSED
|
|
||||||
ALTER TABLE bug54679 ADD COLUMN b INT;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug54679 Compressed row_format=COMPRESSED
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug54679 Compact
|
|
||||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=1;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug54679 Compressed KEY_BLOCK_SIZE=1
|
|
||||||
ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT;
|
|
||||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
|
||||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug54679 Redundant row_format=REDUNDANT
|
|
||||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=2;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug54679 Compressed row_format=REDUNDANT KEY_BLOCK_SIZE=2
|
|
||||||
SET GLOBAL innodb_file_format=Antelope;
|
|
||||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
|
|
||||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
|
||||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
|
|
||||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
|
||||||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
|
||||||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
|
||||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
|
||||||
ERROR HY000: Can't create table 'test.bug54679' (errno: 1478)
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
|
||||||
Error 1005 Can't create table 'test.bug54679' (errno: 1478)
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
|
|
||||||
SET GLOBAL innodb_file_format=Barracuda;
|
|
||||||
SET GLOBAL innodb_file_per_table=OFF;
|
|
||||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
|
|
||||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
|
||||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
|
|
||||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
|
||||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
|
||||||
ERROR HY000: Can't create table 'test.bug54679' (errno: 1478)
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
|
||||||
Error 1005 Can't create table 'test.bug54679' (errno: 1478)
|
|
||||||
SET GLOBAL innodb_file_per_table=ON;
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
SET GLOBAL innodb_file_format=Antelope;
|
|
||||||
SET GLOBAL innodb_file_format_check=Antelope;
|
|
||||||
SET GLOBAL innodb_file_per_table=0;
|
|
@ -1,294 +0,0 @@
|
|||||||
SET storage_engine=InnoDB;
|
|
||||||
SET GLOBAL innodb_file_format=`Barracuda`;
|
|
||||||
SET GLOBAL innodb_file_per_table=ON;
|
|
||||||
SET SESSION innodb_strict_mode = ON;
|
|
||||||
# Test 1) CREATE with ROW_FORMAT & KEY_BLOCK_SIZE, ALTER with neither
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
Warnings:
|
|
||||||
Note 1051 Unknown table 'bug56632'
|
|
||||||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
|
||||||
ERROR HY000: Can't create table 'test.bug56632' (errno: 1478)
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = COMPACT with KEY_BLOCK_SIZE.
|
|
||||||
Error 1005 Can't create table 'test.bug56632' (errno: 1478)
|
|
||||||
# Test 2) CREATE with ROW_FORMAT, ALTER with KEY_BLOCK_SIZE
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
Warnings:
|
|
||||||
Note 1051 Unknown table 'bug56632'
|
|
||||||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact row_format=COMPACT
|
|
||||||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compressed row_format=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
# Test 3) CREATE with KEY_BLOCK_SIZE, ALTER with ROW_FORMAT
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compressed KEY_BLOCK_SIZE=1
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compressed KEY_BLOCK_SIZE=1
|
|
||||||
# Test 4) CREATE with neither, ALTER with ROW_FORMAT & KEY_BLOCK_SIZE
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT );
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact
|
|
||||||
# Test 5) CREATE with KEY_BLOCK_SIZE=3 (invalid).
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3;
|
|
||||||
ERROR HY000: Can't create table 'test.bug56632' (errno: 1478)
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 3. Valid values are [1, 2, 4, 8, 16]
|
|
||||||
Error 1005 Can't create table 'test.bug56632' (errno: 1478)
|
|
||||||
SET SESSION innodb_strict_mode = OFF;
|
|
||||||
# Test 6) CREATE with ROW_FORMAT & KEY_BLOCK_SIZE, ALTER with neither
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
Warnings:
|
|
||||||
Note 1051 Unknown table 'bug56632'
|
|
||||||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
ALTER TABLE bug56632 ADD COLUMN f1 INT;
|
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL,
|
|
||||||
`f1` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
# Test 7) CREATE with ROW_FORMAT, ALTER with KEY_BLOCK_SIZE
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact row_format=COMPACT
|
|
||||||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compressed row_format=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
# Test 8) CREATE with KEY_BLOCK_SIZE, ALTER with ROW_FORMAT
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compressed KEY_BLOCK_SIZE=1
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT;
|
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
# Test 9) CREATE with neither, ALTER with ROW_FORMAT & KEY_BLOCK_SIZE
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT );
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=1
|
|
||||||
# Test 10) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with neither.
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3;
|
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=3
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact KEY_BLOCK_SIZE=3
|
|
||||||
ALTER TABLE bug56632 ADD COLUMN f1 INT;
|
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL,
|
|
||||||
`f1` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=3
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact KEY_BLOCK_SIZE=3
|
|
||||||
# Test 11) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with ROW_FORMAT=COMPACT.
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3;
|
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=3
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact KEY_BLOCK_SIZE=3
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT;
|
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=3
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact row_format=COMPACT KEY_BLOCK_SIZE=3
|
|
||||||
# Test 12) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with KEY_BLOCK_SIZE=1.
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3;
|
|
||||||
Warnings:
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=3.
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=3
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compact KEY_BLOCK_SIZE=3
|
|
||||||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
Level Code Message
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
Table Create Table
|
|
||||||
bug56632 CREATE TABLE `bug56632` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=1
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
|
||||||
bug56632 Compressed KEY_BLOCK_SIZE=1
|
|
||||||
# Cleanup
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
6
mysql-test/suite/innodb_plugin/r/innodb_bug56947.result
Normal file
6
mysql-test/suite/innodb_plugin/r/innodb_bug56947.result
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
create table bug56947(a int not null) engine = innodb;
|
||||||
|
CREATE TABLE `bug56947#1`(a int) ENGINE=InnoDB;
|
||||||
|
alter table bug56947 add unique index (a);
|
||||||
|
ERROR HY000: Table 'test.bug56947#1' already exists
|
||||||
|
drop table `bug56947#1`;
|
||||||
|
drop table bug56947;
|
@ -2400,4 +2400,42 @@ PACK_KEYS=0;
|
|||||||
CREATE INDEX a ON t1 (a);
|
CREATE INDEX a ON t1 (a);
|
||||||
CREATE INDEX c on t1 (c);
|
CREATE INDEX c on t1 (c);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
INDEX idx(a))
|
||||||
|
ENGINE=INNODB;
|
||||||
|
INSERT INTO t1(a,b) VALUES
|
||||||
|
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
||||||
|
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
||||||
|
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
||||||
|
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
||||||
|
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1 VALUES (1000000, 0, 0);
|
||||||
|
SET SESSION sort_buffer_size = 1024*36;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
|
2 DERIVED t1 index_merge PRIMARY,idx idx,PRIMARY 5,4 NULL 3537 Using sort_union(idx,PRIMARY); Using where
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
COUNT(*)
|
||||||
|
1537
|
||||||
|
SET SESSION sort_buffer_size = DEFAULT;
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
575
mysql-test/suite/innodb_plugin/t/innodb-create-options.test
Executable file
575
mysql-test/suite/innodb_plugin/t/innodb-create-options.test
Executable file
@ -0,0 +1,575 @@
|
|||||||
|
# Tests for various combinations of ROW_FORMAT and KEY_BLOCK_SIZE
|
||||||
|
# Related bugs;
|
||||||
|
# Bug#54679: ALTER TABLE causes compressed row_format to revert to compact
|
||||||
|
# Bug#56628: ALTER TABLE .. KEY_BLOCK_SIZE=0 produces untrue warning or unnecessary error
|
||||||
|
# Bug#56632: ALTER TABLE implicitly changes ROW_FORMAT to COMPRESSED
|
||||||
|
# Rules for interpreting CREATE_OPTIONS
|
||||||
|
# 1) Create options on an ALTER are added to the options on the
|
||||||
|
# previous CREATE or ALTER statements.
|
||||||
|
# 2) KEY_BLOCK_SIZE=0 is considered a unspecified value.
|
||||||
|
# If the current ROW_FORMAT has explicitly been set to COMPRESSED,
|
||||||
|
# InnoDB will use a default value of 8. Otherwise KEY_BLOCK_SIZE
|
||||||
|
# will not be used.
|
||||||
|
# 3) ROW_FORMAT=DEFAULT allows InnoDB to choose its own default, COMPACT.
|
||||||
|
# 4) ROW_FORMAT=DEFAULT and KEY_BLOCK_SIZE=0 can be used at any time to
|
||||||
|
# unset or erase the values persisted in the MySQL dictionary and
|
||||||
|
# by SHOW CTREATE TABLE.
|
||||||
|
# 5) When incompatible values for ROW_FORMAT and KEY_BLOCK_SIZE are
|
||||||
|
# both explicitly given, the ROW_FORMAT is always used in non-strict
|
||||||
|
# mode.
|
||||||
|
# 6) InnoDB will automatically convert a table to COMPRESSED only if a
|
||||||
|
# valid non-zero KEY_BLOCK_SIZE has been given and ROW_FORMAT=DEFAULT
|
||||||
|
# or has not been used on a previous CREATE TABLE or ALTER TABLE.
|
||||||
|
# 7) InnoDB strict mode is designed to prevent incompatible create
|
||||||
|
# options from being used together.
|
||||||
|
# 8) The non-strict behavior is intended to permit you to import a
|
||||||
|
# mysqldump file into a database that does not support compressed
|
||||||
|
# tables, even if the source database contained compressed tables.
|
||||||
|
# All invalid values and/or incompatible combinations of ROW_FORMAT
|
||||||
|
# and KEY_BLOCK_SIZE are automatically corrected
|
||||||
|
#
|
||||||
|
# *** innodb_strict_mode=ON ***
|
||||||
|
# 1) Valid ROW_FORMATs are COMPRESSED, COMPACT, DEFAULT, DYNAMIC
|
||||||
|
# & REDUNDANT. All others are rejected.
|
||||||
|
# 2) Valid KEY_BLOCK_SIZEs are 0,1,2,4,8,16. All others are rejected.
|
||||||
|
# 3) KEY_BLOCK_SIZE=0 can be used to set it to 'unspecified'.
|
||||||
|
# 4) KEY_BLOCK_SIZE=1,2,4,8 & 16 are incompatible with COMPACT, DYNAMIC &
|
||||||
|
# REDUNDANT.
|
||||||
|
# 5) KEY_BLOCK_SIZE=1,2,4,8 & 16 as well as ROW_FORMAT=COMPRESSED and
|
||||||
|
# ROW_FORMAT=DYNAMIC are incompatible with innodb_file_format=Antelope
|
||||||
|
# and innodb_file_per_table=OFF
|
||||||
|
# 6) KEY_BLOCK_SIZE on an ALTER must occur with ROW_FORMAT=COMPRESSED
|
||||||
|
# or ROW_FORMAT=DEFAULT if the ROW_FORMAT was previously specified
|
||||||
|
# as COMPACT, DYNAMIC or REDUNDANT.
|
||||||
|
# 7) KEY_BLOCK_SIZE on an ALTER can occur without a ROW_FORMAT if the
|
||||||
|
# previous ROW_FORMAT was DEFAULT, COMPRESSED, or unspecified.
|
||||||
|
#
|
||||||
|
# *** innodb_strict_mode=OFF ***
|
||||||
|
# 1. Ignore a bad KEY_BLOCK_SIZE, defaulting it to 8.
|
||||||
|
# 2. Ignore a bad ROW_FORMAT, defaulting to COMPACT.
|
||||||
|
# 3. Ignore a valid KEY_BLOCK_SIZE when an incompatible but valid
|
||||||
|
# ROW_FORMAT is specified.
|
||||||
|
# 4. If innodb_file_format=Antelope or innodb_file_per_table=OFF
|
||||||
|
# it will ignore ROW_FORMAT=COMPRESSED or DYNAMIC and it will
|
||||||
|
# ignore all non-zero KEY_BLOCK_SIZEs.
|
||||||
|
#
|
||||||
|
# See InnoDB documentation page "SQL Compression Syntax Warnings and Errors"
|
||||||
|
|
||||||
|
-- source include/have_innodb_plugin.inc
|
||||||
|
SET storage_engine=InnoDB;
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
# These values can change during the test
|
||||||
|
LET $innodb_file_format_orig=`select @@innodb_file_format`;
|
||||||
|
LET $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
|
||||||
|
LET $innodb_file_per_table_orig=`select @@innodb_file_per_table`;
|
||||||
|
LET $innodb_strict_mode_orig=`select @@session.innodb_strict_mode`;
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
SET GLOBAL innodb_file_format=`Barracuda`;
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
|
||||||
|
# The first half of these tests are with strict mode ON.
|
||||||
|
SET SESSION innodb_strict_mode = ON;
|
||||||
|
|
||||||
|
--echo # Test 1) StrictMode=ON, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0
|
||||||
|
--echo # KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified'
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--echo # 'FIXED' is sent to InnoDB since it is used by MyISAM.
|
||||||
|
--echo # But it is an invalid mode in InnoDB
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--echo # Test 2) StrictMode=ON, CREATE with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE
|
||||||
|
--echo # KEY_BLOCK_SIZE is incompatible with COMPACT, REDUNDANT, & DYNAMIC
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
|
||||||
|
--echo # Test 3) StrictMode=ON, ALTER with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
|
||||||
|
--echo # Test 4) StrictMode=ON, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid non-zero KEY_BLOCK_SIZE
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=2;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=4;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=8;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
--echo # Test 5) StrictMode=ON, CREATE with a valid KEY_BLOCK_SIZE
|
||||||
|
--echo # ALTER with each ROW_FORMAT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=2;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
--echo # Test 6) StrictMode=ON, CREATE with an invalid KEY_BLOCK_SIZE.
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=9;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
|
||||||
|
--echo # Test 7) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and
|
||||||
|
--echo # and a valid non-zero KEY_BLOCK_SIZE are rejected with Antelope
|
||||||
|
--echo # and that they can be set to default values during strict mode.
|
||||||
|
SET GLOBAL innodb_file_format=Antelope;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=8;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SET GLOBAL innodb_file_format=Barracuda;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||||
|
SET GLOBAL innodb_file_format=Antelope;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SET GLOBAL innodb_file_format=Barracuda;
|
||||||
|
|
||||||
|
--echo # Test 8) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and
|
||||||
|
--echo # and a valid non-zero KEY_BLOCK_SIZE are rejected with
|
||||||
|
--echo # innodb_file_per_table=OFF and that they can be set to default
|
||||||
|
--echo # values during strict mode.
|
||||||
|
SET GLOBAL innodb_file_per_table=OFF;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=1;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||||
|
SET GLOBAL innodb_file_per_table=OFF;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
|
||||||
|
--echo ##################################################
|
||||||
|
SET SESSION innodb_strict_mode = OFF;
|
||||||
|
|
||||||
|
--echo # Test 9) StrictMode=OFF, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0
|
||||||
|
--echo # KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified'
|
||||||
|
--echo # 'FIXED' is sent to InnoDB since it is used by MyISAM.
|
||||||
|
--echo # It is an invalid mode in InnoDB, use COMPACT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
--echo # Test 10) StrictMode=OFF, CREATE with each ROW_FORMAT & a valid KEY_BLOCK_SIZE
|
||||||
|
--echo # KEY_BLOCK_SIZE is ignored with COMPACT, REDUNDANT, & DYNAMIC
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
|
||||||
|
--echo # Test 11) StrictMode=OFF, ALTER with each ROW_FORMAT & a valid KEY_BLOCK_SIZE
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
|
||||||
|
--echo # Test 12) StrictMode=OFF, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid KEY_BLOCK_SIZE
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 KEY_BLOCK_SIZE=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
--echo # Test 13) StrictMode=OFF, CREATE with a valid KEY_BLOCK_SIZE
|
||||||
|
--echo # ALTER with each ROW_FORMAT
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
ALTER TABLE t1 ROW_FORMAT=COMPACT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
--echo # Test 14) StrictMode=OFF, CREATE with an invalid KEY_BLOCK_SIZE, it defaults to 8
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=15;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
--echo # Test 15) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a
|
||||||
|
--echo valid KEY_BLOCK_SIZE are remembered but not used when ROW_FORMAT
|
||||||
|
--echo is reverted to Antelope and then used again when ROW_FORMAT=Barracuda.
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
SET GLOBAL innodb_file_format=Antelope;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
SET GLOBAL innodb_file_format=Barracuda;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
SET GLOBAL innodb_file_format=Antelope;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
SET GLOBAL innodb_file_format=Barracuda;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
--echo # Test 16) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a
|
||||||
|
--echo valid KEY_BLOCK_SIZE are remembered but not used when innodb_file_per_table=OFF
|
||||||
|
--echo and then used again when innodb_file_per_table=ON.
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
SET GLOBAL innodb_file_per_table=OFF;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
SET GLOBAL innodb_file_per_table=OFF;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f1 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
SET GLOBAL innodb_file_per_table=ON;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INT;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
|
||||||
|
|
||||||
|
|
||||||
|
--echo # Cleanup
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
EVAL SET GLOBAL innodb_file_format=$innodb_file_format_orig;
|
||||||
|
EVAL SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
|
||||||
|
EVAL SET GLOBAL innodb_file_per_table=$innodb_file_per_table_orig;
|
||||||
|
EVAL SET SESSION innodb_strict_mode=$innodb_strict_mode_orig;
|
||||||
|
--enable_query_log
|
||||||
|
|
@ -173,9 +173,7 @@ set innodb_strict_mode = on;
|
|||||||
|
|
||||||
#Test different values of KEY_BLOCK_SIZE
|
#Test different values of KEY_BLOCK_SIZE
|
||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
create table t1 (id int primary key) engine = innodb key_block_size = 0;
|
||||||
show warnings;
|
|
||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create table t2 (id int primary key) engine = innodb key_block_size = 9;
|
create table t2 (id int primary key) engine = innodb key_block_size = 9;
|
||||||
@ -196,7 +194,7 @@ create table t11(id int primary key) engine = innodb row_format = redundant;
|
|||||||
|
|
||||||
SELECT table_schema, table_name, row_format
|
SELECT table_schema, table_name, row_format
|
||||||
FROM information_schema.tables WHERE engine='innodb';
|
FROM information_schema.tables WHERE engine='innodb';
|
||||||
drop table t3, t4, t5, t6, t7, t8, t9, t10, t11;
|
drop table t1, t3, t4, t5, t6, t7, t8, t9, t10, t11;
|
||||||
|
|
||||||
#test different values of ROW_FORMAT with KEY_BLOCK_SIZE
|
#test different values of ROW_FORMAT with KEY_BLOCK_SIZE
|
||||||
create table t1 (id int primary key) engine = innodb
|
create table t1 (id int primary key) engine = innodb
|
||||||
@ -217,14 +215,12 @@ create table t4 (id int primary key) engine = innodb
|
|||||||
key_block_size = 8 row_format = dynamic;
|
key_block_size = 8 row_format = dynamic;
|
||||||
show warnings;
|
show warnings;
|
||||||
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
create table t5 (id int primary key) engine = innodb
|
create table t5 (id int primary key) engine = innodb
|
||||||
key_block_size = 8 row_format = default;
|
key_block_size = 8 row_format = default;
|
||||||
show warnings;
|
|
||||||
|
|
||||||
SELECT table_schema, table_name, row_format
|
SELECT table_schema, table_name, row_format
|
||||||
FROM information_schema.tables WHERE engine='innodb';
|
FROM information_schema.tables WHERE engine='innodb';
|
||||||
drop table t1;
|
drop table t1, t5;
|
||||||
|
|
||||||
#test multiple errors
|
#test multiple errors
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
|
48
mysql-test/suite/innodb_plugin/t/innodb_bug53046.test
Normal file
48
mysql-test/suite/innodb_plugin/t/innodb_bug53046.test
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#
|
||||||
|
# http://bugs.mysql.com/53046
|
||||||
|
# dict_update_statistics_low can still be run concurrently on same table
|
||||||
|
#
|
||||||
|
# This is a symbolic test, it would not fail if the bug is present.
|
||||||
|
# Rather those SQL commands have been used during manual testing under
|
||||||
|
# UNIV_DEBUG & UNIV_SYNC_DEBUG to test all changed codepaths for locking
|
||||||
|
# correctness.
|
||||||
|
#
|
||||||
|
|
||||||
|
-- source include/have_innodb_plugin.inc
|
||||||
|
|
||||||
|
CREATE TABLE bug53046_1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
|
||||||
|
CREATE TABLE bug53046_2 (c2 INT PRIMARY KEY,
|
||||||
|
FOREIGN KEY (c2) REFERENCES bug53046_1(c1)
|
||||||
|
ON UPDATE CASCADE ON DELETE CASCADE) ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO bug53046_1 VALUES (1);
|
||||||
|
let $i = 5;
|
||||||
|
while ($i) {
|
||||||
|
eval INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||||
|
FROM bug53046_1;
|
||||||
|
dec $i;
|
||||||
|
}
|
||||||
|
|
||||||
|
INSERT INTO bug53046_2 VALUES (1), (2);
|
||||||
|
|
||||||
|
# CREATE TABLE innodb_table_monitor (a int) ENGINE=INNODB;
|
||||||
|
# wait more than 1 minute and observe the mysqld output
|
||||||
|
# DROP TABLE innodb_table_monitor;
|
||||||
|
|
||||||
|
ANALYZE TABLE bug53046_1;
|
||||||
|
|
||||||
|
# this prints create time and other nondeterministic data
|
||||||
|
-- disable_result_log
|
||||||
|
SHOW TABLE STATUS LIKE 'bug53046_1';
|
||||||
|
-- enable_result_log
|
||||||
|
|
||||||
|
UPDATE bug53046_1 SET c1 = c1 - 1;
|
||||||
|
|
||||||
|
DELETE FROM bug53046_1;
|
||||||
|
|
||||||
|
INSERT INTO bug53046_1 VALUES (1);
|
||||||
|
INSERT INTO bug53046_2 VALUES (1);
|
||||||
|
TRUNCATE TABLE bug53046_2;
|
||||||
|
|
||||||
|
DROP TABLE bug53046_2;
|
||||||
|
DROP TABLE bug53046_1;
|
@ -1,97 +0,0 @@
|
|||||||
# Test Bug #54679 alter table causes compressed row_format to revert to compact
|
|
||||||
|
|
||||||
--source include/have_innodb_plugin.inc
|
|
||||||
|
|
||||||
let $file_format=`select @@innodb_file_format`;
|
|
||||||
let $file_format_check=`select @@innodb_file_format_check`;
|
|
||||||
let $file_per_table=`select @@innodb_file_per_table`;
|
|
||||||
SET GLOBAL innodb_file_format='Barracuda';
|
|
||||||
SET GLOBAL innodb_file_per_table=ON;
|
|
||||||
SET innodb_strict_mode=ON;
|
|
||||||
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
|
|
||||||
# The ROW_FORMAT of the table should be preserved when it is not specified
|
|
||||||
# in ALTER TABLE.
|
|
||||||
ALTER TABLE bug54679 ADD COLUMN b INT;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
|
|
||||||
# Check that the ROW_FORMAT conversion to/from COMPRESSED works.
|
|
||||||
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
|
|
||||||
# KEY_BLOCK_SIZE implies COMPRESSED.
|
|
||||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=1;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
SHOW WARNINGS;
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
|
|
||||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=2;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
|
||||||
WHERE TABLE_NAME='bug54679';
|
|
||||||
|
|
||||||
# This prevents other than REDUNDANT or COMPACT ROW_FORMAT for new tables.
|
|
||||||
SET GLOBAL innodb_file_format=Antelope;
|
|
||||||
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
SHOW WARNINGS;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
SHOW WARNINGS;
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
SHOW WARNINGS;
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
|
|
||||||
|
|
||||||
SET GLOBAL innodb_file_format=Barracuda;
|
|
||||||
# This will prevent ROW_FORMAT=COMPRESSED, because the system tablespace
|
|
||||||
# cannot be compressed.
|
|
||||||
SET GLOBAL innodb_file_per_table=OFF;
|
|
||||||
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
SHOW WARNINGS;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
SHOW WARNINGS;
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
|
||||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SET GLOBAL innodb_file_per_table=ON;
|
|
||||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
|
||||||
DROP TABLE bug54679;
|
|
||||||
|
|
||||||
EVAL SET GLOBAL innodb_file_format=$file_format;
|
|
||||||
EVAL SET GLOBAL innodb_file_format_check=$file_format_check;
|
|
||||||
EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
|
|
@ -1,216 +0,0 @@
|
|||||||
#
|
|
||||||
# Bug#56632: ALTER TABLE implicitly changes ROW_FORMAT to COMPRESSED
|
|
||||||
# http://bugs.mysql.com/56632
|
|
||||||
#
|
|
||||||
# Innodb automatically uses compressed mode when the KEY_BLOCK_SIZE
|
|
||||||
# parameter is used, except if the ROW_FORMAT is also specified, in
|
|
||||||
# which case the KEY_BLOCK_SIZE is ignored and a warning is shown.
|
|
||||||
# But Innodb was getting confused when neither of those parameters
|
|
||||||
# was used on the ALTER statement after they were both used on the
|
|
||||||
# CREATE.
|
|
||||||
#
|
|
||||||
# This will test the results of all 4 combinations of these two
|
|
||||||
# parameters of the CREATE and ALTER.
|
|
||||||
#
|
|
||||||
# Tests 1-5 use INNODB_STRICT_MODE=1 which returns an error
|
|
||||||
# if there is anything wrong with the statement.
|
|
||||||
#
|
|
||||||
# 1) CREATE with ROW_FORMAT=COMPACT & KEY_BLOCK_SIZE=1, ALTER with neither.
|
|
||||||
# Result; CREATE; fails with error ER_CANT_CREATE_TABLE
|
|
||||||
# 2) CREATE with ROW_FORMAT=COMPACT, ALTER with KEY_BLOCK_SIZE=1
|
|
||||||
# Result; CREATE succeeds,
|
|
||||||
# ALTER quietly converts ROW_FORMAT to compressed.
|
|
||||||
# 3) CREATE with KEY_BLOCK_SIZE=1, ALTER with ROW_FORMAT=COMPACT
|
|
||||||
# Result; CREATE quietly converts ROW_FORMAT to compressed,
|
|
||||||
# ALTER fails with error ER_CANT_CREATE_TABLE.
|
|
||||||
# 4) CREATE with neither, ALTER with ROW_FORMAT=COMPACT & KEY_BLOCK_SIZE=1
|
|
||||||
# Result; CREATE succeeds,
|
|
||||||
# ALTER; fails with error ER_CANT_CREATE_TABLE
|
|
||||||
# 5) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with neither.
|
|
||||||
# Result; CREATE; fails with error ER_CANT_CREATE_TABLE
|
|
||||||
#
|
|
||||||
# Tests 6-11 use INNODB_STRICT_MODE=0 which automatically makes
|
|
||||||
# adjustments if the prameters are incompatible.
|
|
||||||
#
|
|
||||||
# 6) CREATE with ROW_FORMAT=COMPACT & KEY_BLOCK_SIZE=1, ALTER with neither.
|
|
||||||
# Result; CREATE succeeds, warns that KEY_BLOCK_SIZE is ignored.
|
|
||||||
# ALTER succeeds, no warnings.
|
|
||||||
# 7) CREATE with ROW_FORMAT=COMPACT, ALTER with KEY_BLOCK_SIZE=1
|
|
||||||
# Result; CREATE succeeds,
|
|
||||||
# ALTER quietly converts ROW_FORMAT to compressed.
|
|
||||||
# 8) CREATE with KEY_BLOCK_SIZE=1, ALTER with ROW_FORMAT=COMPACT
|
|
||||||
# Result; CREATE quietly converts ROW_FORMAT to compressed,
|
|
||||||
# ALTER succeeds, warns that KEY_BLOCK_SIZE is ignored.
|
|
||||||
# 9) CREATE with neither, ALTER with ROW_FORMAT=COMPACT & KEY_BLOCK_SIZE=1
|
|
||||||
# Result; CREATE succeeds,
|
|
||||||
# ALTER succeeds, warns that KEY_BLOCK_SIZE is ignored.
|
|
||||||
# 10) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with neither.
|
|
||||||
# Result; CREATE succeeds, warns that KEY_BLOCK_SIZE=3 is ignored.
|
|
||||||
# ALTER succeeds, warns that KEY_BLOCK_SIZE=3 is ignored.
|
|
||||||
# 11) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with ROW_FORMAT=COMPACT.
|
|
||||||
# Result; CREATE succeeds, warns that KEY_BLOCK_SIZE=3 is ignored.
|
|
||||||
# ALTER succeeds, warns that KEY_BLOCK_SIZE=3 is ignored.
|
|
||||||
# 12) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with KEY_BLOCK_SIZE=1.
|
|
||||||
# Result; CREATE succeeds, warns that KEY_BLOCK_SIZE=3 is ignored.
|
|
||||||
# ALTER succeeds, quietly converts ROW_FORMAT to compressed.
|
|
||||||
|
|
||||||
-- source include/have_innodb_plugin.inc
|
|
||||||
|
|
||||||
SET storage_engine=InnoDB;
|
|
||||||
|
|
||||||
--disable_query_log
|
|
||||||
# These values can change during the test
|
|
||||||
LET $innodb_file_format_orig=`select @@innodb_file_format`;
|
|
||||||
LET $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
|
|
||||||
LET $innodb_file_per_table_orig=`select @@innodb_file_per_table`;
|
|
||||||
LET $innodb_strict_mode_orig=`select @@session.innodb_strict_mode`;
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
SET GLOBAL innodb_file_format=`Barracuda`;
|
|
||||||
SET GLOBAL innodb_file_per_table=ON;
|
|
||||||
|
|
||||||
# Innodb strict mode will cause an error on the CREATE or ALTER when;
|
|
||||||
# 1. both ROW_FORMAT=COMPACT and KEY_BLOCK_SIZE=1,
|
|
||||||
# 2. KEY_BLOCK_SIZE is not a valid number (0,1,2,4,8,16).
|
|
||||||
# With innodb_strict_mode = OFF, These errors are corrected
|
|
||||||
# and just a warning is returned.
|
|
||||||
SET SESSION innodb_strict_mode = ON;
|
|
||||||
|
|
||||||
--echo # Test 1) CREATE with ROW_FORMAT & KEY_BLOCK_SIZE, ALTER with neither
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
|
|
||||||
--echo # Test 2) CREATE with ROW_FORMAT, ALTER with KEY_BLOCK_SIZE
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Test 3) CREATE with KEY_BLOCK_SIZE, ALTER with ROW_FORMAT
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
--disable_result_log
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT;
|
|
||||||
--enable_result_log
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Test 4) CREATE with neither, ALTER with ROW_FORMAT & KEY_BLOCK_SIZE
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT );
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
--disable_result_log
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
|
||||||
--enable_result_log
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Test 5) CREATE with KEY_BLOCK_SIZE=3 (invalid).
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
|
|
||||||
SET SESSION innodb_strict_mode = OFF;
|
|
||||||
|
|
||||||
--echo # Test 6) CREATE with ROW_FORMAT & KEY_BLOCK_SIZE, ALTER with neither
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
ALTER TABLE bug56632 ADD COLUMN f1 INT;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Test 7) CREATE with ROW_FORMAT, ALTER with KEY_BLOCK_SIZE
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) ROW_FORMAT=COMPACT;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Test 8) CREATE with KEY_BLOCK_SIZE, ALTER with ROW_FORMAT
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Test 9) CREATE with neither, ALTER with ROW_FORMAT & KEY_BLOCK_SIZE
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT );
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Test 10) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with neither.
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
ALTER TABLE bug56632 ADD COLUMN f1 INT;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Test 11) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with ROW_FORMAT=COMPACT.
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
ALTER TABLE bug56632 ROW_FORMAT=COMPACT;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Test 12) CREATE with KEY_BLOCK_SIZE=3 (invalid), ALTER with KEY_BLOCK_SIZE=1.
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
CREATE TABLE bug56632 ( i INT ) KEY_BLOCK_SIZE=3;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
ALTER TABLE bug56632 KEY_BLOCK_SIZE=1;
|
|
||||||
SHOW WARNINGS;
|
|
||||||
SHOW CREATE TABLE bug56632;
|
|
||||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 'bug56632';
|
|
||||||
|
|
||||||
--echo # Cleanup
|
|
||||||
DROP TABLE IF EXISTS bug56632;
|
|
||||||
|
|
||||||
--disable_query_log
|
|
||||||
EVAL SET GLOBAL innodb_file_per_table=$innodb_file_per_table_orig;
|
|
||||||
EVAL SET GLOBAL innodb_file_format=$innodb_file_format_orig;
|
|
||||||
EVAL SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
|
|
||||||
EVAL SET SESSION innodb_strict_mode=$innodb_strict_mode_orig;
|
|
||||||
--enable_query_log
|
|
||||||
|
|
11
mysql-test/suite/innodb_plugin/t/innodb_bug56947.test
Normal file
11
mysql-test/suite/innodb_plugin/t/innodb_bug56947.test
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#
|
||||||
|
# Bug #56947 valgrind reports a memory leak in innodb-plugin.innodb-index
|
||||||
|
#
|
||||||
|
-- source include/have_innodb_plugin.inc
|
||||||
|
|
||||||
|
create table bug56947(a int not null) engine = innodb;
|
||||||
|
CREATE TABLE `bug56947#1`(a int) ENGINE=InnoDB;
|
||||||
|
--error 156
|
||||||
|
alter table bug56947 add unique index (a);
|
||||||
|
drop table `bug56947#1`;
|
||||||
|
drop table bug56947;
|
@ -645,5 +645,48 @@ CREATE INDEX c on t1 (c);
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#56862 Execution of a query that uses index merge returns a wrong result
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
INDEX idx(a))
|
||||||
|
ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO t1(a,b) VALUES
|
||||||
|
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
||||||
|
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
||||||
|
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
||||||
|
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
||||||
|
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1 VALUES (1000000, 0, 0);
|
||||||
|
|
||||||
|
SET SESSION sort_buffer_size = 1024*36;
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
|
||||||
|
SET SESSION sort_buffer_size = DEFAULT;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -313,9 +313,7 @@ FLUSH LOGS;
|
|||||||
|
|
||||||
# Stop master server
|
# Stop master server
|
||||||
--echo --> Stop master server
|
--echo --> Stop master server
|
||||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
wait
|
|
||||||
EOF
|
|
||||||
--shutdown_server 10
|
--shutdown_server 10
|
||||||
--source include/wait_until_disconnected.inc
|
--source include/wait_until_disconnected.inc
|
||||||
# Replace binlog
|
# Replace binlog
|
||||||
@ -323,9 +321,7 @@ remove_file $MYSQLD_DATADIR/master-bin.000001;
|
|||||||
copy_file $MYSQL_TEST_DIR/std_data/bug16266.000001 $MYSQLD_DATADIR/master-bin.000001;
|
copy_file $MYSQL_TEST_DIR/std_data/bug16266.000001 $MYSQLD_DATADIR/master-bin.000001;
|
||||||
|
|
||||||
--echo --> Start master server
|
--echo --> Start master server
|
||||||
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
restart
|
|
||||||
EOF
|
|
||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
--source include/wait_until_connected_again.inc
|
--source include/wait_until_connected_again.inc
|
||||||
let $binlog_version= query_get_value(SHOW BINLOG EVENTS, Info, 1);
|
let $binlog_version= query_get_value(SHOW BINLOG EVENTS, Info, 1);
|
||||||
|
@ -20,7 +20,7 @@ SET @@session.max_join_size = default;
|
|||||||
SELECT @@session.sql_big_selects;
|
SELECT @@session.sql_big_selects;
|
||||||
# On some machines the following will result into a warning
|
# On some machines the following will result into a warning
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
SET @@global.max_join_size = -1;
|
SET @@global.max_join_size = 18446744073709551615;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
SET @@session.max_join_size = default;
|
SET @@session.max_join_size = default;
|
||||||
--echo change_user
|
--echo change_user
|
||||||
|
@ -293,6 +293,34 @@ SET GLOBAL event_scheduler = OFF;
|
|||||||
--echo # -- End of Bug#35074.
|
--echo # -- End of Bug#35074.
|
||||||
--echo
|
--echo
|
||||||
|
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # -- Bug#49752: 2469.126.2 unintentionally breaks authentication
|
||||||
|
--echo # against MySQL 5.1 server
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
GRANT ALL ON test.* TO 'Azundris12345678'@'localhost' IDENTIFIED BY 'test123';
|
||||||
|
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
|
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||||
|
connect (con1,localhost,Azundris123456789,test123,test);
|
||||||
|
disconnect con1;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
|
||||||
|
DROP USER 'Azundris12345678'@'localhost';
|
||||||
|
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # -- End of Bug#49752
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--echo # ------------------------------------------------------------------
|
--echo # ------------------------------------------------------------------
|
||||||
--echo # -- End of 5.1 tests
|
--echo # -- End of 5.1 tests
|
||||||
--echo # ------------------------------------------------------------------
|
--echo # ------------------------------------------------------------------
|
||||||
|
@ -48,3 +48,13 @@ select * from t1 where a like 'we_%';
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 5.1 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--source include/ctype_8bit.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 5.1 tests
|
||||||
|
--echo #
|
||||||
|
@ -1466,3 +1466,23 @@ SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) from t1 GROUP BY b;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #57272: crash in rpad() when using utf8
|
||||||
|
#
|
||||||
|
SELECT LENGTH(RPAD(0.0115E88, 61297, _utf8'яэюя'));
|
||||||
|
SELECT LENGTH(RPAD(0.0115E88, 61297, _utf8'йцуя'));
|
||||||
|
SELECT HEX(RPAD(0x20, 2, _utf8 0xD18F));
|
||||||
|
SELECT HEX(RPAD(0x20, 4, _utf8 0xD18F));
|
||||||
|
SELECT HEX(LPAD(0x20, 2, _utf8 0xD18F));
|
||||||
|
SELECT HEX(LPAD(0x20, 4, _utf8 0xD18F));
|
||||||
|
|
||||||
|
SELECT HEX(RPAD(_utf8 0xD18F, 3, 0x20));
|
||||||
|
SELECT HEX(LPAD(_utf8 0xD18F, 3, 0x20));
|
||||||
|
|
||||||
|
SELECT HEX(INSERT(_utf8 0xD18F, 2, 1, 0x20));
|
||||||
|
SELECT HEX(INSERT(_utf8 0xD18FD18E, 2, 1, 0x20));
|
||||||
|
|
||||||
|
|
||||||
|
--echo End of 5.1 tests
|
||||||
|
@ -228,4 +228,40 @@ EXPLAIN SELECT c1 FROM t1 WHERE c2 = 1 AND c4 = 1 AND c5 = 1;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#56814 Explain + subselect + fulltext crashes server
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1(f1 VARCHAR(6) NOT NULL,
|
||||||
|
FULLTEXT KEY(f1),UNIQUE(f1));
|
||||||
|
INSERT INTO t1 VALUES ('test');
|
||||||
|
|
||||||
|
EXPLAIN SELECT 1 FROM t1
|
||||||
|
WHERE 1 > ALL((SELECT 1 FROM t1 JOIN t1 a ON (MATCH(t1.f1) AGAINST (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1));
|
||||||
|
|
||||||
|
PREPARE stmt FROM
|
||||||
|
'EXPLAIN SELECT 1 FROM t1
|
||||||
|
WHERE 1 > ALL((SELECT 1 FROM t1 RIGHT OUTER JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) AGAINST (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1))';
|
||||||
|
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
|
||||||
|
PREPARE stmt FROM
|
||||||
|
'EXPLAIN SELECT 1 FROM t1
|
||||||
|
WHERE 1 > ALL((SELECT 1 FROM t1 JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) AGAINST (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1))';
|
||||||
|
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests.
|
--echo End of 5.1 tests.
|
||||||
|
@ -585,4 +585,40 @@ REPAIR TABLE t1;
|
|||||||
SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#54484 explain + prepared statement: crash and Got error -1 from storage engine
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1(f1 VARCHAR(6) NOT NULL, FULLTEXT KEY(f1), UNIQUE(f1));
|
||||||
|
INSERT INTO t1 VALUES ('test');
|
||||||
|
|
||||||
|
SELECT 1 FROM t1 WHERE 1 >
|
||||||
|
ALL((SELECT 1 FROM t1 JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) against (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1)) xor f1;
|
||||||
|
|
||||||
|
PREPARE stmt FROM
|
||||||
|
'SELECT 1 FROM t1 WHERE 1 >
|
||||||
|
ALL((SELECT 1 FROM t1 RIGHT OUTER JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) against (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1)) xor f1';
|
||||||
|
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
|
||||||
|
PREPARE stmt FROM
|
||||||
|
'SELECT 1 FROM t1 WHERE 1 >
|
||||||
|
ALL((SELECT 1 FROM t1 JOIN t1 a
|
||||||
|
ON (MATCH(t1.f1) against (""))
|
||||||
|
WHERE t1.f1 GROUP BY t1.f1))';
|
||||||
|
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -734,4 +734,16 @@ EXECUTE stmt;
|
|||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#57194 group_concat cause crash and/or invalid memory reads with type errors
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1(f1 int);
|
||||||
|
INSERT INTO t1 values (0),(0);
|
||||||
|
--disable_ps_protocol
|
||||||
|
--error ER_ILLEGAL_VALUE_FOR_TYPE
|
||||||
|
SELECT POLYGON((SELECT 1 FROM (SELECT 1 IN (GROUP_CONCAT(t1.f1)) FROM t1, t1 t GROUP BY t.f1 ) d));
|
||||||
|
--enable_ps_protocol
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -308,5 +308,11 @@ SELECT RAND(i) FROM t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
--echo # Bug#57477 SIGFPE when dividing a huge number a negative number
|
||||||
|
--echo #
|
||||||
|
SELECT -9999999999999999991 DIV -1;
|
||||||
|
SELECT -9223372036854775808 DIV -1;
|
||||||
|
SELECT -9223372036854775808 MOD -1;
|
||||||
|
SELECT -9223372036854775808999 MOD -1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -479,4 +479,12 @@ SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #57283: inet_ntoa() crashes
|
||||||
|
#
|
||||||
|
SELECT INET_NTOA(0);
|
||||||
|
SELECT '1' IN ('1', INET_NTOA(0));
|
||||||
|
|
||||||
|
|
||||||
--echo End of tests
|
--echo End of tests
|
||||||
|
@ -1235,5 +1235,16 @@ SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
|||||||
SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#57688 Assertion `!table || (!table->write_set || bitmap_is_set(table->write_set, field
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1(f1 INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (16777214),(0);
|
||||||
|
|
||||||
|
SELECT COUNT(*) FROM t1 LEFT JOIN t1 t2
|
||||||
|
ON 1 WHERE t2.f1 > 1 GROUP BY t2.f1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo # End of 5.1 tests
|
--echo # End of 5.1 tests
|
||||||
|
@ -981,4 +981,33 @@ EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#57688 Assertion `!table || (!table->write_set || bitmap_is_set(table->write_set, field
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INT NOT NULL, PRIMARY KEY (f1));
|
||||||
|
CREATE TABLE t2 (f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY (f1, f2));
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (4);
|
||||||
|
INSERT INTO t2 VALUES (3, 3);
|
||||||
|
INSERT INTO t2 VALUES (7, 7);
|
||||||
|
|
||||||
|
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
|
||||||
|
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4 AND t2.f1 IS NOT NULL AND t2.f2 IS NOT NULL
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4 AND t2.f1 IS NOT NULL AND t2.f2 IS NOT NULL
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -216,6 +216,7 @@ set global key_cache_block_size= @my_key_cache_block_size;
|
|||||||
# Bug#10473 - Can't set 'key_buffer_size' system variable to ZERO
|
# Bug#10473 - Can't set 'key_buffer_size' system variable to ZERO
|
||||||
# (One cannot drop the default key cache.)
|
# (One cannot drop the default key cache.)
|
||||||
#
|
#
|
||||||
|
--error ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
|
||||||
set @@global.key_buffer_size=0;
|
set @@global.key_buffer_size=0;
|
||||||
select @@global.key_buffer_size;
|
select @@global.key_buffer_size;
|
||||||
|
|
||||||
|
@ -412,5 +412,148 @@ drop table t1;
|
|||||||
--echo
|
--echo
|
||||||
--exec $MYSQL --skip-column-names --vertical test -e "select 1 as a"
|
--exec $MYSQL --skip-column-names --vertical test -e "select 1 as a"
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #54899: --one-database option cannot handle DROP/CREATE DATABASE
|
||||||
|
--echo # commands.
|
||||||
|
--echo #
|
||||||
|
--write_file $MYSQLTEST_VARDIR/tmp/bug54899.sql
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
USE connected_db;
|
||||||
|
CREATE TABLE `table_in_connected_db`(a INT);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
--exec $MYSQL --one-database connected_db < $MYSQLTEST_VARDIR/tmp/bug54899.sql
|
||||||
|
USE connected_db;
|
||||||
|
SHOW TABLES;
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/bug54899.sql
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Testing --one-database option
|
||||||
|
--echo #
|
||||||
|
--write_file $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
CREATE TABLE t1 (i INT);
|
||||||
|
CREATE TABLE test.t1 (i INT);
|
||||||
|
USE test;
|
||||||
|
# Following statements should be filtered.
|
||||||
|
CREATE TABLE connected_db.t2 (i INT);
|
||||||
|
CREATE TABLE t2 (i INT);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
--exec $MYSQL --one-database connected_db < $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
SHOW TABLES IN connected_db;
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
USE test;
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--write_file $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
CREATE DATABASE test1;
|
||||||
|
USE test1;
|
||||||
|
USE test1;
|
||||||
|
# Following statements should be filtered.
|
||||||
|
CREATE TABLE connected_db.t1 (i INT);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--exec $MYSQL --one-database test < $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
SHOW TABLES IN test1;
|
||||||
|
DROP DATABASE test1;
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Checking --one-database option followed by the execution of
|
||||||
|
--echo # connect command.
|
||||||
|
--echo #
|
||||||
|
--write_file $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
CREATE TABLE t1 (i INT);
|
||||||
|
CREATE TABLE test.t1 (i INT);
|
||||||
|
CONNECT test;
|
||||||
|
CREATE TABLE connected_db.t2 (i INT);
|
||||||
|
CREATE TABLE t2 (i INT);
|
||||||
|
USE connected_db;
|
||||||
|
# Following statements should be filtered.
|
||||||
|
CREATE TABLE connected_db.t3 (i INT);
|
||||||
|
CREATE TABLE t3 (i INT);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
--exec $MYSQL --one-database connected_db < $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
SHOW TABLES IN connected_db;
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
DROP TABLE test.t1;
|
||||||
|
DROP TABLE test.t2;
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Checking --one-database option with no database specified
|
||||||
|
--echo # at command-line.
|
||||||
|
--echo #
|
||||||
|
--write_file $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
# All following statements should be filtered.
|
||||||
|
CREATE TABLE t1 (i INT);
|
||||||
|
CREATE TABLE test.t1 (i INT);
|
||||||
|
USE test;
|
||||||
|
CREATE TABLE test.t2 (i INT);
|
||||||
|
CREATE TABLE t2 (i INT);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--exec $MYSQL --one-database < $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
SHOW TABLES IN test;
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/one_db.sql
|
||||||
|
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Checking --one-database option with non_existent_db
|
||||||
|
--echo # specified with USE command
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
# CASE 1 : When 'connected_db' database exists and passed at commandline.
|
||||||
|
--write_file $MYSQLTEST_VARDIR/tmp/one_db_1.sql
|
||||||
|
CREATE TABLE `table_in_connected_db`(i INT);
|
||||||
|
USE non_existent_db;
|
||||||
|
# Following statement should be filtered out.
|
||||||
|
CREATE TABLE `table_in_non_existent_db`(i INT);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# CASE 2 : When 'connected_db' database exists but dropped and recreated in
|
||||||
|
# load file.
|
||||||
|
--write_file $MYSQLTEST_VARDIR/tmp/one_db_2.sql
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
USE non_existent_db;
|
||||||
|
# Following statements should be filtered out.
|
||||||
|
CREATE TABLE `table_in_non_existent_db`(i INT);
|
||||||
|
USE connected_db;
|
||||||
|
# Following statements should not be filtered out.
|
||||||
|
CREATE TABLE `table_in_connected_db`(i INT);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
CREATE DATABASE connected_db;
|
||||||
|
--exec $MYSQL --one-database connected_db < $MYSQLTEST_VARDIR/tmp/one_db_1.sql
|
||||||
|
SHOW TABLES IN connected_db;
|
||||||
|
--echo
|
||||||
|
--exec $MYSQL --one-database connected_db < $MYSQLTEST_VARDIR/tmp/one_db_2.sql
|
||||||
|
SHOW TABLES IN connected_db;
|
||||||
|
DROP DATABASE connected_db;
|
||||||
|
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/one_db_1.sql
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/one_db_2.sql
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo End of tests
|
--echo End of tests
|
||||||
|
@ -854,6 +854,13 @@ let $var2= `failing query`;
|
|||||||
echo $var2;
|
echo $var2;
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
create table t1 (a varchar(100));
|
||||||
|
insert into t1 values ('`select 42`');
|
||||||
|
let $a= `select * from t1`;
|
||||||
|
# This should output `select 42`, not evaluate it again to 42
|
||||||
|
echo $a;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/let.sql 2>&1
|
--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/let.sql 2>&1
|
||||||
|
|
||||||
@ -1131,6 +1138,11 @@ if (!$counter)
|
|||||||
{
|
{
|
||||||
echo Counter is not 0, (counter=10);
|
echo Counter is not 0, (counter=10);
|
||||||
}
|
}
|
||||||
|
if (! $counter)
|
||||||
|
{
|
||||||
|
let $counter=5;
|
||||||
|
}
|
||||||
|
echo Counter should still be 10, is $counter;
|
||||||
let $counter=0;
|
let $counter=0;
|
||||||
if($counter)
|
if($counter)
|
||||||
{
|
{
|
||||||
@ -1140,6 +1152,10 @@ if (!$counter)
|
|||||||
{
|
{
|
||||||
echo Counter is not 0, (counter=0);
|
echo Counter is not 0, (counter=0);
|
||||||
}
|
}
|
||||||
|
if (! $counter)
|
||||||
|
{
|
||||||
|
echo Not space var works;
|
||||||
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# Test if with some non-numerics
|
# Test if with some non-numerics
|
||||||
|
@ -7,6 +7,30 @@ drop table if exists t1, t2;
|
|||||||
|
|
||||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#56287: crash when using Partition datetime in sub in query
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1
|
||||||
|
(c1 bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
c2 varchar(40) not null default '',
|
||||||
|
c3 datetime not NULL,
|
||||||
|
PRIMARY KEY (c1,c3),
|
||||||
|
KEY partidx(c3))
|
||||||
|
ENGINE=InnoDB
|
||||||
|
PARTITION BY RANGE (TO_DAYS(c3))
|
||||||
|
(PARTITION p200912 VALUES LESS THAN (to_days('2010-01-01')),
|
||||||
|
PARTITION p201103 VALUES LESS THAN (to_days('2011-04-01')),
|
||||||
|
PARTITION p201912 VALUES LESS THAN MAXVALUE);
|
||||||
|
|
||||||
|
insert into t1(c2,c3) values ("Test row",'2010-01-01 00:00:00');
|
||||||
|
|
||||||
|
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
|
||||||
|
SELECT count(*) FROM t1 p where c3 in
|
||||||
|
(select c3 from t1 t where t.c3 < date '2011-04-26 19:19:44'
|
||||||
|
and t.c3 > date '2011-04-26 19:18:44') ;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#51830: Incorrect partition pruning on range partition (regression)
|
--echo # Bug#51830: Incorrect partition pruning on range partition (regression)
|
||||||
--echo #
|
--echo #
|
||||||
@ -401,3 +425,16 @@ connection default;
|
|||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #55146 Assertion `m_part_spec.start_part == m_part_spec.end_part' in index_read_idx_map
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (i1 int NOT NULL primary key, f1 int) ENGINE = InnoDB
|
||||||
|
PARTITION BY HASH(i1) PARTITIONS 2;
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1,1), (2,2);
|
||||||
|
|
||||||
|
SELECT * FROM t1 WHERE i1 = ( SELECT i1 FROM t1 WHERE f1=0 LIMIT 1 );
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -346,4 +346,11 @@ FROM t1 GROUP BY a LIMIT 1;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#56138 "valgrind errors about overlapping memory when
|
||||||
|
# double-assigning same variable"
|
||||||
|
#
|
||||||
|
|
||||||
|
select @v:=@v:=sum(1) from dual;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -1255,4 +1255,48 @@ SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size;
|
|||||||
SELECT @@skip_name_resolve;
|
SELECT @@skip_name_resolve;
|
||||||
SHOW VARIABLES LIKE 'skip_name_resolve';
|
SHOW VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #43233 : Some server variables are clipped during "update,"
|
||||||
|
--echo # not "check" stage
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET @kbs=@@global.key_buffer_size;
|
||||||
|
SET @kcbs=@@global.key_cache_block_size;
|
||||||
|
|
||||||
|
--echo throw errors in STRICT mode
|
||||||
|
SET SQL_MODE=STRICT_ALL_TABLES;
|
||||||
|
|
||||||
|
# sys_var_ulonglong_ptr: sys_max_binlog_cache_size
|
||||||
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
|
SET @@global.max_binlog_cache_size=-1;
|
||||||
|
|
||||||
|
# sys_var_thd_ha_rows: "max_join_size" et al.
|
||||||
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
|
SET @@global.max_join_size=0;
|
||||||
|
|
||||||
|
# sys_var_key_buffer_size: "key_buffer_size"
|
||||||
|
--error ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
|
||||||
|
SET @@global.key_buffer_size=0;
|
||||||
|
|
||||||
|
# sys_var_key_cache_long: "key_cache_block_size" et al.
|
||||||
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
|
SET @@global.key_cache_block_size=0;
|
||||||
|
|
||||||
|
--echo throw warnings in default mode
|
||||||
|
SET SQL_MODE=DEFAULT;
|
||||||
|
|
||||||
|
SET @@global.max_binlog_cache_size=-1;
|
||||||
|
SET @@global.max_join_size=0;
|
||||||
|
# this is an exception. since this is a new error/warning, let's stay
|
||||||
|
# compatible with the upcoming 5.6.
|
||||||
|
--error ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
|
||||||
|
SET @@global.key_buffer_size=0;
|
||||||
|
SET @@global.key_cache_block_size=0;
|
||||||
|
|
||||||
|
# cleanup
|
||||||
|
SET @@global.max_binlog_cache_size=DEFAULT;
|
||||||
|
SET @@global.max_join_size=DEFAULT;
|
||||||
|
SET @@global.key_buffer_size=@kbs;
|
||||||
|
SET @@global.key_cache_block_size=@kcbs;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -617,4 +617,14 @@ FROM t1 ORDER BY t1.id;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#57279 updatexml dies with: Assertion failed: str_arg[length] == 0
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--error ER_ILLEGAL_VALUE_FOR_TYPE
|
||||||
|
SELECT UPDATEXML(NULL, (LPAD(0.1111E-15, '2011', 1)), 1);
|
||||||
|
--error ER_ILLEGAL_VALUE_FOR_TYPE
|
||||||
|
SELECT EXTRACTVALUE('', LPAD(0.1111E-15, '2011', 1));
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -113,7 +113,6 @@ int my_is_symlink(const char *filename __attribute__((unused)))
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Resolve all symbolic links in path
|
Resolve all symbolic links in path
|
||||||
'to' may be equal to 'filename'
|
'to' may be equal to 'filename'
|
||||||
@ -146,8 +145,24 @@ int my_realpath(char *to, const char *filename,
|
|||||||
result= -1;
|
result= -1;
|
||||||
}
|
}
|
||||||
DBUG_RETURN(result);
|
DBUG_RETURN(result);
|
||||||
|
#else
|
||||||
|
#ifdef _WIN32
|
||||||
|
int ret= GetFullPathName(filename,FN_REFLEN,
|
||||||
|
to,
|
||||||
|
NULL);
|
||||||
|
if (ret == 0 || ret > FN_REFLEN)
|
||||||
|
{
|
||||||
|
if (ret > FN_REFLEN)
|
||||||
|
my_errno= ENAMETOOLONG;
|
||||||
|
else
|
||||||
|
my_errno= EACCES;
|
||||||
|
if (MyFlags & MY_WME)
|
||||||
|
my_error(EE_REALPATH, MYF(0), filename, my_errno);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
my_load_path(to, filename, NullS);
|
my_load_path(to, filename, NullS);
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
#include <ctype.h> /* isprint */
|
||||||
|
#include <sys/syscall.h> /* SYS_gettid */
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HAVE_EXECINFO_H
|
#if HAVE_EXECINFO_H
|
||||||
#include <execinfo.h>
|
#include <execinfo.h>
|
||||||
#endif
|
#endif
|
||||||
@ -46,10 +51,99 @@ void my_init_stacktrace()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void my_safe_print_str(const char* name, const char* val, int max_len)
|
#ifdef __linux__
|
||||||
|
|
||||||
|
static void print_buffer(char *buffer, size_t count)
|
||||||
{
|
{
|
||||||
char *heap_end= (char*) sbrk(0);
|
for (; count && *buffer; --count)
|
||||||
fprintf(stderr, "%s at %p ", name, val);
|
{
|
||||||
|
int c= (int) *buffer++;
|
||||||
|
fputc(isprint(c) ? c : ' ', stderr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Access the pages of this process through /proc/self/task/<tid>/mem
|
||||||
|
in order to safely print the contents of a memory address range.
|
||||||
|
|
||||||
|
@param addr The address at the start of the memory region.
|
||||||
|
@param max_len The length of the memory region.
|
||||||
|
|
||||||
|
@return Zero on success.
|
||||||
|
*/
|
||||||
|
static int safe_print_str(const char *addr, int max_len)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
pid_t tid;
|
||||||
|
off_t offset;
|
||||||
|
ssize_t nbytes= 0;
|
||||||
|
size_t total, count;
|
||||||
|
char buf[256];
|
||||||
|
|
||||||
|
tid= (pid_t) syscall(SYS_gettid);
|
||||||
|
|
||||||
|
sprintf(buf, "/proc/self/task/%d/mem", tid);
|
||||||
|
|
||||||
|
if ((fd= open(buf, O_RDONLY)) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* Ensure that off_t can hold a pointer. */
|
||||||
|
compile_time_assert(sizeof(off_t) >= sizeof(intptr));
|
||||||
|
|
||||||
|
total= max_len;
|
||||||
|
offset= (intptr) addr;
|
||||||
|
|
||||||
|
/* Read up to the maximum number of bytes. */
|
||||||
|
while (total)
|
||||||
|
{
|
||||||
|
count= min(sizeof(buf), total);
|
||||||
|
|
||||||
|
if ((nbytes= pread(fd, buf, count, offset)) < 0)
|
||||||
|
{
|
||||||
|
/* Just in case... */
|
||||||
|
if (errno == EINTR)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Advance offset into memory. */
|
||||||
|
total-= nbytes;
|
||||||
|
offset+= nbytes;
|
||||||
|
addr+= nbytes;
|
||||||
|
|
||||||
|
/* Output the printable characters. */
|
||||||
|
print_buffer(buf, nbytes);
|
||||||
|
|
||||||
|
/* Break if less than requested... */
|
||||||
|
if ((count - nbytes))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Output a new line if something was printed. */
|
||||||
|
if (total != (size_t) max_len)
|
||||||
|
fputc('\n', stderr);
|
||||||
|
|
||||||
|
if (nbytes == -1)
|
||||||
|
fprintf(stderr, "Can't read from address %p: %m.\n", addr);
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void my_safe_print_str(const char* val, int max_len)
|
||||||
|
{
|
||||||
|
char *heap_end;
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
if (!safe_print_str(val, max_len))
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
heap_end= (char*) sbrk(0);
|
||||||
|
|
||||||
if (!PTR_SANE(val))
|
if (!PTR_SANE(val))
|
||||||
{
|
{
|
||||||
@ -57,7 +151,6 @@ void my_safe_print_str(const char* name, const char* val, int max_len)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "= ");
|
|
||||||
for (; max_len && PTR_SANE(val) && *val; --max_len)
|
for (; max_len && PTR_SANE(val) && *val; --max_len)
|
||||||
fputc(*val++, stderr);
|
fputc(*val++, stderr);
|
||||||
fputc('\n', stderr);
|
fputc('\n', stderr);
|
||||||
@ -657,9 +750,8 @@ void my_write_core(int unused)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void my_safe_print_str(const char *name, const char *val, int len)
|
void my_safe_print_str(const char *val, int len)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"%s at %p", name, val);
|
|
||||||
__try
|
__try
|
||||||
{
|
{
|
||||||
fprintf(stderr,"=%.*s\n", len, val);
|
fprintf(stderr,"=%.*s\n", len, val);
|
||||||
|
@ -302,8 +302,8 @@ if [ x"$BASE_SYSTEM" != x"netware" ] ; then
|
|||||||
|
|
||||||
# Copy readme and license files
|
# Copy readme and license files
|
||||||
cp README Docs/INSTALL-BINARY $DEST/
|
cp README Docs/INSTALL-BINARY $DEST/
|
||||||
if [ -f COPYING -a -f EXCEPTIONS-CLIENT ] ; then
|
if [ -f COPYING ] ; then
|
||||||
cp COPYING EXCEPTIONS-CLIENT $DEST/
|
cp COPYING $DEST/
|
||||||
elif [ -f LICENSE.mysql ] ; then
|
elif [ -f LICENSE.mysql ] ; then
|
||||||
cp LICENSE.mysql $DEST/
|
cp LICENSE.mysql $DEST/
|
||||||
else
|
else
|
||||||
@ -381,7 +381,7 @@ copyfileto()
|
|||||||
copyfileto $BASE/docs ChangeLog Docs/mysql.info
|
copyfileto $BASE/docs ChangeLog Docs/mysql.info
|
||||||
|
|
||||||
copyfileto $BASE COPYING COPYING.LIB README Docs/INSTALL-BINARY \
|
copyfileto $BASE COPYING COPYING.LIB README Docs/INSTALL-BINARY \
|
||||||
EXCEPTIONS-CLIENT LICENSE.mysql
|
LICENSE.mysql
|
||||||
|
|
||||||
# Non platform-specific bin dir files:
|
# Non platform-specific bin dir files:
|
||||||
BIN_FILES="extra/comp_err$BS extra/replace$BS extra/perror$BS \
|
BIN_FILES="extra/comp_err$BS extra/replace$BS extra/perror$BS \
|
||||||
|
@ -187,7 +187,7 @@ cp ChangeLog $DESTDIR/Docs/ || /bin/true
|
|||||||
cp support-files/my-*.ini $DESTDIR/
|
cp support-files/my-*.ini $DESTDIR/
|
||||||
|
|
||||||
if [ -f COPYING ] ; then
|
if [ -f COPYING ] ; then
|
||||||
cp COPYING EXCEPTIONS-CLIENT $DESTDIR/
|
cp COPYING $DESTDIR/
|
||||||
cp COPYING $DESTDIR/Docs/
|
cp COPYING $DESTDIR/Docs/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -786,11 +786,8 @@ int field_conv(Field *to,Field *from)
|
|||||||
((Field_varstring*)from)->length_bytes ==
|
((Field_varstring*)from)->length_bytes ==
|
||||||
((Field_varstring*)to)->length_bytes))
|
((Field_varstring*)to)->length_bytes))
|
||||||
{ // Identical fields
|
{ // Identical fields
|
||||||
#ifdef HAVE_purify
|
// to->ptr==from->ptr may happen if one does 'UPDATE ... SET x=x'
|
||||||
/* This may happen if one does 'UPDATE ... SET x=x' */
|
memmove(to->ptr, from->ptr, to->pack_length());
|
||||||
if (to->ptr != from->ptr)
|
|
||||||
#endif
|
|
||||||
memcpy(to->ptr,from->ptr,to->pack_length());
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4299,8 +4299,12 @@ int ha_partition::index_read_idx_map(uchar *buf, uint index,
|
|||||||
|
|
||||||
get_partition_set(table, buf, index, &m_start_key, &m_part_spec);
|
get_partition_set(table, buf, index, &m_start_key, &m_part_spec);
|
||||||
|
|
||||||
/* How can it be more than one partition with the current use? */
|
/*
|
||||||
DBUG_ASSERT(m_part_spec.start_part == m_part_spec.end_part);
|
We have either found exactly 1 partition
|
||||||
|
(in which case start_part == end_part)
|
||||||
|
or no matching partitions (start_part > end_part)
|
||||||
|
*/
|
||||||
|
DBUG_ASSERT(m_part_spec.start_part >= m_part_spec.end_part);
|
||||||
|
|
||||||
for (part= m_part_spec.start_part; part <= m_part_spec.end_part; part++)
|
for (part= m_part_spec.start_part; part <= m_part_spec.end_part; part++)
|
||||||
{
|
{
|
||||||
@ -4535,6 +4539,7 @@ int ha_partition::partition_scan_set_up(uchar * buf, bool idx_read_flag)
|
|||||||
key not found.
|
key not found.
|
||||||
*/
|
*/
|
||||||
DBUG_PRINT("info", ("scan with no partition to scan"));
|
DBUG_PRINT("info", ("scan with no partition to scan"));
|
||||||
|
table->status= STATUS_NOT_FOUND;
|
||||||
DBUG_RETURN(HA_ERR_END_OF_FILE);
|
DBUG_RETURN(HA_ERR_END_OF_FILE);
|
||||||
}
|
}
|
||||||
if (m_part_spec.start_part == m_part_spec.end_part)
|
if (m_part_spec.start_part == m_part_spec.end_part)
|
||||||
@ -4559,6 +4564,7 @@ int ha_partition::partition_scan_set_up(uchar * buf, bool idx_read_flag)
|
|||||||
if (start_part == MY_BIT_NONE)
|
if (start_part == MY_BIT_NONE)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("scan with no partition to scan"));
|
DBUG_PRINT("info", ("scan with no partition to scan"));
|
||||||
|
table->status= STATUS_NOT_FOUND;
|
||||||
DBUG_RETURN(HA_ERR_END_OF_FILE);
|
DBUG_RETURN(HA_ERR_END_OF_FILE);
|
||||||
}
|
}
|
||||||
if (start_part > m_part_spec.start_part)
|
if (start_part > m_part_spec.start_part)
|
||||||
|
22
sql/item.cc
22
sql/item.cc
@ -5286,8 +5286,17 @@ static uint nr_of_decimals(const char *str, const char *end)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function is only called during parsing. We will signal an error if
|
This function is only called during parsing:
|
||||||
value is not a true double value (overflow)
|
- when parsing SQL query from sql_yacc.yy
|
||||||
|
- when parsing XPath query from item_xmlfunc.cc
|
||||||
|
We will signal an error if value is not a true double value (overflow):
|
||||||
|
eng: Illegal %s '%-.192s' value found during parsing
|
||||||
|
|
||||||
|
Note: the string is NOT null terminated when called from item_xmlfunc.cc,
|
||||||
|
so this->name will contain some SQL query tail behind the "length" bytes.
|
||||||
|
This is Ok for now, as this Item is never seen in SHOW,
|
||||||
|
or EXPLAIN, or anywhere else in metadata.
|
||||||
|
Item->name should be fixed to use LEX_STRING eventually.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Item_float::Item_float(const char *str_arg, uint length)
|
Item_float::Item_float(const char *str_arg, uint length)
|
||||||
@ -5298,12 +5307,9 @@ Item_float::Item_float(const char *str_arg, uint length)
|
|||||||
&error);
|
&error);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
/*
|
char tmp[NAME_LEN + 1];
|
||||||
Note that we depend on that str_arg is null terminated, which is true
|
my_snprintf(tmp, sizeof(tmp), "%.*s", length, str_arg);
|
||||||
when we are in the parser
|
my_error(ER_ILLEGAL_VALUE_FOR_TYPE, MYF(0), "double", tmp);
|
||||||
*/
|
|
||||||
DBUG_ASSERT(str_arg[length] == 0);
|
|
||||||
my_error(ER_ILLEGAL_VALUE_FOR_TYPE, MYF(0), "double", (char*) str_arg);
|
|
||||||
}
|
}
|
||||||
presentation= name=(char*) str_arg;
|
presentation= name=(char*) str_arg;
|
||||||
decimals=(uint8) nr_of_decimals(str_arg, str_arg+length);
|
decimals=(uint8) nr_of_decimals(str_arg, str_arg+length);
|
||||||
|
@ -1363,9 +1363,13 @@ longlong Item_func_int_div::val_int()
|
|||||||
signal_divide_by_null();
|
signal_divide_by_null();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return (unsigned_flag ?
|
|
||||||
(ulonglong) value / (ulonglong) val2 :
|
if (unsigned_flag)
|
||||||
value / val2);
|
return ((ulonglong) value / (ulonglong) val2);
|
||||||
|
else if (value == LONGLONG_MIN && val2 == -1)
|
||||||
|
return LONGLONG_MIN;
|
||||||
|
else
|
||||||
|
return value / val2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1399,9 +1403,9 @@ longlong Item_func_mod::int_op()
|
|||||||
if (args[0]->unsigned_flag)
|
if (args[0]->unsigned_flag)
|
||||||
result= args[1]->unsigned_flag ?
|
result= args[1]->unsigned_flag ?
|
||||||
((ulonglong) value) % ((ulonglong) val2) : ((ulonglong) value) % val2;
|
((ulonglong) value) % ((ulonglong) val2) : ((ulonglong) value) % val2;
|
||||||
else
|
else result= args[1]->unsigned_flag ?
|
||||||
result= args[1]->unsigned_flag ?
|
value % ((ulonglong) val2) :
|
||||||
value % ((ulonglong) val2) : value % val2;
|
(val2 == -1) ? 0 : value % val2;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -3920,7 +3924,7 @@ update_hash(user_var_entry *entry, bool set_null, void *ptr, uint length,
|
|||||||
length--; // Fix length change above
|
length--; // Fix length change above
|
||||||
entry->value[length]= 0; // Store end \0
|
entry->value[length]= 0; // Store end \0
|
||||||
}
|
}
|
||||||
memcpy(entry->value,ptr,length);
|
memmove(entry->value, ptr, length);
|
||||||
if (type == DECIMAL_RESULT)
|
if (type == DECIMAL_RESULT)
|
||||||
((my_decimal*)entry->value)->fix_buffer_pointer();
|
((my_decimal*)entry->value)->fix_buffer_pointer();
|
||||||
entry->length= length;
|
entry->length= length;
|
||||||
@ -4872,7 +4876,7 @@ void Item_func_get_system_var::fix_length_and_dec()
|
|||||||
decimals=0;
|
decimals=0;
|
||||||
break;
|
break;
|
||||||
case SHOW_LONGLONG:
|
case SHOW_LONGLONG:
|
||||||
unsigned_flag= FALSE;
|
unsigned_flag= TRUE;
|
||||||
max_length= MY_INT64_NUM_DECIMAL_DIGITS;
|
max_length= MY_INT64_NUM_DECIMAL_DIGITS;
|
||||||
decimals=0;
|
decimals=0;
|
||||||
break;
|
break;
|
||||||
@ -5013,7 +5017,7 @@ longlong Item_func_get_system_var::val_int()
|
|||||||
{
|
{
|
||||||
case SHOW_INT: get_sys_var_safe (uint);
|
case SHOW_INT: get_sys_var_safe (uint);
|
||||||
case SHOW_LONG: get_sys_var_safe (ulong);
|
case SHOW_LONG: get_sys_var_safe (ulong);
|
||||||
case SHOW_LONGLONG: get_sys_var_safe (longlong);
|
case SHOW_LONGLONG: get_sys_var_safe (ulonglong);
|
||||||
case SHOW_HA_ROWS: get_sys_var_safe (ha_rows);
|
case SHOW_HA_ROWS: get_sys_var_safe (ha_rows);
|
||||||
case SHOW_BOOL: get_sys_var_safe (bool);
|
case SHOW_BOOL: get_sys_var_safe (bool);
|
||||||
case SHOW_MY_BOOL: get_sys_var_safe (my_bool);
|
case SHOW_MY_BOOL: get_sys_var_safe (my_bool);
|
||||||
@ -5304,7 +5308,17 @@ void Item_func_match::init_search(bool no_order)
|
|||||||
|
|
||||||
/* Check if init_search() has been called before */
|
/* Check if init_search() has been called before */
|
||||||
if (ft_handler)
|
if (ft_handler)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
We should reset ft_handler as it is cleaned up
|
||||||
|
on destruction of FT_SELECT object
|
||||||
|
(necessary in case of re-execution of subquery).
|
||||||
|
TODO: FT_SELECT should not clean up ft_handler.
|
||||||
|
*/
|
||||||
|
if (join_key)
|
||||||
|
table->file->ft_handler= ft_handler;
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
|
||||||
if (key == NO_SUCH_KEY)
|
if (key == NO_SUCH_KEY)
|
||||||
{
|
{
|
||||||
|
@ -1531,7 +1531,7 @@ public:
|
|||||||
join_key(0), ft_handler(0), table(0), master(0), concat_ws(0) { }
|
join_key(0), ft_handler(0), table(0), master(0), concat_ws(0) { }
|
||||||
void cleanup()
|
void cleanup()
|
||||||
{
|
{
|
||||||
DBUG_ENTER("Item_func_match");
|
DBUG_ENTER("Item_func_match::cleanup");
|
||||||
Item_real_func::cleanup();
|
Item_real_func::cleanup();
|
||||||
if (!master && ft_handler)
|
if (!master && ft_handler)
|
||||||
ft_handler->please->close_search(ft_handler);
|
ft_handler->please->close_search(ft_handler);
|
||||||
|
@ -1013,6 +1013,20 @@ String *Item_func_insert::val_str(String *str)
|
|||||||
if ((length < 0) || (length > res->length()))
|
if ((length < 0) || (length > res->length()))
|
||||||
length= res->length();
|
length= res->length();
|
||||||
|
|
||||||
|
/*
|
||||||
|
There is one exception not handled (intentionaly) by the character set
|
||||||
|
aggregation code. If one string is strong side and is binary, and
|
||||||
|
another one is weak side and is a multi-byte character string,
|
||||||
|
then we need to operate on the second string in terms on bytes when
|
||||||
|
calling ::numchars() and ::charpos(), rather than in terms of characters.
|
||||||
|
Lets substitute its character set to binary.
|
||||||
|
*/
|
||||||
|
if (collation.collation == &my_charset_bin)
|
||||||
|
{
|
||||||
|
res->set_charset(&my_charset_bin);
|
||||||
|
res2->set_charset(&my_charset_bin);
|
||||||
|
}
|
||||||
|
|
||||||
/* start and length are now sufficiently valid to pass to charpos function */
|
/* start and length are now sufficiently valid to pass to charpos function */
|
||||||
start= res->charpos((int) start);
|
start= res->charpos((int) start);
|
||||||
length= res->charpos((int) length, (uint32) start);
|
length= res->charpos((int) length, (uint32) start);
|
||||||
@ -2514,6 +2528,20 @@ String *Item_func_rpad::val_str(String *str)
|
|||||||
/* Set here so that rest of code sees out-of-bound value as such. */
|
/* Set here so that rest of code sees out-of-bound value as such. */
|
||||||
if ((ulonglong) count > INT_MAX32)
|
if ((ulonglong) count > INT_MAX32)
|
||||||
count= INT_MAX32;
|
count= INT_MAX32;
|
||||||
|
/*
|
||||||
|
There is one exception not handled (intentionaly) by the character set
|
||||||
|
aggregation code. If one string is strong side and is binary, and
|
||||||
|
another one is weak side and is a multi-byte character string,
|
||||||
|
then we need to operate on the second string in terms on bytes when
|
||||||
|
calling ::numchars() and ::charpos(), rather than in terms of characters.
|
||||||
|
Lets substitute its character set to binary.
|
||||||
|
*/
|
||||||
|
if (collation.collation == &my_charset_bin)
|
||||||
|
{
|
||||||
|
res->set_charset(&my_charset_bin);
|
||||||
|
rpad->set_charset(&my_charset_bin);
|
||||||
|
}
|
||||||
|
|
||||||
if (count <= (res_char_length= res->numchars()))
|
if (count <= (res_char_length= res->numchars()))
|
||||||
{ // String to pad is big enough
|
{ // String to pad is big enough
|
||||||
res->length(res->charpos((int) count)); // Shorten result if longer
|
res->length(res->charpos((int) count)); // Shorten result if longer
|
||||||
@ -2616,6 +2644,20 @@ String *Item_func_lpad::val_str(String *str)
|
|||||||
if ((ulonglong) count > INT_MAX32)
|
if ((ulonglong) count > INT_MAX32)
|
||||||
count= INT_MAX32;
|
count= INT_MAX32;
|
||||||
|
|
||||||
|
/*
|
||||||
|
There is one exception not handled (intentionaly) by the character set
|
||||||
|
aggregation code. If one string is strong side and is binary, and
|
||||||
|
another one is weak side and is a multi-byte character string,
|
||||||
|
then we need to operate on the second string in terms on bytes when
|
||||||
|
calling ::numchars() and ::charpos(), rather than in terms of characters.
|
||||||
|
Lets substitute its character set to binary.
|
||||||
|
*/
|
||||||
|
if (collation.collation == &my_charset_bin)
|
||||||
|
{
|
||||||
|
res->set_charset(&my_charset_bin);
|
||||||
|
pad->set_charset(&my_charset_bin);
|
||||||
|
}
|
||||||
|
|
||||||
res_char_length= res->numchars();
|
res_char_length= res->numchars();
|
||||||
|
|
||||||
if (count <= res_char_length)
|
if (count <= res_char_length)
|
||||||
@ -3093,6 +3135,7 @@ String* Item_func_inet_ntoa::val_str(String* str)
|
|||||||
if ((null_value= (args[0]->null_value || n > (ulonglong) LL(4294967295))))
|
if ((null_value= (args[0]->null_value || n > (ulonglong) LL(4294967295))))
|
||||||
return 0; // Null value
|
return 0; // Null value
|
||||||
|
|
||||||
|
str->set_charset(collation.collation);
|
||||||
str->length(0);
|
str->length(0);
|
||||||
int4store(buf,n);
|
int4store(buf,n);
|
||||||
|
|
||||||
|
@ -1906,21 +1906,26 @@ int subselect_single_select_engine::exec()
|
|||||||
DBUG_RETURN(join->error ? join->error : 1);
|
DBUG_RETURN(join->error ? join->error : 1);
|
||||||
}
|
}
|
||||||
if (!select_lex->uncacheable && thd->lex->describe &&
|
if (!select_lex->uncacheable && thd->lex->describe &&
|
||||||
!(join->select_options & SELECT_DESCRIBE) &&
|
!(join->select_options & SELECT_DESCRIBE))
|
||||||
join->need_tmp)
|
|
||||||
{
|
{
|
||||||
item->update_used_tables();
|
item->update_used_tables();
|
||||||
if (item->const_item())
|
if (item->const_item())
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
It's necessary to keep original JOIN table because
|
||||||
|
create_sort_index() function may overwrite original
|
||||||
|
JOIN_TAB::type and wrong optimization method can be
|
||||||
|
selected on re-execution.
|
||||||
|
*/
|
||||||
|
select_lex->uncacheable|= UNCACHEABLE_EXPLAIN;
|
||||||
|
select_lex->master_unit()->uncacheable|= UNCACHEABLE_EXPLAIN;
|
||||||
/*
|
/*
|
||||||
Force join->join_tmp creation, because this subquery will be replaced
|
Force join->join_tmp creation, because this subquery will be replaced
|
||||||
by a simple select from the materialization temp table by optimize()
|
by a simple select from the materialization temp table by optimize()
|
||||||
called by EXPLAIN and we need to preserve the initial query structure
|
called by EXPLAIN and we need to preserve the initial query structure
|
||||||
so we can display it.
|
so we can display it.
|
||||||
*/
|
*/
|
||||||
select_lex->uncacheable|= UNCACHEABLE_EXPLAIN;
|
if (join->need_tmp && join->init_save_join_tab())
|
||||||
select_lex->master_unit()->uncacheable|= UNCACHEABLE_EXPLAIN;
|
|
||||||
if (join->init_save_join_tab())
|
|
||||||
DBUG_RETURN(1); /* purecov: inspected */
|
DBUG_RETURN(1); /* purecov: inspected */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3401,8 +3401,6 @@ String* Item_func_group_concat::val_str(String* str)
|
|||||||
|
|
||||||
void Item_func_group_concat::print(String *str, enum_query_type query_type)
|
void Item_func_group_concat::print(String *str, enum_query_type query_type)
|
||||||
{
|
{
|
||||||
/* orig_args is not filled with valid values until fix_fields() */
|
|
||||||
Item **pargs= fixed ? orig_args : args;
|
|
||||||
str->append(STRING_WITH_LEN("group_concat("));
|
str->append(STRING_WITH_LEN("group_concat("));
|
||||||
if (distinct)
|
if (distinct)
|
||||||
str->append(STRING_WITH_LEN("distinct "));
|
str->append(STRING_WITH_LEN("distinct "));
|
||||||
@ -3410,7 +3408,7 @@ void Item_func_group_concat::print(String *str, enum_query_type query_type)
|
|||||||
{
|
{
|
||||||
if (i)
|
if (i)
|
||||||
str->append(',');
|
str->append(',');
|
||||||
pargs[i]->print(str, query_type);
|
orig_args[i]->print(str, query_type);
|
||||||
}
|
}
|
||||||
if (arg_count_order)
|
if (arg_count_order)
|
||||||
{
|
{
|
||||||
@ -3419,7 +3417,7 @@ void Item_func_group_concat::print(String *str, enum_query_type query_type)
|
|||||||
{
|
{
|
||||||
if (i)
|
if (i)
|
||||||
str->append(',');
|
str->append(',');
|
||||||
pargs[i + arg_count_field]->print(str, query_type);
|
orig_args[i + arg_count_field]->print(str, query_type);
|
||||||
if (order[i]->asc)
|
if (order[i]->asc)
|
||||||
str->append(STRING_WITH_LEN(" ASC"));
|
str->append(STRING_WITH_LEN(" ASC"));
|
||||||
else
|
else
|
||||||
|
@ -3037,7 +3037,7 @@ bool MYSQL_BIN_LOG::reset_logs(THD* thd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Start logging with a new file */
|
/* Start logging with a new file */
|
||||||
close(LOG_CLOSE_INDEX);
|
close(LOG_CLOSE_INDEX | LOG_CLOSE_TO_BE_OPENED);
|
||||||
if ((error= my_delete_allow_opened(index_file_name, MYF(0)))) // Reset (open will update)
|
if ((error= my_delete_allow_opened(index_file_name, MYF(0)))) // Reset (open will update)
|
||||||
{
|
{
|
||||||
if (my_errno == ENOENT)
|
if (my_errno == ENOENT)
|
||||||
|
@ -2527,7 +2527,7 @@ the thread stack. Please read http://dev.mysql.com/doc/mysql/en/linux.html\n\n",
|
|||||||
|
|
||||||
if (!(test_flags & TEST_NO_STACKTRACE))
|
if (!(test_flags & TEST_NO_STACKTRACE))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "thd: 0x%lx\n",(long) thd);
|
fprintf(stderr, "Thread pointer: 0x%lx\n", (long) thd);
|
||||||
fprintf(stderr, "Attempting backtrace. You can use the following "
|
fprintf(stderr, "Attempting backtrace. You can use the following "
|
||||||
"information to find out\nwhere mysqld died. If "
|
"information to find out\nwhere mysqld died. If "
|
||||||
"you see no messages after this, something went\n"
|
"you see no messages after this, something went\n"
|
||||||
@ -2555,11 +2555,13 @@ the thread stack. Please read http://dev.mysql.com/doc/mysql/en/linux.html\n\n",
|
|||||||
kreason= "KILLED_NO_VALUE";
|
kreason= "KILLED_NO_VALUE";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf(stderr, "Trying to get some variables.\n\
|
fprintf(stderr, "\nTrying to get some variables.\n"
|
||||||
Some pointers may be invalid and cause the dump to abort...\n");
|
"Some pointers may be invalid and cause the dump to abort.\n");
|
||||||
my_safe_print_str("thd->query", thd->query(), 1024);
|
fprintf(stderr, "Query (%p): ", thd->query());
|
||||||
fprintf(stderr, "thd->thread_id=%lu\n", (ulong) thd->thread_id);
|
my_safe_print_str(thd->query(), min(1024, thd->query_length()));
|
||||||
fprintf(stderr, "thd->killed=%s\n", kreason);
|
fprintf(stderr, "Connection ID (thread ID): %lu\n", (ulong) thd->thread_id);
|
||||||
|
fprintf(stderr, "Status: %s\n", kreason);
|
||||||
|
fputc('\n', stderr);
|
||||||
}
|
}
|
||||||
fprintf(stderr, "\
|
fprintf(stderr, "\
|
||||||
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains\n\
|
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains\n\
|
||||||
@ -6774,7 +6776,7 @@ thread is in the relay logs.",
|
|||||||
"as much as you can afford; 1GB on a 4GB machine that mainly runs MySQL is "
|
"as much as you can afford; 1GB on a 4GB machine that mainly runs MySQL is "
|
||||||
"quite common.",
|
"quite common.",
|
||||||
&dflt_key_cache_var.param_buff_size, NULL, NULL, (GET_ULL | GET_ASK_ADDR),
|
&dflt_key_cache_var.param_buff_size, NULL, NULL, (GET_ULL | GET_ASK_ADDR),
|
||||||
REQUIRED_ARG, KEY_CACHE_SIZE, MALLOC_OVERHEAD, SIZE_T_MAX, MALLOC_OVERHEAD,
|
REQUIRED_ARG, KEY_CACHE_SIZE, 0, SIZE_T_MAX, MALLOC_OVERHEAD,
|
||||||
IO_SIZE, 0},
|
IO_SIZE, 0},
|
||||||
{"key_cache_age_threshold", OPT_KEY_CACHE_AGE_THRESHOLD,
|
{"key_cache_age_threshold", OPT_KEY_CACHE_AGE_THRESHOLD,
|
||||||
"This characterizes the number of hits a hot block has to be untouched "
|
"This characterizes the number of hits a hot block has to be untouched "
|
||||||
|
@ -265,6 +265,7 @@ public:
|
|||||||
|
|
||||||
virtual bool reverse_sorted() = 0;
|
virtual bool reverse_sorted() = 0;
|
||||||
virtual bool unique_key_range() { return false; }
|
virtual bool unique_key_range() { return false; }
|
||||||
|
virtual bool clustered_pk_range() { return false; }
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
QS_TYPE_RANGE = 0,
|
QS_TYPE_RANGE = 0,
|
||||||
@ -533,6 +534,8 @@ public:
|
|||||||
THD *thd;
|
THD *thd;
|
||||||
int read_keys_and_merge();
|
int read_keys_and_merge();
|
||||||
|
|
||||||
|
bool clustered_pk_range() { return test(pk_quick_select); }
|
||||||
|
|
||||||
/* used to get rows collected in Unique */
|
/* used to get rows collected in Unique */
|
||||||
READ_RECORD read_record;
|
READ_RECORD read_record;
|
||||||
};
|
};
|
||||||
|
@ -194,6 +194,15 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
|
|||||||
|
|
||||||
if (select && my_b_inited(&select->file))
|
if (select && my_b_inited(&select->file))
|
||||||
tempfile= &select->file;
|
tempfile= &select->file;
|
||||||
|
else if (select && select->quick && select->quick->clustered_pk_range())
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
In case of QUICK_INDEX_MERGE_SELECT with clustered pk range we have to
|
||||||
|
use its own access method(i.e QUICK_INDEX_MERGE_SELECT::get_next()) as
|
||||||
|
sort file does not contain rowids which satisfy clustered pk range.
|
||||||
|
*/
|
||||||
|
tempfile= 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
tempfile= table->sort.io_cache;
|
tempfile= table->sort.io_cache;
|
||||||
if (tempfile && my_b_inited(tempfile)) // Test if ref-records was used
|
if (tempfile && my_b_inited(tempfile)) // Test if ref-records was used
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user