Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
743fd50d
Commit
743fd50d
authored
Nov 23, 2010
by
Ramil Kalimullin
Browse files
Options
Browse Files
Download
Plain Diff
Auto-merge with mysql-5.1-bugteam.
parents
b95f75f8
7704e3c2
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
2496 additions
and
1321 deletions
+2496
-1321
EXCEPTIONS-CLIENT
EXCEPTIONS-CLIENT
+0
-119
README
README
+2302
-1194
mysql-test/r/user_var.result
mysql-test/r/user_var.result
+3
-0
mysql-test/suite/innodb/r/innodb_mysql.result
mysql-test/suite/innodb/r/innodb_mysql.result
+40
-0
mysql-test/suite/innodb/t/innodb_mysql.test
mysql-test/suite/innodb/t/innodb_mysql.test
+42
-0
mysql-test/suite/innodb_plugin/r/innodb_mysql.result
mysql-test/suite/innodb_plugin/r/innodb_mysql.result
+38
-0
mysql-test/suite/innodb_plugin/t/innodb_mysql.test
mysql-test/suite/innodb_plugin/t/innodb_mysql.test
+43
-0
mysql-test/t/user_var.test
mysql-test/t/user_var.test
+7
-0
sql/field_conv.cc
sql/field_conv.cc
+2
-5
sql/item_func.cc
sql/item_func.cc
+1
-1
sql/opt_range.h
sql/opt_range.h
+3
-0
sql/records.cc
sql/records.cc
+9
-0
sql/sql_select.cc
sql/sql_select.cc
+6
-2
No files found.
EXCEPTIONS-CLIENT
deleted
100644 → 0
View file @
b95f75f8
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
README
View file @
743fd50d
This source diff could not be displayed because it is too large. You can
view the blob
instead.
mysql-test/r/user_var.result
View file @
743fd50d
...
...
@@ -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
mysql-test/suite/innodb/r/innodb_mysql.result
View file @
743fd50d
...
...
@@ -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
...
...
mysql-test/suite/innodb/t/innodb_mysql.test
View file @
743fd50d
...
...
@@ -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
...
...
mysql-test/suite/innodb_plugin/r/innodb_mysql.result
View file @
743fd50d
...
...
@@ -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
mysql-test/suite/innodb_plugin/t/innodb_mysql.test
View file @
743fd50d
...
...
@@ -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
mysql-test/t/user_var.test
View file @
743fd50d
...
...
@@ -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
sql/field_conv.cc
View file @
743fd50d
...
...
@@ -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
;
}
}
...
...
sql/item_func.cc
View file @
743fd50d
...
...
@@ -3924,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
}
mem
cpy
(
entry
->
value
,
ptr
,
length
);
mem
move
(
entry
->
value
,
ptr
,
length
);
if
(
type
==
DECIMAL_RESULT
)
((
my_decimal
*
)
entry
->
value
)
->
fix_buffer_pointer
();
entry
->
length
=
length
;
...
...
sql/opt_range.h
View file @
743fd50d
...
...
@@ -265,6 +265,7 @@ class QUICK_SELECT_I
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 @@ class QUICK_INDEX_MERGE_SELECT : public QUICK_SELECT_I
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
;
};
...
...
sql/records.cc
View file @
743fd50d
...
...
@@ -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
...
...
sql/sql_select.cc
View file @
743fd50d
...
...
@@ -4044,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
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment