[MDEV-8231] GROUP_MIN_MAX is not applied for LIKE Created: 2015-05-26  Updated: 2016-01-11

Status: Open
Project: MariaDB Server
Component/s: Optimizer
Affects Version/s: 5.5, 10.0, 10.1
Fix Version/s: 10.1

Type: Bug Priority: Minor
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Unresolved Votes: 0
Labels: None


 Description   

This script:

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (id INT NOT NULL, a VARCHAR(20), KEY(id,a)) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1,'01');
INSERT INTO t1 VALUES (1,'02');
INSERT INTO t1 VALUES (1,'03');
INSERT INTO t1 VALUES (1,'04');
INSERT INTO t1 VALUES (2,'01'); 
INSERT INTO t1 VALUES (2,'02'); 
INSERT INTO t1 VALUES (2,'03'); 
INSERT INTO t1 VALUES (2,'04');
INSERT INTO t1 VALUES (3,'01'); 
INSERT INTO t1 VALUES (3,'02'); 
INSERT INTO t1 VALUES (3,'03'); 
INSERT INTO t1 VALUES (3,'04');
INSERT INTO t1 VALUES (4,'01'); 
INSERT INTO t1 VALUES (4,'02'); 
INSERT INTO t1 VALUES (4,'03'); 
INSERT INTO t1 VALUES (4,'04');
EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a BETWEEN '04' AND '05' GROUP BY id;

returns

+------+-------------+-------+-------+---------------+------+---------+------+------+---------------------------------------+
| id   | select_type | table | type  | possible_keys | key  | key_len | ref  | rows | Extra                                 |
+------+-------------+-------+-------+---------------+------+---------+------+------+---------------------------------------+
|    1 | SIMPLE      | t1    | range | NULL          | id   | 27      | NULL |    9 | Using where; Using index for group-by |
+------+-------------+-------+-------+---------------+------+---------+------+------+---------------------------------------+

If I used LIKE instead of BETWEEN with the same table:

EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a LIKE '04%' GROUP BY id;

group-min-max is not applied:

+------+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+
| id   | select_type | table | type  | possible_keys | key  | key_len | ref  | rows | Extra                    |
+------+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+
|    1 | SIMPLE      | t1    | index | NULL          | id   | 27      | NULL |   16 | Using where; Using index |
+------+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+

Group-min-max could safely be applied.


Generated at Thu Feb 08 07:25:36 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.