Skip to content

Commit ade8d83

Browse files
author
Mattias Jonsson
committed
WL#4443 merged into latest mysql-trunk
2 parents a5cfaa3 + b3bed81 commit ade8d83

File tree

107 files changed

+9016
-2090
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+9016
-2090
lines changed

include/my_bitmap.h

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ extern my_bool bitmap_fast_test_and_set(MY_BITMAP *map, uint bitmap_bit);
5555
extern uint bitmap_set_next(MY_BITMAP *map);
5656
extern uint bitmap_get_first(const MY_BITMAP *map);
5757
extern uint bitmap_get_first_set(const MY_BITMAP *map);
58+
extern uint bitmap_get_next_set(const MY_BITMAP *map, uint bitmap_bit);
5859
extern uint bitmap_bits_set(const MY_BITMAP *map);
5960
extern void bitmap_free(MY_BITMAP *map);
6061
extern void bitmap_set_above(MY_BITMAP *map, uint from_byte, uint use_bit);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Default suites in modes normal, binlog format mixed/row,embedded and ps-protocol
2+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal-debug --vardir=var-normal-debug --report-features --skip-test-list=collections/disabled-daily.list --unit-tests
3+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=n_mix-debug --vardir=var-n_mix-debug --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-daily.list
4+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=row-debug --vardir=var-row-debug --mysqld=--binlog-format=row --skip-test-list=collections/disabled-daily.list
5+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps_row-debug --vardir=var-ps_row-debug --mysqld=--binlog-format=row --ps-protocol --skip-test-list=collections/disabled-daily.list
6+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=embedded-debug --vardir=var-embedded-debug --embedded
7+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps-debug --vardir=var-ps-debug --ps-protocol --skip-test-list=collections/disabled-daily.list
8+
9+
# From default.push
10+
perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --unit-tests
11+
perl mysql-test-run.pl --timer --force --parallel=auto --comment=main_ps_row --vardir=var-main-ps_row --suite=main,parts --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list
12+
perl mysql-test-run.pl --timer --force --parallel=auto --comment=main_embedded --vardir=var-main_emebbed --suite=main,parts --embedded --experimental=collections/default.experimental --skip-ndb
13+
# Partition specific
14+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --suite=parts --comment=parts-n_mix-debug --vardir=var-n_mix-debug --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-daily.list
15+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --suite=parts --comment=parts-row-debug --vardir=var-row-debug --mysqld=--binlog-format=row --skip-test-list=collections/disabled-daily.list
16+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --suite=parts --comment=parts-ps_row-debug --vardir=var-ps_row-debug --mysqld=--binlog-format=row --ps-protocol --skip-test-list=collections/disabled-daily.list
17+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --suite=parts --comment=parts-embedded-debug --vardir=var-embedded-debug --embedded
18+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --suite=parts --comment=parts-ps-debug --vardir=var-ps-debug --ps-protocol --skip-test-list=collections/disabled-daily.list
19+
20+
# Run the suites that are not part of the default - funcs_2, parts, stress, jp, nist
21+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=funcs2-debug --vardir=var-funcs2-debug --suite=funcs_2
22+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=partitions-debug --vardir=var-parts-debug --suite=parts
23+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=stress-debug --vardir=var-stress-debug --suite=stress
24+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=jp-debug --vardir=var-jp-debug --suite=jp
25+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=nist-debug --vardir=var-nist-debug --suite=nist
26+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=nist+ps-debug --vardir=var-ps_nist-debug --suite=nist --ps-protocol
27+
28+
# Additional modes for rpl and binlog suites. Checksum and relay-log-info-repository
29+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=rpl_binlog_checksum-debug --vardir=var-rpl_binlog_checksum-debug --suite=rpl,binlog --mysqld=--binlog-checksum=CRC32 --skip-test-list=collections/disabled-daily.list
30+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=rpl_crash_safe_relay-debug --vardir=var-rpl_crash_safe_relay-debug --suite=rpl --mysqld=--relay-log-info-repository=TABLE --skip-test-list=collections/disabled-daily.list
31+
#perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=rpl_crash_safe_master-debug --vardir=var-rpl_crash_safe_master-debug --suite=rpl --mysqld=--master-info-repository=TABLE --skip-test-list=collections/disabled-daily.list
32+
33+
# Additional modes for rpl. Multi-Threaded Slave
34+
perl mysql-test-run.pl --timer --force --parallel=auto --comment=rpl_binlog_n_mix_MTS --vardir=var-mts-rpl-binlog-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --unit-tests --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0 --suite=rpl
35+
perl mysql-test-run.pl --timer --force --parallel=auto --comment=rpl_binlog_ps_row_MTS --vardir=var-mts-rpl-binlog-ps_row --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0 --suite=rpl
36+
perl mysql-test-run.pl --timer --force --parallel=auto --comment=rpl_binlog_stmt_MTS --vardir=var-mts-rpl-binlog-stmt --mysqld=--binlog-format=statement --experimental=collections/default.experimental --skip-ndb --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0 --suite=rpl
37+
38+
# Additional runs for innodb-page-size=4k and 8k
39+
perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix_4k_size --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=4k --skip-test=innodb_ignore_builtin
40+
perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix_8k_size --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=8k --skip-test=innodb_ignore_builtin
41+
42+
#Engine independent tests
43+
#perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-row-tests-myisam-engine-debug --experimental=collections/default.experimental --vardir=var-binlog-row-eits-tests-myisam-engine-debug --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --do-test=rpl --mysqld=--binlog-format=row --skip-test-list=collections/disabled-daily.list
44+
#perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-mixed-tests-myisam-engine-debug --experimental=collections/default.experimental --vardir=var-binlog-mixed-eits-tests-myisam-engine-debug --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --do-test=rpl --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-daily.list
45+
#perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-row-tests-innodb-engine-debug --experimental=collections/default.experimental --vardir=var-binlog-row-eits-tests-innodb-engine-debug --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --do-test=rpl --mysqld=--binlog-format=row --skip-test-list=collections/disabled-daily.list
46+
#perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-mixed-tests-innodb-engine-debug --experimental=collections/default.experimental --vardir=var-binlog-mixed-eits-tests-innodb-engine-debug --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --do-test=rpl --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-daily.list
47+
#perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-tests-myisam-engine-debug --experimental=collections/default.experimental --vardir=var-stmt-eits-tests-myisam-engine-debug --suite=engines/iuds,engines/funcs --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --skip-test-list=collections/disabled-daily.list
48+
#perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-tests-innodb-engine-debug --experimental=collections/default.experimental --vardir=var-stmt-eits-tests-innodb-engine-debug --suite=engines/iuds,engines/funcs --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --skip-test-list=collections/disabled-daily.list
49+
perl mysql-test-run.pl --timer --force --parallel=auto --comment=eits-tests-innodb-engine-debug --experimental=collections/default.experimental --vardir=var-stmt-eits-tests-innodb-engine-debug --suite=engines/iuds,engines/funcs --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --skip-test-list=collections/disabled-daily.list

mysql-test/include/commit.inc

+7-3
Original file line numberDiff line numberDiff line change
@@ -750,8 +750,8 @@ call p_verify_status_increment(4, 4, 4, 4);
750750
--echo #
751751
--echo # Sic: no table is created.
752752
create table if not exists t2 (a int) select 6 union select 7;
753-
--echo # Sic: first commits the statement, and then the transaction.
754-
call p_verify_status_increment(2, 0, 2, 0);
753+
--echo # No table are locked before existing t2 is found, so nothing to commit.
754+
call p_verify_status_increment(0, 0, 0, 0);
755755
create table t3 select a from t2;
756756
call p_verify_status_increment(2, 0, 4, 4);
757757
alter table t3 add column (b int);
@@ -763,7 +763,11 @@ call p_verify_status_increment(0, 0, 0, 0);
763763
truncate table t3;
764764
call p_verify_status_increment(2, 0, 2, 0);
765765
create view v1 as select * from t2;
766-
call p_verify_status_increment(2, 0, 2, 0);
766+
call p_verify_status_increment(0, 0, 0, 0);
767+
select * from v1;
768+
call p_verify_status_increment(1, 0, 1, 0);
769+
commit;
770+
call p_verify_status_increment(1, 0, 1, 0);
767771
check table t1;
768772
call p_verify_status_increment(2, 0, 2, 0);
769773
--echo # Sic: after this bug is fixed, CHECK leaves no pending transaction

mysql-test/include/handler.inc

+31
Original file line numberDiff line numberDiff line change
@@ -1839,3 +1839,34 @@ HANDLER t1 READ FIRST WHERE f1() = 1;
18391839
HANDLER t1 CLOSE;
18401840
DROP FUNCTION f1;
18411841
DROP TABLE t1;
1842+
1843+
--echo #
1844+
--echo # Bug#13008220 HANDLER SQL STATEMENT CAN MISS TO INITIALIZE
1845+
--echo # FOR RANDOM READ
1846+
--echo #
1847+
1848+
CREATE TABLE t1(a INT, b INT, KEY b(b));
1849+
INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30);
1850+
HANDLER t1 OPEN;
1851+
HANDLER t1 READ b FIRST;
1852+
HANDLER t1 READ NEXT;
1853+
HANDLER t1 READ NEXT;
1854+
HANDLER t1 READ b FIRST;
1855+
HANDLER t1 READ b NEXT;
1856+
HANDLER t1 READ b NEXT;
1857+
HANDLER t1 READ FIRST;
1858+
HANDLER t1 READ b FIRST;
1859+
HANDLER t1 READ NEXT;
1860+
HANDLER t1 READ NEXT;
1861+
HANDLER t1 READ NEXT;
1862+
HANDLER t1 READ NEXT;
1863+
HANDLER t1 READ NEXT;
1864+
HANDLER t1 READ b NEXT;
1865+
HANDLER t1 READ b NEXT;
1866+
HANDLER t1 READ b NEXT;
1867+
HANDLER t1 READ b NEXT;
1868+
HANDLER t1 READ b NEXT;
1869+
HANDLER t1 READ NEXT;
1870+
HANDLER t1 READ b NEXT;
1871+
HANDLER t1 CLOSE;
1872+
DROP TABLE t1;

mysql-test/r/commit_1innodb.result

+14-3
Original file line numberDiff line numberDiff line change
@@ -827,8 +827,8 @@ SUCCESS
827827
create table if not exists t2 (a int) select 6 union select 7;
828828
Warnings:
829829
Note 1050 Table 't2' already exists
830-
# Sic: first commits the statement, and then the transaction.
831-
call p_verify_status_increment(2, 0, 2, 0);
830+
# No table are locked before existing t2 is found, so nothing to commit.
831+
call p_verify_status_increment(0, 0, 0, 0);
832832
SUCCESS
833833

834834
create table t3 select a from t2;
@@ -852,7 +852,18 @@ call p_verify_status_increment(2, 0, 2, 0);
852852
SUCCESS
853853

854854
create view v1 as select * from t2;
855-
call p_verify_status_increment(2, 0, 2, 0);
855+
call p_verify_status_increment(0, 0, 0, 0);
856+
SUCCESS
857+
858+
select * from v1;
859+
a
860+
8
861+
8
862+
call p_verify_status_increment(1, 0, 1, 0);
863+
SUCCESS
864+
865+
commit;
866+
call p_verify_status_increment(1, 0, 1, 0);
856867
SUCCESS
857868

858869
check table t1;

mysql-test/r/explain.result

+8-1
Original file line numberDiff line numberDiff line change
@@ -473,8 +473,15 @@ PREPARE s FROM
473473
'EXPLAIN EXTENDED
474474
SELECT SUBSTRING(1, (SELECT 1 FROM t1 a1 RIGHT OUTER JOIN t1 ON 0)) AS d
475475
FROM t1 WHERE 0 > ANY (SELECT @a FROM t1)';
476+
# After WL#4443 we don't evaluate subqueries during prepare, so no error.
476477
EXECUTE s;
477-
ERROR 21000: Subquery returns more than 1 row
478+
id select_type table type possible_keys key key_len ref rows filtered Extra
479+
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00 Using where
480+
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible HAVING
481+
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 NULL
482+
2 SUBQUERY a1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (Block Nested Loop)
483+
Warnings:
484+
Note 1003 /* select#1 */ select substr(1,(/* select#2 */ select 1 from `test`.`t1` left join `test`.`t1` `a1` on(0) where 1)) AS `d` from `test`.`t1` where <nop>(<in_optimizer>(0,<exists>(/* select#3 */ select 1 from `test`.`t1` where 1 having 0)))
478485
DEALLOCATE PREPARE s;
479486
DROP TABLE t1;
480487
#

mysql-test/r/grant_cache_no_prot.result

+2-2
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ Variable_name Value
176176
Qcache_hits 7
177177
show status like "Qcache_not_cached";
178178
Variable_name Value
179-
Qcache_not_cached 7
179+
Qcache_not_cached 4
180180
----- establish connection user4 (user=mysqltest_1) -----
181181
select "user4";
182182
user4
@@ -207,7 +207,7 @@ Variable_name Value
207207
Qcache_hits 8
208208
show status like "Qcache_not_cached";
209209
Variable_name Value
210-
Qcache_not_cached 8
210+
Qcache_not_cached 5
211211
----- close connections -----
212212
----- switch to connection default -----
213213
set names binary;

mysql-test/r/handler_innodb.result

+67
Original file line numberDiff line numberDiff line change
@@ -1744,3 +1744,70 @@ ERROR 42000: This version of MySQL doesn't yet support 'stored functions in HAND
17441744
HANDLER t1 CLOSE;
17451745
DROP FUNCTION f1;
17461746
DROP TABLE t1;
1747+
#
1748+
# Bug#13008220 HANDLER SQL STATEMENT CAN MISS TO INITIALIZE
1749+
# FOR RANDOM READ
1750+
#
1751+
CREATE TABLE t1(a INT, b INT, KEY b(b));
1752+
INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30);
1753+
HANDLER t1 OPEN;
1754+
HANDLER t1 READ b FIRST;
1755+
a b
1756+
1 10
1757+
HANDLER t1 READ NEXT;
1758+
a b
1759+
2 20
1760+
HANDLER t1 READ NEXT;
1761+
a b
1762+
1 10
1763+
HANDLER t1 READ b FIRST;
1764+
a b
1765+
1 10
1766+
HANDLER t1 READ b NEXT;
1767+
a b
1768+
2 20
1769+
HANDLER t1 READ b NEXT;
1770+
a b
1771+
3 30
1772+
HANDLER t1 READ FIRST;
1773+
a b
1774+
2 20
1775+
HANDLER t1 READ b FIRST;
1776+
a b
1777+
1 10
1778+
HANDLER t1 READ NEXT;
1779+
a b
1780+
2 20
1781+
HANDLER t1 READ NEXT;
1782+
a b
1783+
1 10
1784+
HANDLER t1 READ NEXT;
1785+
a b
1786+
4 40
1787+
HANDLER t1 READ NEXT;
1788+
a b
1789+
3 30
1790+
HANDLER t1 READ NEXT;
1791+
a b
1792+
HANDLER t1 READ b NEXT;
1793+
a b
1794+
1 10
1795+
HANDLER t1 READ b NEXT;
1796+
a b
1797+
2 20
1798+
HANDLER t1 READ b NEXT;
1799+
a b
1800+
3 30
1801+
HANDLER t1 READ b NEXT;
1802+
a b
1803+
4 40
1804+
HANDLER t1 READ b NEXT;
1805+
a b
1806+
HANDLER t1 READ NEXT;
1807+
a b
1808+
2 20
1809+
HANDLER t1 READ b NEXT;
1810+
a b
1811+
1 10
1812+
HANDLER t1 CLOSE;
1813+
DROP TABLE t1;

mysql-test/r/handler_myisam.result

+73
Original file line numberDiff line numberDiff line change
@@ -1741,6 +1741,73 @@ HANDLER t1 CLOSE;
17411741
DROP FUNCTION f1;
17421742
DROP TABLE t1;
17431743
#
1744+
# Bug#13008220 HANDLER SQL STATEMENT CAN MISS TO INITIALIZE
1745+
# FOR RANDOM READ
1746+
#
1747+
CREATE TABLE t1(a INT, b INT, KEY b(b));
1748+
INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30);
1749+
HANDLER t1 OPEN;
1750+
HANDLER t1 READ b FIRST;
1751+
a b
1752+
1 10
1753+
HANDLER t1 READ NEXT;
1754+
a b
1755+
2 20
1756+
HANDLER t1 READ NEXT;
1757+
a b
1758+
1 10
1759+
HANDLER t1 READ b FIRST;
1760+
a b
1761+
1 10
1762+
HANDLER t1 READ b NEXT;
1763+
a b
1764+
2 20
1765+
HANDLER t1 READ b NEXT;
1766+
a b
1767+
3 30
1768+
HANDLER t1 READ FIRST;
1769+
a b
1770+
2 20
1771+
HANDLER t1 READ b FIRST;
1772+
a b
1773+
1 10
1774+
HANDLER t1 READ NEXT;
1775+
a b
1776+
2 20
1777+
HANDLER t1 READ NEXT;
1778+
a b
1779+
1 10
1780+
HANDLER t1 READ NEXT;
1781+
a b
1782+
4 40
1783+
HANDLER t1 READ NEXT;
1784+
a b
1785+
3 30
1786+
HANDLER t1 READ NEXT;
1787+
a b
1788+
HANDLER t1 READ b NEXT;
1789+
a b
1790+
1 10
1791+
HANDLER t1 READ b NEXT;
1792+
a b
1793+
2 20
1794+
HANDLER t1 READ b NEXT;
1795+
a b
1796+
3 30
1797+
HANDLER t1 READ b NEXT;
1798+
a b
1799+
4 40
1800+
HANDLER t1 READ b NEXT;
1801+
a b
1802+
HANDLER t1 READ NEXT;
1803+
a b
1804+
2 20
1805+
HANDLER t1 READ b NEXT;
1806+
a b
1807+
1 10
1808+
HANDLER t1 CLOSE;
1809+
DROP TABLE t1;
1810+
#
17441811
# BUG #46456: HANDLER OPEN + TRUNCATE + DROP (temporary) TABLE, crash
17451812
#
17461813
CREATE TABLE t1 AS SELECT 1 AS f1;
@@ -1820,6 +1887,12 @@ HANDLER t1 READ b NEXT;
18201887
a b
18211888
HANDLER t1 READ NEXT;
18221889
a b
1890+
2 20
1891+
HANDLER t1 READ NEXT;
1892+
a b
1893+
1 10
1894+
HANDLER t1 READ NEXT;
1895+
a b
18231896
4 40
18241897
HANDLER t1 READ NEXT;
18251898
a b

mysql-test/r/innodb_explain_json_non_select_all.result

+15-7
Original file line numberDiff line numberDiff line change
@@ -5854,14 +5854,14 @@ INSERT INTO t2 VALUES (1), (2), (3);
58545854
EXPLAIN UPDATE t1 SET a = 10 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x);
58555855
id select_type table type possible_keys key key_len ref rows Extra
58565856
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
5857-
2 DEPENDENT SUBQUERY <derived3> ALL NULL NULL NULL NULL 3 Using where
5857+
2 DEPENDENT SUBQUERY <derived3> index_subquery auto_key0 auto_key0 5 func 2 Using index
58585858
3 DERIVED t2 ALL NULL NULL NULL NULL 3 Using filesort
58595859
FLUSH STATUS;
58605860
FLUSH TABLES;
58615861
EXPLAIN EXTENDED UPDATE t1 SET a = 10 WHERE a IN (SELECT * FROM (SELECT b FROM t2 ORDER BY b LIMIT 2,2) x);
58625862
id select_type table type possible_keys key key_len ref rows filtered Extra
58635863
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
5864-
2 DEPENDENT SUBQUERY <derived3> ALL NULL NULL NULL NULL 3 100.00 Using where
5864+
2 DEPENDENT SUBQUERY <derived3> index_subquery auto_key0 auto_key0 5 func 2 100.00 Using index
58655865
3 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort
58665866
# Status of EXPLAIN EXTENDED query
58675867
Variable_name Value
@@ -5885,10 +5885,18 @@ EXPLAIN
58855885
"select_id": 2,
58865886
"table": {
58875887
"table_name": "x",
5888-
"access_type": "ALL",
5889-
"rows": 3,
5888+
"access_type": "index_subquery",
5889+
"possible_keys": [
5890+
"auto_key0"
5891+
] /* possible_keys */,
5892+
"key": "auto_key0",
5893+
"key_length": "5",
5894+
"ref": [
5895+
"func"
5896+
] /* ref */,
5897+
"rows": 2,
58905898
"filtered": 100,
5891-
"attached_condition": "(<cache>(`test`.`t1`.`a`) = `x`.`b`)",
5899+
"using_index": true,
58925900
"materialized_from_subquery": {
58935901
"using_temporary_table": true,
58945902
"dependent": false,
@@ -5990,8 +5998,8 @@ Sort_scan 1
59905998
# Status of testing query execution:
59915999
Variable_name Value
59926000
Handler_read_first 2
5993-
Handler_read_key 2
5994-
Handler_read_rnd_next 13
6001+
Handler_read_key 5
6002+
Handler_read_rnd_next 8
59956003
Handler_update 1
59966004
Handler_write 1
59976005
Sort_rows 3

0 commit comments

Comments
 (0)