Skip to content

Commit 8977f70

Browse files
author
Sreeharsha Ramanavarapu
committed
Merge branch 'mysql-5.6' into mysql-5.7
2 parents 40c4732 + 3115f77 commit 8977f70

File tree

3 files changed

+38
-29
lines changed

3 files changed

+38
-29
lines changed

mysql-test/r/partition_locking.result

+22-22
Original file line numberDiff line numberDiff line change
@@ -5339,7 +5339,7 @@ id select_type table partitions type possible_keys key key_len ref rows filtered
53395339
1 SIMPLE t2 p1 const PRIMARY PRIMARY 4 const # 100.00 NULL
53405340
Warnings:
53415341
Warning 1681 'PARTITIONS' is deprecated and will be removed in a future release.
5342-
Note 1003 /* select#1 */ select '1' AS `a`,'1' AS `b` from `test`.`t2` where ('1' = `sf_a_from_t1b_d`('1'))
5342+
Note 1003 /* select#1 */ select '1' AS `a`,'1' AS `b` from `test`.`t2` where 1
53435343
FLUSH STATUS;
53445344
START TRANSACTION;
53455345
SELECT * FROM t2 WHERE a = sf_a_from_t1b_d('1');
@@ -5472,10 +5472,10 @@ HANDLER_WRITE 17
54725472
UNLOCK TABLES;
54735473
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2;
54745474
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
5475-
1 SIMPLE t2 p2 const PRIMARY PRIMARY 4 const # 100.00 NULL
5475+
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # NULL Impossible WHERE
54765476
Warnings:
54775477
Warning 1681 'PARTITIONS' is deprecated and will be removed in a future release.
5478-
Note 1003 /* select#1 */ select '2' AS `a`,'2' AS `b` from `test`.`t2` where ((2 = `sf_a_from_t1b_d`('1')))
5478+
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where 0
54795479
FLUSH STATUS;
54805480
START TRANSACTION;
54815481
SELECT * FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2;
@@ -5485,7 +5485,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
54855485
VARIABLE_NAME VARIABLE_VALUE
54865486
HANDLER_COMMIT 1
54875487
HANDLER_EXTERNAL_LOCK 4
5488-
HANDLER_READ_KEY 4
5488+
HANDLER_READ_KEY 3
54895489
HANDLER_READ_NEXT 1
54905490
HANDLER_WRITE 17
54915491
FLUSH STATUS;
@@ -5498,7 +5498,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
54985498
VARIABLE_NAME VARIABLE_VALUE
54995499
HANDLER_COMMIT 2
55005500
HANDLER_EXTERNAL_LOCK 2
5501-
HANDLER_READ_KEY 4
5501+
HANDLER_READ_KEY 3
55025502
HANDLER_READ_NEXT 1
55035503
HANDLER_WRITE 17
55045504
UNLOCK TABLES;
@@ -5705,7 +5705,7 @@ id select_type table partitions type possible_keys key key_len ref rows filtered
57055705
1 SIMPLE t2 p1 const PRIMARY PRIMARY 4 const # 100.00 NULL
57065706
Warnings:
57075707
Warning 1681 'PARTITIONS' is deprecated and will be removed in a future release.
5708-
Note 1003 /* select#1 */ select (`sf_add_1`('1') - 1) AS `sf_add_1(a) - 1`,`sf_add_hello`('1') AS `sf_add_hello(b)` from `test`.`t2` where ('1' = `sf_a_from_t1b_d`('1'))
5708+
Note 1003 /* select#1 */ select (`sf_add_1`('1') - 1) AS `sf_add_1(a) - 1`,`sf_add_hello`('1') AS `sf_add_hello(b)` from `test`.`t2` where 1
57095709
FLUSH STATUS;
57105710
START TRANSACTION;
57115711
SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b_d('1');
@@ -5838,10 +5838,10 @@ HANDLER_WRITE 17
58385838
UNLOCK TABLES;
58395839
EXPLAIN PARTITIONS SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2;
58405840
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
5841-
1 SIMPLE t2 p2 const PRIMARY PRIMARY 4 const # 100.00 NULL
5841+
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL # NULL Impossible WHERE
58425842
Warnings:
58435843
Warning 1681 'PARTITIONS' is deprecated and will be removed in a future release.
5844-
Note 1003 /* select#1 */ select (`sf_add_1`('2') - 1) AS `sf_add_1(a) - 1`,`sf_add_hello`('2') AS `sf_add_hello(b)` from `test`.`t2` where ((2 = `sf_a_from_t1b_d`('1')))
5844+
Note 1003 /* select#1 */ select (`sf_add_1`(`test`.`t2`.`a`) - 1) AS `sf_add_1(a) - 1`,`sf_add_hello`(`test`.`t2`.`b`) AS `sf_add_hello(b)` from `test`.`t2` where 0
58455845
FLUSH STATUS;
58465846
START TRANSACTION;
58475847
SELECT sf_add_1(a) - 1, sf_add_hello(b) FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2;
@@ -5851,7 +5851,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
58515851
VARIABLE_NAME VARIABLE_VALUE
58525852
HANDLER_COMMIT 1
58535853
HANDLER_EXTERNAL_LOCK 4
5854-
HANDLER_READ_KEY 4
5854+
HANDLER_READ_KEY 3
58555855
HANDLER_READ_NEXT 1
58565856
HANDLER_WRITE 17
58575857
FLUSH STATUS;
@@ -5864,7 +5864,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
58645864
VARIABLE_NAME VARIABLE_VALUE
58655865
HANDLER_COMMIT 2
58665866
HANDLER_EXTERNAL_LOCK 2
5867-
HANDLER_READ_KEY 4
5867+
HANDLER_READ_KEY 3
58685868
HANDLER_READ_NEXT 1
58695869
HANDLER_WRITE 17
58705870
UNLOCK TABLES;
@@ -6271,7 +6271,7 @@ ROLLBACK;
62716271
UNLOCK TABLES;
62726272
EXPLAIN PARTITIONS UPDATE t2 SET b = CONCAT('+', b) WHERE a = sf_a_from_t1b_d('1') AND a = 2;
62736273
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
6274-
1 UPDATE t2 p2 range PRIMARY PRIMARY 4 const # 100.00 Using where
6274+
1 UPDATE NULL NULL NULL NULL NULL NULL NULL # NULL Impossible WHERE
62756275
Warnings:
62766276
Warning 1681 'PARTITIONS' is deprecated and will be removed in a future release.
62776277
FLUSH STATUS;
@@ -6282,7 +6282,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
62826282
VARIABLE_NAME VARIABLE_VALUE
62836283
HANDLER_COMMIT 1
62846284
HANDLER_EXTERNAL_LOCK 4
6285-
HANDLER_READ_KEY 4
6285+
HANDLER_READ_KEY 3
62866286
HANDLER_READ_NEXT 1
62876287
HANDLER_WRITE 17
62886288
SELECT * FROM t2;
@@ -6300,7 +6300,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
63006300
VARIABLE_NAME VARIABLE_VALUE
63016301
HANDLER_COMMIT 2
63026302
HANDLER_EXTERNAL_LOCK 2
6303-
HANDLER_READ_KEY 4
6303+
HANDLER_READ_KEY 3
63046304
HANDLER_READ_NEXT 1
63056305
HANDLER_WRITE 17
63066306
SELECT * FROM t2;
@@ -6731,7 +6731,7 @@ ROLLBACK;
67316731
UNLOCK TABLES;
67326732
EXPLAIN PARTITIONS UPDATE t2 SET b = sf_add_hello(b) WHERE a = sf_a_from_t1b_d('1') AND a = 2;
67336733
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
6734-
1 UPDATE t2 p2 range PRIMARY PRIMARY 4 const # 100.00 Using where
6734+
1 UPDATE NULL NULL NULL NULL NULL NULL NULL # NULL Impossible WHERE
67356735
Warnings:
67366736
Warning 1681 'PARTITIONS' is deprecated and will be removed in a future release.
67376737
FLUSH STATUS;
@@ -6742,7 +6742,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
67426742
VARIABLE_NAME VARIABLE_VALUE
67436743
HANDLER_COMMIT 1
67446744
HANDLER_EXTERNAL_LOCK 4
6745-
HANDLER_READ_KEY 4
6745+
HANDLER_READ_KEY 3
67466746
HANDLER_READ_NEXT 1
67476747
HANDLER_WRITE 17
67486748
SELECT * FROM t2;
@@ -6760,7 +6760,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
67606760
VARIABLE_NAME VARIABLE_VALUE
67616761
HANDLER_COMMIT 2
67626762
HANDLER_EXTERNAL_LOCK 2
6763-
HANDLER_READ_KEY 4
6763+
HANDLER_READ_KEY 3
67646764
HANDLER_READ_NEXT 1
67656765
HANDLER_WRITE 17
67666766
SELECT * FROM t2;
@@ -7199,7 +7199,7 @@ ROLLBACK;
71997199
UNLOCK TABLES;
72007200
EXPLAIN PARTITIONS UPDATE t2 SET a = sf_add_1(a) + 4 WHERE a = sf_a_from_t1b_d('1') AND a = 2;
72017201
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
7202-
1 UPDATE t2 p2 range PRIMARY PRIMARY 4 const # 100.00 Using where; Using temporary
7202+
1 UPDATE NULL NULL NULL NULL NULL NULL NULL # NULL Impossible WHERE
72037203
Warnings:
72047204
Warning 1681 'PARTITIONS' is deprecated and will be removed in a future release.
72057205
FLUSH STATUS;
@@ -7210,7 +7210,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
72107210
VARIABLE_NAME VARIABLE_VALUE
72117211
HANDLER_COMMIT 1
72127212
HANDLER_EXTERNAL_LOCK 4
7213-
HANDLER_READ_KEY 4
7213+
HANDLER_READ_KEY 3
72147214
HANDLER_READ_NEXT 1
72157215
HANDLER_WRITE 17
72167216
SELECT * FROM t2;
@@ -7228,7 +7228,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
72287228
VARIABLE_NAME VARIABLE_VALUE
72297229
HANDLER_COMMIT 2
72307230
HANDLER_EXTERNAL_LOCK 2
7231-
HANDLER_READ_KEY 4
7231+
HANDLER_READ_KEY 3
72327232
HANDLER_READ_NEXT 1
72337233
HANDLER_WRITE 17
72347234
SELECT * FROM t2;
@@ -7650,7 +7650,7 @@ ROLLBACK;
76507650
UNLOCK TABLES;
76517651
EXPLAIN PARTITIONS DELETE FROM t2 WHERE a = sf_a_from_t1b_d('1') AND a = 2;
76527652
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
7653-
1 DELETE t2 p2 range PRIMARY PRIMARY 4 const # 100.00 Using where
7653+
1 DELETE NULL NULL NULL NULL NULL NULL NULL # NULL Impossible WHERE
76547654
Warnings:
76557655
Warning 1681 'PARTITIONS' is deprecated and will be removed in a future release.
76567656
FLUSH STATUS;
@@ -7661,7 +7661,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
76617661
VARIABLE_NAME VARIABLE_VALUE
76627662
HANDLER_COMMIT 1
76637663
HANDLER_EXTERNAL_LOCK 4
7664-
HANDLER_READ_KEY 4
7664+
HANDLER_READ_KEY 3
76657665
HANDLER_READ_NEXT 1
76667666
HANDLER_WRITE 17
76677667
SELECT * FROM t2;
@@ -7679,7 +7679,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0;
76797679
VARIABLE_NAME VARIABLE_VALUE
76807680
HANDLER_COMMIT 2
76817681
HANDLER_EXTERNAL_LOCK 2
7682-
HANDLER_READ_KEY 4
7682+
HANDLER_READ_KEY 3
76837683
HANDLER_READ_NEXT 1
76847684
HANDLER_WRITE 17
76857685
SELECT * FROM t2;

sql/item_func.cc

-7
Original file line numberDiff line numberDiff line change
@@ -493,8 +493,6 @@ void Item_func_sp::fix_after_pullout(SELECT_LEX *parent_select,
493493
doesn't reference any tables.
494494
*/
495495
used_tables_cache|= PARAM_TABLE_BIT;
496-
497-
const_item_cache= used_tables_cache == 0;
498496
}
499497

500498

@@ -8837,8 +8835,6 @@ Item_func_sp::fix_fields(THD *thd, Item **ref)
88378835

88388836
/* These is reset/set by Item_func::fix_fields. */
88398837
with_stored_program= true;
8840-
if (!m_sp->m_chistics->detistic || !tables_locked_cache)
8841-
const_item_cache= false;
88428838

88438839
if (res)
88448840
DBUG_RETURN(res);
@@ -8876,9 +8872,6 @@ void Item_func_sp::update_used_tables()
88768872
{
88778873
Item_func::update_used_tables();
88788874

8879-
if (!m_sp->m_chistics->detistic)
8880-
const_item_cache= false;
8881-
88828875
/* This is reset by Item_func::update_used_tables(). */
88838876
with_stored_program= true;
88848877
}

sql/item_func.h

+16
Original file line numberDiff line numberDiff line change
@@ -2808,6 +2808,22 @@ class Item_func_sp :public Item_func
28082808
}
28092809

28102810
virtual void update_null_value();
2811+
2812+
/**
2813+
Ensure that deterministic functions are not evaluated in preparation phase
2814+
by returning false before tables are locked and true after they are locked.
2815+
(can_be_evaluated_now() handles this because a function has the
2816+
has_subquery() property).
2817+
2818+
@retval true if tables are locked for deterministic functions
2819+
@retval false Otherwise
2820+
*/
2821+
bool const_item() const
2822+
{
2823+
if (used_tables() == 0)
2824+
return can_be_evaluated_now();
2825+
return false;
2826+
}
28112827
};
28122828

28132829

0 commit comments

Comments
 (0)