mirror of
https://github.com/MariaDB/server.git
synced 2026-05-06 23:25:34 +02:00
Merge mysql-5.1-bugteam -> mysql-5.1-innodb
This commit is contained in:
commit
e7e74cb620
98 changed files with 4125 additions and 1545 deletions
|
|
@ -42,8 +42,7 @@ ADD_DEFINITIONS(-DSHAREDIR="share")
|
|||
# Set debug options
|
||||
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
|
||||
${CMAKE_SOURCE_DIR}/support-files/my-huge.ini @ONLY)
|
||||
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
|
||||
EXTRA_DIST = INSTALL-SOURCE INSTALL-WIN-SOURCE \
|
||||
README COPYING EXCEPTIONS-CLIENT CMakeLists.txt
|
||||
README COPYING CMakeLists.txt
|
||||
|
||||
SUBDIRS = . include @docs_dirs@ @zlib_dir@ \
|
||||
@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,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"one-database", 'o',
|
||||
"Only update the default database. This is useful for skipping updates "
|
||||
"to other database in the update log.",
|
||||
"Ignore statements except those that occur while the default "
|
||||
"database is the one named at the command line.",
|
||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#ifdef USE_POPEN
|
||||
{"pager", OPT_PAGER,
|
||||
|
|
@ -2736,6 +2736,10 @@ static void get_current_db()
|
|||
{
|
||||
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));
|
||||
current_db= 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);
|
||||
VAR* var_get(const char *var_name, const char** var_name_end,
|
||||
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);
|
||||
void dump_result_to_reject_file(char *buf, int size);
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
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");
|
||||
|
|
@ -2414,7 +2415,7 @@ void eval_expr(VAR *v, const char *p, const char **p_end)
|
|||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
if (*p == '`')
|
||||
if (*p == '`' && backtick)
|
||||
{
|
||||
var_query_set(v, p, p_end);
|
||||
DBUG_VOID_RETURN;
|
||||
|
|
@ -5439,7 +5440,9 @@ void do_block(enum block_cmd cmd, struct st_command* command)
|
|||
if (*expr_start == '!')
|
||||
{
|
||||
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 ')' */
|
||||
expr_end= strrchr(expr_start, ')');
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ dnl
|
|||
dnl When changing the major version number please also check the switch
|
||||
dnl statement in mysqlbinlog::check_master_version(). You may also need
|
||||
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_CANONICAL_SYSTEM
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ extern "C" {
|
|||
extern void *(*my_str_malloc)(size_t);
|
||||
extern void (*my_str_free)(void *);
|
||||
|
||||
#if defined(HAVE_STPCPY) && MY_GNUC_PREREQ(3, 4)
|
||||
#if defined(HAVE_STPCPY) && MY_GNUC_PREREQ(3, 4) && !defined(__INTEL_COMPILER)
|
||||
#define strmov(A,B) __builtin_stpcpy((A),(B))
|
||||
#elif defined(HAVE_STPCPY)
|
||||
#define strmov(A,B) stpcpy((A),(B))
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
# published by the Free Software Foundation.
|
||||
#
|
||||
# There are special exceptions to the terms and conditions of the GPL as it
|
||||
# is applied to this software. View the full text of the exception in file
|
||||
# EXCEPTIONS-CLIENT in the directory of this software distribution.
|
||||
# is applied to this software.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
# published by the Free Software Foundation.
|
||||
#
|
||||
# There are special exceptions to the terms and conditions of the GPL as it
|
||||
# is applied to this software. View the full text of the exception in file
|
||||
# EXCEPTIONS-CLIENT in the directory of this software distribution.
|
||||
# is applied to this software.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
the Free Software Foundation.
|
||||
|
||||
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
|
||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
||||
is applied to this software.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
the Free Software Foundation.
|
||||
|
||||
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
|
||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
||||
is applied to this software.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
the Free Software Foundation.
|
||||
|
||||
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
|
||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
||||
is applied to this software.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
the Free Software Foundation.
|
||||
|
||||
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
|
||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
||||
is applied to this software.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
the Free Software Foundation.
|
||||
|
||||
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
|
||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
||||
is applied to this software.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
the Free Software Foundation.
|
||||
|
||||
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
|
||||
EXCEPTIONS-CLIENT in the directory of this software distribution.
|
||||
is applied to this software.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
# published by the Free Software Foundation.
|
||||
#
|
||||
# There are special exceptions to the terms and conditions of the GPL as it
|
||||
# is applied to this software. View the full text of the exception in file
|
||||
# EXCEPTIONS-CLIENT in the directory of this software distribution.
|
||||
# is applied to this software.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
|
|
|||
|
|
@ -302,5 +302,58 @@ BINLOG '
|
|||
SHOW BINLOG EVENTS;
|
||||
|
||||
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;
|
||||
|
||||
|
|
|
|||
|
|
@ -53,9 +53,7 @@ source include/wait_for_slave_to_start.inc;
|
|||
connection master;
|
||||
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
||||
# it until it's told to
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
wait
|
||||
EOF
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Send shutdown to the connected server and give
|
||||
# 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";
|
||||
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
restart
|
||||
EOF
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
connection master;
|
||||
# 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
|
||||
# it until it's told to
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
wait
|
||||
EOF
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Send shutdown to the connected server and give
|
||||
# it 10 seconds to die before zapping it
|
||||
shutdown_server 10;
|
||||
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
restart
|
||||
EOF
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Turn on reconnect
|
||||
--enable_reconnect
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ sub collect_test_cases ($$$) {
|
|||
{
|
||||
last unless $opt_reorder;
|
||||
# test->{name} is always in suite.name format
|
||||
if ( $test->{name} =~ /.*\.$tname/ )
|
||||
if ( $test->{name} =~ /^$sname.*\.$tname$/ )
|
||||
{
|
||||
$found= 1;
|
||||
last;
|
||||
|
|
|
|||
|
|
@ -569,7 +569,10 @@ sub run_test_server ($$$) {
|
|||
if ( !$opt_force ) {
|
||||
# Test has failed, force is off
|
||||
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
|
||||
$num_failed_test >= $opt_max_test_fail) {
|
||||
|
|
@ -809,13 +812,14 @@ sub run_worker ($) {
|
|||
elsif ($line eq 'BYE'){
|
||||
mtr_report("Server said BYE");
|
||||
stop_all_servers($opt_shutdown_timeout);
|
||||
my $valgrind_reports= 0;
|
||||
if ($opt_valgrind_mysqld) {
|
||||
valgrind_exit_reports();
|
||||
$valgrind_reports= valgrind_exit_reports();
|
||||
}
|
||||
if ( $opt_gprof ) {
|
||||
gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
|
||||
}
|
||||
exit(0);
|
||||
exit($valgrind_reports);
|
||||
}
|
||||
else {
|
||||
mtr_error("Could not understand server, '$line'");
|
||||
|
|
@ -3680,7 +3684,6 @@ sub run_testcase ($) {
|
|||
# ----------------------------------------------------
|
||||
# Check if it was an expected crash
|
||||
# ----------------------------------------------------
|
||||
SRVDIED:
|
||||
my $check_crash = check_expected_crash_and_restart($proc);
|
||||
if ($check_crash)
|
||||
{
|
||||
|
|
@ -3690,6 +3693,7 @@ sub run_testcase ($) {
|
|||
next;
|
||||
}
|
||||
|
||||
SRVDIED:
|
||||
# ----------------------------------------------------
|
||||
# Stop the test case timer
|
||||
# ----------------------------------------------------
|
||||
|
|
@ -4239,7 +4243,12 @@ sub after_failure ($) {
|
|||
sub report_failure_and_restart ($) {
|
||||
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';
|
||||
|
||||
|
|
@ -5366,6 +5375,8 @@ sub valgrind_arguments {
|
|||
#
|
||||
|
||||
sub valgrind_exit_reports() {
|
||||
my $found_err= 0;
|
||||
|
||||
foreach my $log_file (keys %mysqld_logs)
|
||||
{
|
||||
my @culprits= ();
|
||||
|
|
@ -5401,7 +5412,7 @@ sub valgrind_exit_reports() {
|
|||
next;
|
||||
}
|
||||
# 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) {
|
||||
$line=~ s/^==\d+== //;
|
||||
|
|
@ -5418,8 +5429,11 @@ sub valgrind_exit_reports() {
|
|||
mtr_print ("Valgrind report from $log_file after tests:\n", @culprits);
|
||||
mtr_print_line();
|
||||
print ("$valgrind_rep\n");
|
||||
$found_err= 1;
|
||||
}
|
||||
}
|
||||
|
||||
return $found_err;
|
||||
}
|
||||
|
||||
#
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ change_user
|
|||
SELECT @@session.sql_big_selects;
|
||||
@@session.sql_big_selects
|
||||
0
|
||||
SET @@global.max_join_size = -1;
|
||||
SET @@global.max_join_size = 18446744073709551615;
|
||||
SET @@session.max_join_size = default;
|
||||
change_user
|
||||
SELECT @@session.sql_big_selects;
|
||||
|
|
|
|||
|
|
@ -215,6 +215,17 @@ SET GLOBAL event_scheduler = OFF;
|
|||
|
||||
# -- 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
|
||||
# ------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -70,3 +70,311 @@ we_ivo NULL
|
|||
we_martin NULL
|
||||
we_toshko NULL
|
||||
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
|
||||
DROP TABLE t1;
|
||||
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
|
||||
1 SIMPLE t1 ref c2,c2_2 c2 10 const,const 3 Using where
|
||||
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.
|
||||
|
|
|
|||
|
|
@ -644,4 +644,40 @@ Table Op Msg_type Msg_text
|
|||
test.t1 repair status OK
|
||||
SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1029,4 +1029,12 @@ GROUP_CONCAT(t1.a ORDER BY t1.a)
|
|||
1,1,2,2
|
||||
DEALLOCATE PREPARE stmt;
|
||||
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
|
||||
|
|
|
|||
|
|
@ -482,4 +482,20 @@ RAND(i)
|
|||
0.155220427694936
|
||||
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
|
||||
|
|
|
|||
|
|
@ -351,4 +351,10 @@ GREATEST(a, (SELECT b FROM t1 LIMIT 1))
|
|||
3
|
||||
1
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1845,4 +1845,14 @@ SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
|||
SUBSTRING(a,1,10) LENGTH(a)
|
||||
1111111111 1300
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1397,4 +1397,34 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
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
|
||||
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
|
||||
|
|
|
|||
|
|
@ -334,8 +334,7 @@ test.t1 check status OK
|
|||
DROP TABLE t1,t2;
|
||||
set global key_cache_block_size= @my_key_cache_block_size;
|
||||
set @@global.key_buffer_size=0;
|
||||
Warnings:
|
||||
Warning 1438 Cannot drop default keycache
|
||||
ERROR HY000: Cannot drop default keycache
|
||||
select @@global.key_buffer_size;
|
||||
@@global.key_buffer_size
|
||||
2097152
|
||||
|
|
|
|||
|
|
@ -235,4 +235,75 @@ Bug #47147: mysql client option --skip-column-names does not apply to vertical o
|
|||
*************************** 1. row ***************************
|
||||
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
|
||||
#
|
||||
SHOW TABLES IN test;
|
||||
Tables_in_test
|
||||
table_in_test
|
||||
DROP DATABASE test;
|
||||
|
||||
CREATE DATABASE test;
|
||||
SHOW TABLES IN test;
|
||||
Tables_in_test
|
||||
table_in_test
|
||||
DROP DATABASE test;
|
||||
CREATE DATABASE test;
|
||||
|
||||
End of tests
|
||||
|
|
|
|||
|
|
@ -308,6 +308,10 @@ var3 two columns with same name
|
|||
var4 from query that returns NULL
|
||||
var5 from query that returns no row
|
||||
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: Missing required argument 'filename' to command 'source'
|
||||
mysqltest: At line 1: Could not open './non_existingFile' for reading, errno: 2
|
||||
|
|
@ -398,7 +402,9 @@ true-inner
|
|||
true-inner again
|
||||
true-outer
|
||||
Counter is greater than 0, (counter=10)
|
||||
Counter should still be 10, is 10
|
||||
Counter is not 0, (counter=0)
|
||||
Not space var works
|
||||
Counter is true, (counter=alpha)
|
||||
Beta is true
|
||||
while with string, only once
|
||||
|
|
|
|||
|
|
@ -1,5 +1,31 @@
|
|||
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)
|
||||
#
|
||||
CREATE TABLE t1 (a INT NOT NULL)
|
||||
|
|
@ -387,3 +413,9 @@ a b
|
|||
3 2003-03-03
|
||||
COMMIT;
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -447,4 +447,7 @@ IF(
|
|||
count(*), 1)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
select @v:=@v:=sum(1) from dual;
|
||||
@v:=@v:=sum(1)
|
||||
1
|
||||
End of 5.1 tests
|
||||
|
|
|
|||
|
|
@ -1511,4 +1511,37 @@ SELECT @@skip_name_resolve;
|
|||
SHOW VARIABLES LIKE 'skip_name_resolve';
|
||||
Variable_name Value
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1330,3 +1330,62 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||
# # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||
# # Query 1 # COMMIT
|
||||
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
|
||||
# # Query 1 # COMMIT
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -2599,6 +2599,46 @@ rows 3
|
|||
Extra Using index
|
||||
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
|
||||
#
|
||||
# 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;
|
||||
|
||||
--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
|
||||
|
|
|
|||
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 c on t1 (c);
|
||||
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
|
||||
|
|
|
|||
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;
|
||||
|
||||
#
|
||||
# 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
|
||||
|
|
|
|||
|
|
@ -313,9 +313,7 @@ FLUSH LOGS;
|
|||
|
||||
# Stop master server
|
||||
--echo --> Stop master server
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
wait
|
||||
EOF
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server 10
|
||||
--source include/wait_until_disconnected.inc
|
||||
# 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;
|
||||
|
||||
--echo --> Start master server
|
||||
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
restart
|
||||
EOF
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
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;
|
||||
# On some machines the following will result into a warning
|
||||
--disable_warnings
|
||||
SET @@global.max_join_size = -1;
|
||||
SET @@global.max_join_size = 18446744073709551615;
|
||||
--enable_warnings
|
||||
SET @@session.max_join_size = default;
|
||||
--echo change_user
|
||||
|
|
|
|||
|
|
@ -293,6 +293,34 @@ SET GLOBAL event_scheduler = OFF;
|
|||
--echo # -- End of Bug#35074.
|
||||
--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 # -- End of 5.1 tests
|
||||
--echo # ------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -48,3 +48,13 @@ select * from t1 where a like 'we_%';
|
|||
drop table t1;
|
||||
|
||||
# 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;
|
||||
|
||||
--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;
|
||||
|
||||
--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.
|
||||
|
|
|
|||
|
|
@ -585,4 +585,40 @@ REPAIR TABLE t1;
|
|||
SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
||||
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
|
||||
|
|
|
|||
|
|
@ -734,4 +734,16 @@ EXECUTE stmt;
|
|||
DEALLOCATE PREPARE stmt;
|
||||
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
|
||||
|
|
|
|||
|
|
@ -308,5 +308,11 @@ SELECT RAND(i) FROM t1;
|
|||
DROP TABLE t1;
|
||||
|
||||
--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
|
||||
|
|
|
|||
|
|
@ -479,4 +479,12 @@ SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
|
|||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug #57283: inet_ntoa() crashes
|
||||
#
|
||||
SELECT INET_NTOA(0);
|
||||
SELECT '1' IN ('1', INET_NTOA(0));
|
||||
|
||||
|
||||
--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;
|
||||
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
|
||||
|
|
|
|||
|
|
@ -981,4 +981,33 @@ EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
|
|||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
# (One cannot drop the default key cache.)
|
||||
#
|
||||
--error ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
|
||||
set @@global.key_buffer_size=0;
|
||||
select @@global.key_buffer_size;
|
||||
|
||||
|
|
|
|||
|
|
@ -412,5 +412,149 @@ drop table t1;
|
|||
--echo
|
||||
--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 'test' database exists and passed at commandline.
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/one_db_1.sql
|
||||
CREATE TABLE `table_in_test`(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 'test' database exists but dropped and recreated in load file.
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/one_db_2.sql
|
||||
DROP DATABASE test;
|
||||
CREATE DATABASE test;
|
||||
USE non_existent_db;
|
||||
# Following statements should be filtered out.
|
||||
CREATE TABLE `table_in_non_existent_db`(i INT);
|
||||
USE test;
|
||||
# Following statements should not be filtered out.
|
||||
CREATE TABLE `table_in_test`(i INT);
|
||||
EOF
|
||||
|
||||
--exec $MYSQL --one-database test < $MYSQLTEST_VARDIR/tmp/one_db_1.sql
|
||||
SHOW TABLES IN test;
|
||||
DROP DATABASE test;
|
||||
--echo
|
||||
CREATE DATABASE test;
|
||||
--exec $MYSQL --one-database test < $MYSQLTEST_VARDIR/tmp/one_db_2.sql
|
||||
SHOW TABLES IN test;
|
||||
DROP DATABASE test;
|
||||
CREATE DATABASE test;
|
||||
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/one_db_1.sql
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/one_db_2.sql
|
||||
|
||||
--echo
|
||||
--echo End of tests
|
||||
|
|
|
|||
|
|
@ -854,6 +854,13 @@ let $var2= `failing query`;
|
|||
echo $var2;
|
||||
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
|
||||
--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/let.sql 2>&1
|
||||
|
||||
|
|
@ -1131,6 +1138,11 @@ if (!$counter)
|
|||
{
|
||||
echo Counter is not 0, (counter=10);
|
||||
}
|
||||
if (! $counter)
|
||||
{
|
||||
let $counter=5;
|
||||
}
|
||||
echo Counter should still be 10, is $counter;
|
||||
let $counter=0;
|
||||
if($counter)
|
||||
{
|
||||
|
|
@ -1140,6 +1152,10 @@ if (!$counter)
|
|||
{
|
||||
echo Counter is not 0, (counter=0);
|
||||
}
|
||||
if (! $counter)
|
||||
{
|
||||
echo Not space var works;
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Test if with some non-numerics
|
||||
|
|
|
|||
|
|
@ -7,6 +7,30 @@ drop table if exists t1, t2;
|
|||
|
||||
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 # Bug#51830: Incorrect partition pruning on range partition (regression)
|
||||
--echo #
|
||||
|
|
@ -401,3 +425,16 @@ connection default;
|
|||
SELECT * FROM t1;
|
||||
COMMIT;
|
||||
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;
|
||||
|
||||
#
|
||||
# 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
|
||||
|
|
|
|||
|
|
@ -1255,4 +1255,48 @@ SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size;
|
|||
SELECT @@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
|
||||
|
|
|
|||
|
|
@ -113,7 +113,6 @@ int my_is_symlink(const char *filename __attribute__((unused)))
|
|||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Resolve all symbolic links in path
|
||||
'to' may be equal to 'filename'
|
||||
|
|
@ -146,8 +145,24 @@ int my_realpath(char *to, const char *filename,
|
|||
result= -1;
|
||||
}
|
||||
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
|
||||
my_load_path(to, filename, NullS);
|
||||
#endif
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -302,8 +302,8 @@ if [ x"$BASE_SYSTEM" != x"netware" ] ; then
|
|||
|
||||
# Copy readme and license files
|
||||
cp README Docs/INSTALL-BINARY $DEST/
|
||||
if [ -f COPYING -a -f EXCEPTIONS-CLIENT ] ; then
|
||||
cp COPYING EXCEPTIONS-CLIENT $DEST/
|
||||
if [ -f COPYING ] ; then
|
||||
cp COPYING $DEST/
|
||||
elif [ -f LICENSE.mysql ] ; then
|
||||
cp LICENSE.mysql $DEST/
|
||||
else
|
||||
|
|
@ -381,7 +381,7 @@ copyfileto()
|
|||
copyfileto $BASE/docs ChangeLog Docs/mysql.info
|
||||
|
||||
copyfileto $BASE COPYING COPYING.LIB README Docs/INSTALL-BINARY \
|
||||
EXCEPTIONS-CLIENT LICENSE.mysql
|
||||
LICENSE.mysql
|
||||
|
||||
# Non platform-specific bin dir files:
|
||||
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/
|
||||
|
||||
if [ -f COPYING ] ; then
|
||||
cp COPYING EXCEPTIONS-CLIENT $DESTDIR/
|
||||
cp COPYING $DESTDIR/
|
||||
cp COPYING $DESTDIR/Docs/
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -786,11 +786,8 @@ int field_conv(Field *to,Field *from)
|
|||
((Field_varstring*)from)->length_bytes ==
|
||||
((Field_varstring*)to)->length_bytes))
|
||||
{ // Identical fields
|
||||
#ifdef HAVE_purify
|
||||
/* This may happen if one does 'UPDATE ... SET x=x' */
|
||||
if (to->ptr != from->ptr)
|
||||
#endif
|
||||
memcpy(to->ptr,from->ptr,to->pack_length());
|
||||
// to->ptr==from->ptr may happen if one does 'UPDATE ... SET x=x'
|
||||
memmove(to->ptr, from->ptr, to->pack_length());
|
||||
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);
|
||||
|
||||
/* 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++)
|
||||
{
|
||||
|
|
@ -4535,6 +4539,7 @@ int ha_partition::partition_scan_set_up(uchar * buf, bool idx_read_flag)
|
|||
key not found.
|
||||
*/
|
||||
DBUG_PRINT("info", ("scan with no partition to scan"));
|
||||
table->status= STATUS_NOT_FOUND;
|
||||
DBUG_RETURN(HA_ERR_END_OF_FILE);
|
||||
}
|
||||
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)
|
||||
{
|
||||
DBUG_PRINT("info", ("scan with no partition to scan"));
|
||||
table->status= STATUS_NOT_FOUND;
|
||||
DBUG_RETURN(HA_ERR_END_OF_FILE);
|
||||
}
|
||||
if (start_part > m_part_spec.start_part)
|
||||
|
|
|
|||
|
|
@ -1363,9 +1363,13 @@ longlong Item_func_int_div::val_int()
|
|||
signal_divide_by_null();
|
||||
return 0;
|
||||
}
|
||||
return (unsigned_flag ?
|
||||
(ulonglong) value / (ulonglong) val2 :
|
||||
value / val2);
|
||||
|
||||
if (unsigned_flag)
|
||||
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)
|
||||
result= args[1]->unsigned_flag ?
|
||||
((ulonglong) value) % ((ulonglong) val2) : ((ulonglong) value) % val2;
|
||||
else
|
||||
result= args[1]->unsigned_flag ?
|
||||
value % ((ulonglong) val2) : value % val2;
|
||||
else result= args[1]->unsigned_flag ?
|
||||
value % ((ulonglong) val2) :
|
||||
(val2 == -1) ? 0 : value % val2;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -3920,7 +3924,7 @@ update_hash(user_var_entry *entry, bool set_null, void *ptr, uint length,
|
|||
length--; // Fix length change above
|
||||
entry->value[length]= 0; // Store end \0
|
||||
}
|
||||
memcpy(entry->value,ptr,length);
|
||||
memmove(entry->value, ptr, length);
|
||||
if (type == DECIMAL_RESULT)
|
||||
((my_decimal*)entry->value)->fix_buffer_pointer();
|
||||
entry->length= length;
|
||||
|
|
@ -4872,7 +4876,7 @@ void Item_func_get_system_var::fix_length_and_dec()
|
|||
decimals=0;
|
||||
break;
|
||||
case SHOW_LONGLONG:
|
||||
unsigned_flag= FALSE;
|
||||
unsigned_flag= TRUE;
|
||||
max_length= MY_INT64_NUM_DECIMAL_DIGITS;
|
||||
decimals=0;
|
||||
break;
|
||||
|
|
@ -5013,7 +5017,7 @@ longlong Item_func_get_system_var::val_int()
|
|||
{
|
||||
case SHOW_INT: get_sys_var_safe (uint);
|
||||
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_BOOL: get_sys_var_safe (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 */
|
||||
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;
|
||||
}
|
||||
|
||||
if (key == NO_SUCH_KEY)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1531,7 +1531,7 @@ public:
|
|||
join_key(0), ft_handler(0), table(0), master(0), concat_ws(0) { }
|
||||
void cleanup()
|
||||
{
|
||||
DBUG_ENTER("Item_func_match");
|
||||
DBUG_ENTER("Item_func_match::cleanup");
|
||||
Item_real_func::cleanup();
|
||||
if (!master && 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()))
|
||||
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= res->charpos((int) 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. */
|
||||
if ((ulonglong) 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()))
|
||||
{ // String to pad is big enough
|
||||
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)
|
||||
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();
|
||||
|
||||
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))))
|
||||
return 0; // Null value
|
||||
|
||||
str->set_charset(collation.collation);
|
||||
str->length(0);
|
||||
int4store(buf,n);
|
||||
|
||||
|
|
|
|||
|
|
@ -1906,21 +1906,26 @@ int subselect_single_select_engine::exec()
|
|||
DBUG_RETURN(join->error ? join->error : 1);
|
||||
}
|
||||
if (!select_lex->uncacheable && thd->lex->describe &&
|
||||
!(join->select_options & SELECT_DESCRIBE) &&
|
||||
join->need_tmp)
|
||||
!(join->select_options & SELECT_DESCRIBE))
|
||||
{
|
||||
item->update_used_tables();
|
||||
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
|
||||
by a simple select from the materialization temp table by optimize()
|
||||
called by EXPLAIN and we need to preserve the initial query structure
|
||||
so we can display it.
|
||||
*/
|
||||
select_lex->uncacheable|= UNCACHEABLE_EXPLAIN;
|
||||
select_lex->master_unit()->uncacheable|= UNCACHEABLE_EXPLAIN;
|
||||
if (join->init_save_join_tab())
|
||||
if (join->need_tmp && join->init_save_join_tab())
|
||||
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)
|
||||
{
|
||||
/* orig_args is not filled with valid values until fix_fields() */
|
||||
Item **pargs= fixed ? orig_args : args;
|
||||
str->append(STRING_WITH_LEN("group_concat("));
|
||||
if (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)
|
||||
str->append(',');
|
||||
pargs[i]->print(str, query_type);
|
||||
orig_args[i]->print(str, query_type);
|
||||
}
|
||||
if (arg_count_order)
|
||||
{
|
||||
|
|
@ -3419,7 +3417,7 @@ void Item_func_group_concat::print(String *str, enum_query_type query_type)
|
|||
{
|
||||
if (i)
|
||||
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)
|
||||
str->append(STRING_WITH_LEN(" ASC"));
|
||||
else
|
||||
|
|
|
|||
|
|
@ -6774,7 +6774,7 @@ thread is in the relay logs.",
|
|||
"as much as you can afford; 1GB on a 4GB machine that mainly runs MySQL is "
|
||||
"quite common.",
|
||||
&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},
|
||||
{"key_cache_age_threshold", OPT_KEY_CACHE_AGE_THRESHOLD,
|
||||
"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 unique_key_range() { return false; }
|
||||
virtual bool clustered_pk_range() { return false; }
|
||||
|
||||
enum {
|
||||
QS_TYPE_RANGE = 0,
|
||||
|
|
@ -533,6 +534,8 @@ public:
|
|||
THD *thd;
|
||||
int read_keys_and_merge();
|
||||
|
||||
bool clustered_pk_range() { return test(pk_quick_select); }
|
||||
|
||||
/* used to get rows collected in Unique */
|
||||
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))
|
||||
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
|
||||
tempfile= table->sort.io_cache;
|
||||
if (tempfile && my_b_inited(tempfile)) // Test if ref-records was used
|
||||
|
|
|
|||
|
|
@ -1423,44 +1423,6 @@ bool throw_bounds_warning(THD *thd, bool fixed, bool unsignd,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
check an unsigned user-supplied value for a systemvariable against bounds.
|
||||
|
||||
TODO: This is a wrapper function to call clipping from within an update()
|
||||
function. Calling bounds from within update() is fair game in theory,
|
||||
but we can only send warnings from in there, not errors, and besides,
|
||||
it violates our model of separating check from update phase.
|
||||
To avoid breaking out of the server with an ASSERT() in strict mode,
|
||||
we pretend we're not in strict mode when we go through here. Bug#43233
|
||||
was opened to remind us to replace this kludge with The Right Thing,
|
||||
which of course is to do the check in the actual check phase, and then
|
||||
throw an error or warning accordingly.
|
||||
|
||||
@param thd thread handle
|
||||
@param num the value to limit
|
||||
@param option_limits the bounds-record, or NULL if none
|
||||
*/
|
||||
static void bound_unsigned(THD *thd, ulonglong *num,
|
||||
const struct my_option *option_limits)
|
||||
{
|
||||
if (option_limits)
|
||||
{
|
||||
my_bool fixed = FALSE;
|
||||
ulonglong unadjusted= *num;
|
||||
|
||||
*num= getopt_ull_limit_value(unadjusted, option_limits, &fixed);
|
||||
|
||||
if (fixed)
|
||||
{
|
||||
ulong ssm= thd->variables.sql_mode;
|
||||
thd->variables.sql_mode&= ~MODE_STRICT_ALL_TABLES;
|
||||
throw_bounds_warning(thd, fixed, TRUE, option_limits->name, unadjusted);
|
||||
thd->variables.sql_mode= ssm;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Get unsigned system-variable.
|
||||
Negative value does not wrap around, but becomes zero.
|
||||
|
|
@ -1579,11 +1541,16 @@ void sys_var_long_ptr_global::set_default(THD *thd, enum_var_type type)
|
|||
}
|
||||
|
||||
|
||||
bool sys_var_ulonglong_ptr::check(THD *thd, set_var *var)
|
||||
{
|
||||
return get_unsigned(thd, var, 0, GET_ULL);
|
||||
}
|
||||
|
||||
|
||||
bool sys_var_ulonglong_ptr::update(THD *thd, set_var *var)
|
||||
{
|
||||
ulonglong tmp= var->save_result.ulonglong_value;
|
||||
pthread_mutex_lock(&LOCK_global_system_variables);
|
||||
bound_unsigned(thd, &tmp, option_limits);
|
||||
*value= (ulonglong) tmp;
|
||||
pthread_mutex_unlock(&LOCK_global_system_variables);
|
||||
return 0;
|
||||
|
|
@ -1675,25 +1642,30 @@ uchar *sys_var_thd_ulong::value_ptr(THD *thd, enum_var_type type,
|
|||
}
|
||||
|
||||
|
||||
bool sys_var_thd_ha_rows::check(THD *thd, set_var *var)
|
||||
{
|
||||
return get_unsigned(thd, var, max_system_variables.*offset,
|
||||
#ifdef BIG_TABLES
|
||||
GET_ULL
|
||||
#else
|
||||
GET_ULONG
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
bool sys_var_thd_ha_rows::update(THD *thd, set_var *var)
|
||||
{
|
||||
ulonglong tmp= var->save_result.ulonglong_value;
|
||||
|
||||
/* Don't use bigger value than given with --maximum-variable-name=.. */
|
||||
if ((ha_rows) tmp > max_system_variables.*offset)
|
||||
tmp= max_system_variables.*offset;
|
||||
|
||||
bound_unsigned(thd, &tmp, option_limits);
|
||||
|
||||
if (var->type == OPT_GLOBAL)
|
||||
{
|
||||
/* Lock is needed to make things safe on 32 bit systems */
|
||||
pthread_mutex_lock(&LOCK_global_system_variables);
|
||||
global_system_variables.*offset= (ha_rows) tmp;
|
||||
global_system_variables.*offset= (ha_rows)
|
||||
var->save_result.ulonglong_value;
|
||||
pthread_mutex_unlock(&LOCK_global_system_variables);
|
||||
}
|
||||
else
|
||||
thd->variables.*offset= (ha_rows) tmp;
|
||||
thd->variables.*offset= (ha_rows) var->save_result.ulonglong_value;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -2305,6 +2277,12 @@ uchar *sys_var_key_cache_param::value_ptr(THD *thd, enum_var_type type,
|
|||
}
|
||||
|
||||
|
||||
bool sys_var_key_buffer_size::check(THD *thd, set_var *var)
|
||||
{
|
||||
return get_unsigned(thd, var, 0, GET_ULL);
|
||||
}
|
||||
|
||||
|
||||
bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
||||
{
|
||||
ulonglong tmp= var->save_result.ulonglong_value;
|
||||
|
|
@ -2321,7 +2299,7 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
|||
|
||||
if (!key_cache)
|
||||
{
|
||||
/* Key cache didn't exists */
|
||||
/* Key cache didn't exist */
|
||||
if (!tmp) // Tried to delete cache
|
||||
goto end; // Ok, nothing to do
|
||||
if (!(key_cache= create_key_cache(base_name->str, base_name->length)))
|
||||
|
|
@ -2343,9 +2321,8 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
|||
{
|
||||
if (key_cache == dflt_key_cache)
|
||||
{
|
||||
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||
ER_WARN_CANT_DROP_DEFAULT_KEYCACHE,
|
||||
ER(ER_WARN_CANT_DROP_DEFAULT_KEYCACHE));
|
||||
error= 1;
|
||||
my_error(ER_WARN_CANT_DROP_DEFAULT_KEYCACHE, MYF(0));
|
||||
goto end; // Ignore default key cache
|
||||
}
|
||||
|
||||
|
|
@ -2371,7 +2348,6 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
|||
goto end;
|
||||
}
|
||||
|
||||
bound_unsigned(thd, &tmp, option_limits);
|
||||
key_cache->param_buff_size= (ulonglong) tmp;
|
||||
|
||||
/* If key cache didn't exist initialize it, else resize it */
|
||||
|
|
@ -2388,10 +2364,19 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
|
|||
|
||||
end:
|
||||
pthread_mutex_unlock(&LOCK_global_system_variables);
|
||||
|
||||
var->save_result.ulonglong_value = SIZE_T_MAX;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
bool sys_var_key_cache_long::check(THD *thd, set_var *var)
|
||||
{
|
||||
return get_unsigned(thd, var, 0, GET_ULONG);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@todo
|
||||
Abort if some other thread is changing the key cache.
|
||||
|
|
@ -2400,7 +2385,6 @@ end:
|
|||
*/
|
||||
bool sys_var_key_cache_long::update(THD *thd, set_var *var)
|
||||
{
|
||||
ulonglong tmp= var->value->val_int();
|
||||
LEX_STRING *base_name= &var->base;
|
||||
bool error= 0;
|
||||
|
||||
|
|
@ -2425,8 +2409,8 @@ bool sys_var_key_cache_long::update(THD *thd, set_var *var)
|
|||
if (key_cache->in_init)
|
||||
goto end;
|
||||
|
||||
bound_unsigned(thd, &tmp, option_limits);
|
||||
*((ulong*) (((char*) key_cache) + offset))= (ulong) tmp;
|
||||
*((ulong*) (((char*) key_cache) + offset))= (ulong)
|
||||
var->save_result.ulonglong_value;
|
||||
|
||||
/*
|
||||
Don't create a new key cache if it didn't exist
|
||||
|
|
|
|||
|
|
@ -196,6 +196,7 @@ public:
|
|||
sys_after_update_func func)
|
||||
:sys_var(name_arg,func), value(value_ptr_arg)
|
||||
{ chain_sys_var(chain); }
|
||||
bool check(THD *thd, set_var *var);
|
||||
bool update(THD *thd, set_var *var);
|
||||
void set_default(THD *thd, enum_var_type type);
|
||||
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
|
||||
|
|
@ -442,6 +443,7 @@ public:
|
|||
sys_after_update_func func)
|
||||
:sys_var_thd(name_arg,func), offset(offset_arg)
|
||||
{ chain_sys_var(chain); }
|
||||
bool check(THD *thd, set_var *var);
|
||||
bool update(THD *thd, set_var *var);
|
||||
void set_default(THD *thd, enum_var_type type);
|
||||
SHOW_TYPE show_type() { return SHOW_HA_ROWS; }
|
||||
|
|
@ -854,6 +856,7 @@ public:
|
|||
:sys_var_key_cache_param(chain, name_arg,
|
||||
offsetof(KEY_CACHE, param_buff_size))
|
||||
{}
|
||||
bool check(THD *thd, set_var *var);
|
||||
bool update(THD *thd, set_var *var);
|
||||
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
|
||||
};
|
||||
|
|
@ -865,6 +868,7 @@ public:
|
|||
sys_var_key_cache_long(sys_var_chain *chain, const char *name_arg, size_t offset_arg)
|
||||
:sys_var_key_cache_param(chain, name_arg, offset_arg)
|
||||
{}
|
||||
bool check(THD *thd, set_var *var);
|
||||
bool update(THD *thd, set_var *var);
|
||||
SHOW_TYPE show_type() { return SHOW_LONG; }
|
||||
};
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@
|
|||
0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005A 005B 005C 005D 005E 005F
|
||||
0060 0061 0062 0063 0064 0065 0066 0067 0068 0069 006A 006B 006C 006D 006E 006F
|
||||
0070 0071 0072 0073 0074 0075 0076 0077 0078 0079 007A 007B 007C 007D 007E 007F
|
||||
0402 0403 201A 0453 201E 2026 2020 2021 0000 2030 0409 2039 040A 040C 040B 040F
|
||||
0402 0403 201A 0453 201E 2026 2020 2021 20AC 2030 0409 2039 040A 040C 040B 040F
|
||||
0452 2018 2019 201C 201D 2022 2013 2014 0000 2122 0459 203A 045A 045C 045B 045F
|
||||
00A0 040E 045E 0408 00A4 0490 00A6 00A7 0401 00A9 0404 00AB 00AC 00AD 00AE 0407
|
||||
00B0 00B1 0406 0456 0491 00B5 00B6 00B7 0451 2116 0454 00BB 0458 0405 0455 0457
|
||||
|
|
|
|||
|
|
@ -50,6 +50,13 @@ void mysql_client_binlog_statement(THD* thd)
|
|||
}
|
||||
size_t decoded_len= base64_needed_decoded_length(coded_len);
|
||||
|
||||
/*
|
||||
thd->options will be changed when applying the event. But we don't expect
|
||||
it be changed permanently after BINLOG statement, so backup it first.
|
||||
It will be restored at the end of this function.
|
||||
*/
|
||||
ulonglong thd_options= thd->options;
|
||||
|
||||
/*
|
||||
Allocation
|
||||
*/
|
||||
|
|
@ -236,6 +243,7 @@ void mysql_client_binlog_statement(THD* thd)
|
|||
my_ok(thd);
|
||||
|
||||
end:
|
||||
thd->options= thd_options;
|
||||
rli->clear_tables_to_lock();
|
||||
my_free(buf, MYF(MY_ALLOW_ZERO_PTR));
|
||||
DBUG_VOID_RETURN;
|
||||
|
|
|
|||
|
|
@ -899,6 +899,19 @@ static int check_connection(THD *thd)
|
|||
user_len-= 2;
|
||||
}
|
||||
|
||||
/*
|
||||
Clip username to allowed length in characters (not bytes). This is
|
||||
mostly for backward compatibility.
|
||||
*/
|
||||
{
|
||||
CHARSET_INFO *cs= system_charset_info;
|
||||
int err;
|
||||
|
||||
user_len= (uint) cs->cset->well_formed_len(cs, user, user + user_len,
|
||||
USERNAME_CHAR_LENGTH, &err);
|
||||
user[user_len]= '\0';
|
||||
}
|
||||
|
||||
if (thd->main_security_ctx.user)
|
||||
x_free(thd->main_security_ctx.user);
|
||||
if (!(thd->main_security_ctx.user= my_strdup(user, MYF(MY_WME))))
|
||||
|
|
|
|||
|
|
@ -1713,6 +1713,9 @@ JOIN::reinit()
|
|||
func->clear();
|
||||
}
|
||||
|
||||
if (!(select_options & SELECT_DESCRIBE))
|
||||
init_ftfuncs(thd, select_lex, test(order));
|
||||
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
|
@ -2487,6 +2490,13 @@ mysql_select(THD *thd, Item ***rref_pointer_array,
|
|||
{
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
/*
|
||||
Original join tabs might be overwritten at first
|
||||
subselect execution. So we need to restore them.
|
||||
*/
|
||||
Item_subselect *subselect= select_lex->master_unit()->item;
|
||||
if (subselect && subselect->is_uncacheable() && join->reinit())
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -4034,8 +4044,12 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
|
|||
continue;
|
||||
}
|
||||
|
||||
#ifdef HAVE_purify
|
||||
/* Valgrind complains about overlapped memcpy when save_pos==use. */
|
||||
#if defined(__GNUC__) && !MY_GNUC_PREREQ(4,4)
|
||||
/*
|
||||
Old gcc used a memcpy(), which is undefined if save_pos==use:
|
||||
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19410
|
||||
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39480
|
||||
*/
|
||||
if (save_pos != use)
|
||||
#endif
|
||||
*save_pos= *use;
|
||||
|
|
@ -13202,6 +13216,8 @@ static bool
|
|||
list_contains_unique_index(TABLE *table,
|
||||
bool (*find_func) (Field *, void *), void *data)
|
||||
{
|
||||
if (table->pos_in_table_list->outer_join)
|
||||
return 0;
|
||||
for (uint keynr= 0; keynr < table->s->keys; keynr++)
|
||||
{
|
||||
if (keynr == table->s->primary_key ||
|
||||
|
|
@ -13215,7 +13231,7 @@ list_contains_unique_index(TABLE *table,
|
|||
key_part < key_part_end;
|
||||
key_part++)
|
||||
{
|
||||
if (key_part->field->maybe_null() ||
|
||||
if (key_part->field->real_maybe_null() ||
|
||||
!find_func(key_part->field, data))
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1981,6 +1981,7 @@ row_create_table_for_mysql(
|
|||
table already exists */
|
||||
|
||||
trx->error_state = DB_SUCCESS;
|
||||
dict_mem_table_free(table);
|
||||
}
|
||||
|
||||
que_graph_free((que_t*) que_node_get_parent(thr));
|
||||
|
|
|
|||
|
|
@ -86,9 +86,16 @@
|
|||
Fix Bug #57345 btr_pcur_store_position abort for load with
|
||||
concurrent lock/unlock tables
|
||||
|
||||
2010-10-11 The InnoDB Team
|
||||
|
||||
* row/row0mysql.c, innodb_bug56947.result, innodb_bug56947.test:
|
||||
Fix Bug #56947 InnoDB leaks memory when failing to create a table
|
||||
|
||||
2010-10-06 The InnoDB Team
|
||||
|
||||
* row/row0mysql.c, innodb_bug57255.result, innodb_bug57255.test
|
||||
Fix Bug #Cascade Delete results in "Got error -1 from storage engine"
|
||||
Fix Bug #57255 Cascade Delete results in "Got error -1 from
|
||||
storage engine"
|
||||
|
||||
2010-09-27 The InnoDB Team
|
||||
|
||||
|
|
|
|||
|
|
@ -1880,15 +1880,13 @@ err_exit:
|
|||
|
||||
err = trx->error_state;
|
||||
|
||||
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
|
||||
switch (err) {
|
||||
case DB_SUCCESS:
|
||||
break;
|
||||
case DB_OUT_OF_FILE_SPACE:
|
||||
trx->error_state = DB_SUCCESS;
|
||||
trx_general_rollback_for_mysql(trx, NULL);
|
||||
/* TO DO: free table? The code below will dereference
|
||||
table->name, though. */
|
||||
}
|
||||
|
||||
switch (err) {
|
||||
case DB_OUT_OF_FILE_SPACE:
|
||||
ut_print_timestamp(stderr);
|
||||
fputs(" InnoDB: Warning: cannot create table ",
|
||||
stderr);
|
||||
|
|
@ -1903,9 +1901,13 @@ err_exit:
|
|||
break;
|
||||
|
||||
case DB_DUPLICATE_KEY:
|
||||
default:
|
||||
/* We may also get err == DB_ERROR if the .ibd file for the
|
||||
table already exists */
|
||||
|
||||
trx->error_state = DB_SUCCESS;
|
||||
trx_general_rollback_for_mysql(trx, NULL);
|
||||
dict_mem_table_free(table);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -208,14 +208,11 @@ charpos() - calculates the offset of the given position in the string.
|
|||
Used in SQL functions LEFT(), RIGHT(), SUBSTRING(),
|
||||
INSERT()
|
||||
|
||||
well_formed_length()
|
||||
- finds the length of correctly formed multi-byte beginning.
|
||||
Used in INSERTs to cut a beginning of the given string
|
||||
which is
|
||||
a) "well formed" according to the given character set.
|
||||
well_formed_len()
|
||||
- returns length of a given multi-byte string in bytes
|
||||
Used in INSERTs to shorten the given string so it
|
||||
a) is "well formed" according to the given character set
|
||||
b) can fit into the given data type
|
||||
Terminates the string in the good position, taking in account
|
||||
multi-byte character boundaries.
|
||||
|
||||
lengthsp() - returns the length of the given string without trailing spaces.
|
||||
|
||||
|
|
|
|||
|
|
@ -1040,7 +1040,7 @@ uint16 to_uni_cp1251_bulgarian_ci[] = {
|
|||
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
|
||||
0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
|
||||
0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021,
|
||||
0x0000,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
|
||||
0x0000,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F,
|
||||
0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7,
|
||||
|
|
@ -1730,7 +1730,7 @@ uint16 to_uni_cp1251_ukrainian_ci[] = {
|
|||
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
|
||||
0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
|
||||
0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021,
|
||||
0x0000,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
|
||||
0x0000,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F,
|
||||
0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7,
|
||||
|
|
@ -3762,7 +3762,7 @@ uint16 to_uni_cp1251_bin[] = {
|
|||
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
|
||||
0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
|
||||
0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021,
|
||||
0x0000,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
|
||||
0x0000,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F,
|
||||
0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7,
|
||||
|
|
@ -3877,7 +3877,7 @@ uint16 to_uni_cp1251_general_ci[] = {
|
|||
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
|
||||
0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
|
||||
0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021,
|
||||
0x0000,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
|
||||
0x0000,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F,
|
||||
0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7,
|
||||
|
|
@ -3992,7 +3992,7 @@ uint16 to_uni_cp1251_general_cs[] = {
|
|||
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
|
||||
0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
|
||||
0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021,
|
||||
0x0000,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,
|
||||
0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
|
||||
0x0000,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F,
|
||||
0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7,
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
# This is for a large system with memory of 1G-2G where the system runs mainly
|
||||
# MySQL.
|
||||
#
|
||||
# You can copy this file to
|
||||
# /etc/my.cnf to set global options,
|
||||
# mysql-data-dir/my.cnf to set server-specific options (in this
|
||||
# installation this directory is @localstatedir@) or
|
||||
# ~/.my.cnf to set user-specific options.
|
||||
# MySQL programs look for option files in a set of
|
||||
# locations which depend on the deployment platform.
|
||||
# You can copy this option file to one of those
|
||||
# locations. For information about these locations, see:
|
||||
# http://dev.mysql.com/doc/mysql/en/option-files.html
|
||||
#
|
||||
# In this file, you can use all long options that a program supports.
|
||||
# If you want to know which options a program supports, run the program
|
||||
|
|
@ -113,14 +113,10 @@ server-id = 1
|
|||
# binary logging format - mixed recommended
|
||||
#binlog_format=mixed
|
||||
|
||||
# Point the following paths to different dedicated disks
|
||||
#tmpdir = /tmp/
|
||||
#log-update = /path-to-dedicated-directory/hostname
|
||||
|
||||
# Uncomment the following if you are using InnoDB tables
|
||||
#innodb_data_home_dir = @localstatedir@/
|
||||
#innodb_data_home_dir = @localstatedir@
|
||||
#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
|
||||
#innodb_log_group_home_dir = @localstatedir@/
|
||||
#innodb_log_group_home_dir = @localstatedir@
|
||||
# You can set .._buffer_pool_size up to 50 - 80 %
|
||||
# of RAM but beware of setting memory usage too high
|
||||
#innodb_buffer_pool_size = 384M
|
||||
|
|
|
|||
|
|
@ -8,10 +8,11 @@
|
|||
# running mostly MySQL using InnoDB only tables and performing complex
|
||||
# queries with few connections.
|
||||
#
|
||||
# You can copy this file to /etc/my.cnf to set global options,
|
||||
# mysql-data-dir/my.cnf to set server-specific options
|
||||
# (@localstatedir@ for this installation) or to
|
||||
# ~/.my.cnf to set user-specific options.
|
||||
# MySQL programs look for option files in a set of
|
||||
# locations which depend on the deployment platform.
|
||||
# You can copy this option file to one of those
|
||||
# locations. For information about these locations, see:
|
||||
# http://dev.mysql.com/doc/mysql/en/option-files.html
|
||||
#
|
||||
# In this file, you can use all long options that a program supports.
|
||||
# If you want to know which options a program supports, run the program
|
||||
|
|
@ -232,15 +233,6 @@ slow_query_log
|
|||
# currently measures time with second accuracy only).
|
||||
long_query_time = 2
|
||||
|
||||
# The directory used by MySQL for storing temporary files. For example,
|
||||
# it is used to perform disk based large sorts, as well as for internal
|
||||
# and explicit temporary tables. It might be good to put it on a
|
||||
# swapfs/tmpfs filesystem, if you do not create very large temporary
|
||||
# files. Alternatively you can put it on dedicated disk. You can
|
||||
# specify multiple paths here by separating them by ";" - they will then
|
||||
# be used in a round-robin fashion.
|
||||
#tmpdir = /tmp
|
||||
|
||||
|
||||
# *** Replication related settings
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
# This is for a large system with memory = 512M where the system runs mainly
|
||||
# MySQL.
|
||||
#
|
||||
# You can copy this file to
|
||||
# /etc/my.cnf to set global options,
|
||||
# mysql-data-dir/my.cnf to set server-specific options (in this
|
||||
# installation this directory is @localstatedir@) or
|
||||
# ~/.my.cnf to set user-specific options.
|
||||
# MySQL programs look for option files in a set of
|
||||
# locations which depend on the deployment platform.
|
||||
# You can copy this option file to one of those
|
||||
# locations. For information about these locations, see:
|
||||
# http://dev.mysql.com/doc/mysql/en/option-files.html
|
||||
#
|
||||
# In this file, you can use all long options that a program supports.
|
||||
# If you want to know which options a program supports, run the program
|
||||
|
|
@ -113,14 +113,10 @@ server-id = 1
|
|||
# binary logging - not required for slaves, but recommended
|
||||
#log-bin=mysql-bin
|
||||
|
||||
# Point the following paths to different dedicated disks
|
||||
#tmpdir = /tmp/
|
||||
#log-update = /path-to-dedicated-directory/hostname
|
||||
|
||||
# Uncomment the following if you are using InnoDB tables
|
||||
#innodb_data_home_dir = @localstatedir@/
|
||||
#innodb_data_home_dir = @localstatedir@
|
||||
#innodb_data_file_path = ibdata1:10M:autoextend
|
||||
#innodb_log_group_home_dir = @localstatedir@/
|
||||
#innodb_log_group_home_dir = @localstatedir@
|
||||
# You can set .._buffer_pool_size up to 50 - 80 %
|
||||
# of RAM but beware of setting memory usage too high
|
||||
#innodb_buffer_pool_size = 256M
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@
|
|||
# an important part, or systems up to 128M where MySQL is used together with
|
||||
# other programs (such as a web server)
|
||||
#
|
||||
# You can copy this file to
|
||||
# /etc/my.cnf to set global options,
|
||||
# mysql-data-dir/my.cnf to set server-specific options (in this
|
||||
# installation this directory is @localstatedir@) or
|
||||
# ~/.my.cnf to set user-specific options.
|
||||
# MySQL programs look for option files in a set of
|
||||
# locations which depend on the deployment platform.
|
||||
# You can copy this option file to one of those
|
||||
# locations. For information about these locations, see:
|
||||
# http://dev.mysql.com/doc/mysql/en/option-files.html
|
||||
#
|
||||
# In this file, you can use all long options that a program supports.
|
||||
# If you want to know which options a program supports, run the program
|
||||
|
|
@ -111,14 +111,10 @@ server-id = 1
|
|||
# binary logging - not required for slaves, but recommended
|
||||
#log-bin=mysql-bin
|
||||
|
||||
# Point the following paths to different dedicated disks
|
||||
#tmpdir = /tmp/
|
||||
#log-update = /path-to-dedicated-directory/hostname
|
||||
|
||||
# Uncomment the following if you are using InnoDB tables
|
||||
#innodb_data_home_dir = @localstatedir@/
|
||||
#innodb_data_home_dir = @localstatedir@
|
||||
#innodb_data_file_path = ibdata1:10M:autoextend
|
||||
#innodb_log_group_home_dir = @localstatedir@/
|
||||
#innodb_log_group_home_dir = @localstatedir@
|
||||
# You can set .._buffer_pool_size up to 50 - 80 %
|
||||
# of RAM but beware of setting memory usage too high
|
||||
#innodb_buffer_pool_size = 16M
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@
|
|||
# from time to time and it's important that the mysqld daemon
|
||||
# doesn't use much resources.
|
||||
#
|
||||
# You can copy this file to
|
||||
# /etc/my.cnf to set global options,
|
||||
# mysql-data-dir/my.cnf to set server-specific options (in this
|
||||
# installation this directory is @localstatedir@) or
|
||||
# ~/.my.cnf to set user-specific options.
|
||||
# MySQL programs look for option files in a set of
|
||||
# locations which depend on the deployment platform.
|
||||
# You can copy this option file to one of those
|
||||
# locations. For information about these locations, see:
|
||||
# http://dev.mysql.com/doc/mysql/en/option-files.html
|
||||
#
|
||||
# In this file, you can use all long options that a program supports.
|
||||
# If you want to know which options a program supports, run the program
|
||||
|
|
@ -52,9 +52,9 @@ server-id = 1
|
|||
#binlog_format=mixed
|
||||
|
||||
# Uncomment the following if you are using InnoDB tables
|
||||
#innodb_data_home_dir = @localstatedir@/
|
||||
#innodb_data_home_dir = @localstatedir@
|
||||
#innodb_data_file_path = ibdata1:10M:autoextend
|
||||
#innodb_log_group_home_dir = @localstatedir@/
|
||||
#innodb_log_group_home_dir = @localstatedir@
|
||||
# You can set .._buffer_pool_size up to 50 - 80 %
|
||||
# of RAM but beware of setting memory usage too high
|
||||
#innodb_buffer_pool_size = 16M
|
||||
|
|
|
|||
|
|
@ -1063,7 +1063,6 @@ fi
|
|||
|
||||
%files devel
|
||||
%defattr(-, root, root, 0755)
|
||||
%doc mysql-release-%{mysql_version}/EXCEPTIONS-CLIENT
|
||||
%doc %attr(644, root, man) %{_mandir}/man1/mysql_config.1*
|
||||
%attr(755, root, root) %{_bindir}/mysql_config
|
||||
%dir %attr(755, root, root) %{_includedir}/mysql
|
||||
|
|
@ -1134,6 +1133,10 @@ fi
|
|||
##############################################################################
|
||||
%changelog
|
||||
|
||||
* Wed Nov 24 2010 Alexander Nozdrin <alexander.nozdrin@oracle.com>
|
||||
|
||||
- EXCEPTIONS-CLIENT has been deleted, remove it from here too.
|
||||
|
||||
* Tue Jun 15 2010 Joerg Bruehe <joerg.bruehe@sun.com>
|
||||
|
||||
- Change the behaviour on upgrade:
|
||||
|
|
|
|||
|
|
@ -17125,7 +17125,7 @@ static void test_bug20023()
|
|||
|
||||
/* Set MAX_JOIN_SIZE to the default value (-1). */
|
||||
|
||||
DIE_IF(mysql_query(&con, "SET @@global.max_join_size = -1"));
|
||||
DIE_IF(mysql_query(&con, "SET @@global.max_join_size = 18446744073709551615"));
|
||||
DIE_IF(mysql_query(&con, "SET @@session.max_join_size = default"));
|
||||
|
||||
/* Issue COM_CHANGE_USER. */
|
||||
|
|
@ -17156,7 +17156,7 @@ static void test_bug20023()
|
|||
|
||||
DIE_IF(mysql_query(&con, query_buffer));
|
||||
|
||||
DIE_IF(mysql_query(&con, "SET @@global.max_join_size = -1"));
|
||||
DIE_IF(mysql_query(&con, "SET @@global.max_join_size = 18446744073709551615"));
|
||||
DIE_IF(mysql_query(&con, "SET @@session.max_join_size = default"));
|
||||
|
||||
/* Issue COM_CHANGE_USER. */
|
||||
|
|
|
|||
|
|
@ -101,8 +101,7 @@ try
|
|||
GetValue(configureIn, "DOT_FRM_VERSION") + "\")");
|
||||
configfile.WriteLine("SET (MYSQL_TCP_PORT_DEFAULT \"" + default_port + "\")");
|
||||
configfile.WriteLine("SET (MYSQL_TCP_PORT \"" + actual_port + "\")");
|
||||
configfile.WriteLine("SET (MYSQL_UNIX_ADDR \"" +
|
||||
GetValue(configureIn, "MYSQL_UNIX_ADDR_DEFAULT") + "\")");
|
||||
configfile.WriteLine("SET (MYSQL_UNIX_ADDR \"MySQL\")");
|
||||
var version = GetVersion(configureIn);
|
||||
configfile.WriteLine("SET (VERSION \"" + version + "\")");
|
||||
configfile.WriteLine("SET (MYSQL_BASE_VERSION \"" +
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue