mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Auto-merge with mysql-5.1-bugteam.
This commit is contained in:
@ -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
|
|
@ -447,4 +447,7 @@ IF(
|
|||||||
count(*), 1)
|
count(*), 1)
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
select @v:=@v:=sum(1) from dual;
|
||||||
|
@v:=@v:=sum(1)
|
||||||
|
1
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -2599,6 +2599,46 @@ rows 3
|
|||||||
Extra Using index
|
Extra Using index
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# Bug#56862 Execution of a query that uses index merge returns a wrong result
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
INDEX idx(a))
|
||||||
|
ENGINE=INNODB;
|
||||||
|
INSERT INTO t1(a,b) VALUES
|
||||||
|
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
||||||
|
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
||||||
|
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
||||||
|
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
||||||
|
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1 VALUES (1000000, 0, 0);
|
||||||
|
SET SESSION sort_buffer_size = 1024*36;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
|
2 DERIVED t1 index_merge PRIMARY,idx idx,PRIMARY 5,4 NULL 3537 Using sort_union(idx,PRIMARY); Using where
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
COUNT(*)
|
||||||
|
1537
|
||||||
|
SET SESSION sort_buffer_size = DEFAULT;
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Test for bug #39932 "create table fails if column for FK is in different
|
# Test for bug #39932 "create table fails if column for FK is in different
|
||||||
|
@ -824,6 +824,48 @@ CREATE INDEX b ON t1(a,b,c,d);
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
--echo # Bug#56862 Execution of a query that uses index merge returns a wrong result
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
INDEX idx(a))
|
||||||
|
ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO t1(a,b) VALUES
|
||||||
|
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
||||||
|
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
||||||
|
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
||||||
|
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
||||||
|
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1 VALUES (1000000, 0, 0);
|
||||||
|
|
||||||
|
SET SESSION sort_buffer_size = 1024*36;
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
|
||||||
|
SET SESSION sort_buffer_size = DEFAULT;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -2400,4 +2400,42 @@ PACK_KEYS=0;
|
|||||||
CREATE INDEX a ON t1 (a);
|
CREATE INDEX a ON t1 (a);
|
||||||
CREATE INDEX c on t1 (c);
|
CREATE INDEX c on t1 (c);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
INDEX idx(a))
|
||||||
|
ENGINE=INNODB;
|
||||||
|
INSERT INTO t1(a,b) VALUES
|
||||||
|
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
||||||
|
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
||||||
|
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
||||||
|
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
||||||
|
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1 VALUES (1000000, 0, 0);
|
||||||
|
SET SESSION sort_buffer_size = 1024*36;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
|
2 DERIVED t1 index_merge PRIMARY,idx idx,PRIMARY 5,4 NULL 3537 Using sort_union(idx,PRIMARY); Using where
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
COUNT(*)
|
||||||
|
1537
|
||||||
|
SET SESSION sort_buffer_size = DEFAULT;
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -645,5 +645,48 @@ CREATE INDEX c on t1 (c);
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#56862 Execution of a query that uses index merge returns a wrong result
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
INDEX idx(a))
|
||||||
|
ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO t1(a,b) VALUES
|
||||||
|
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
||||||
|
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
||||||
|
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
||||||
|
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
||||||
|
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
||||||
|
INSERT INTO t1 VALUES (1000000, 0, 0);
|
||||||
|
|
||||||
|
SET SESSION sort_buffer_size = 1024*36;
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
|
||||||
|
SELECT COUNT(*) FROM
|
||||||
|
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
||||||
|
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||||
|
|
||||||
|
SET SESSION sort_buffer_size = DEFAULT;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -346,4 +346,11 @@ FROM t1 GROUP BY a LIMIT 1;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#56138 "valgrind errors about overlapping memory when
|
||||||
|
# double-assigning same variable"
|
||||||
|
#
|
||||||
|
|
||||||
|
select @v:=@v:=sum(1) from dual;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -786,11 +786,8 @@ int field_conv(Field *to,Field *from)
|
|||||||
((Field_varstring*)from)->length_bytes ==
|
((Field_varstring*)from)->length_bytes ==
|
||||||
((Field_varstring*)to)->length_bytes))
|
((Field_varstring*)to)->length_bytes))
|
||||||
{ // Identical fields
|
{ // Identical fields
|
||||||
#ifdef HAVE_purify
|
// to->ptr==from->ptr may happen if one does 'UPDATE ... SET x=x'
|
||||||
/* This may happen if one does 'UPDATE ... SET x=x' */
|
memmove(to->ptr, from->ptr, to->pack_length());
|
||||||
if (to->ptr != from->ptr)
|
|
||||||
#endif
|
|
||||||
memcpy(to->ptr,from->ptr,to->pack_length());
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3924,7 +3924,7 @@ update_hash(user_var_entry *entry, bool set_null, void *ptr, uint length,
|
|||||||
length--; // Fix length change above
|
length--; // Fix length change above
|
||||||
entry->value[length]= 0; // Store end \0
|
entry->value[length]= 0; // Store end \0
|
||||||
}
|
}
|
||||||
memcpy(entry->value,ptr,length);
|
memmove(entry->value, ptr, length);
|
||||||
if (type == DECIMAL_RESULT)
|
if (type == DECIMAL_RESULT)
|
||||||
((my_decimal*)entry->value)->fix_buffer_pointer();
|
((my_decimal*)entry->value)->fix_buffer_pointer();
|
||||||
entry->length= length;
|
entry->length= length;
|
||||||
|
@ -265,6 +265,7 @@ public:
|
|||||||
|
|
||||||
virtual bool reverse_sorted() = 0;
|
virtual bool reverse_sorted() = 0;
|
||||||
virtual bool unique_key_range() { return false; }
|
virtual bool unique_key_range() { return false; }
|
||||||
|
virtual bool clustered_pk_range() { return false; }
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
QS_TYPE_RANGE = 0,
|
QS_TYPE_RANGE = 0,
|
||||||
@ -533,6 +534,8 @@ public:
|
|||||||
THD *thd;
|
THD *thd;
|
||||||
int read_keys_and_merge();
|
int read_keys_and_merge();
|
||||||
|
|
||||||
|
bool clustered_pk_range() { return test(pk_quick_select); }
|
||||||
|
|
||||||
/* used to get rows collected in Unique */
|
/* used to get rows collected in Unique */
|
||||||
READ_RECORD read_record;
|
READ_RECORD read_record;
|
||||||
};
|
};
|
||||||
|
@ -194,6 +194,15 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
|
|||||||
|
|
||||||
if (select && my_b_inited(&select->file))
|
if (select && my_b_inited(&select->file))
|
||||||
tempfile= &select->file;
|
tempfile= &select->file;
|
||||||
|
else if (select && select->quick && select->quick->clustered_pk_range())
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
In case of QUICK_INDEX_MERGE_SELECT with clustered pk range we have to
|
||||||
|
use its own access method(i.e QUICK_INDEX_MERGE_SELECT::get_next()) as
|
||||||
|
sort file does not contain rowids which satisfy clustered pk range.
|
||||||
|
*/
|
||||||
|
tempfile= 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
tempfile= table->sort.io_cache;
|
tempfile= table->sort.io_cache;
|
||||||
if (tempfile && my_b_inited(tempfile)) // Test if ref-records was used
|
if (tempfile && my_b_inited(tempfile)) // Test if ref-records was used
|
||||||
|
@ -4044,8 +4044,12 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_purify
|
#if defined(__GNUC__) && !MY_GNUC_PREREQ(4,4)
|
||||||
/* Valgrind complains about overlapped memcpy when save_pos==use. */
|
/*
|
||||||
|
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)
|
if (save_pos != use)
|
||||||
#endif
|
#endif
|
||||||
*save_pos= *use;
|
*save_pos= *use;
|
||||||
|
Reference in New Issue
Block a user