Unexpected error when changes aggregate function:max()
- Dominant language
- Go
- Stars
- 40.5k
- Forks
- 6.2k
- PR merge metrics
- PR metrics pending
Description
## Bug Report
Please answer these questions before submitting your issue. Thanks!
### 1. Minimal reproduce step (Required)
DROP DATABASE IF EXISTS test;
CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NULL,
age INT NULL,
created_at DATE NOT NULL,
sex VARCHAR(10) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE orders (
id INT NOT NULL AUTO_INCREMENT,
user_id INT NOT NULL,
amount DECIMAL(10,2) NOT NULL,
status VARCHAR(50) NOT NULL,
order_date DATE NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES users(id)
);
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (5440, 'sample_599', '2190882061@qq.com', 26, '2024-09-26', 'girl');
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (865, 'sample_375', '7455813006@qq.com', 58, '2025-08-03', 'boy');
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (8679, 'sample_962', '2029832461@qq.com', 81, '2024-12-04', 'boy');
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (364, 'sample_832', '5413536142@qq.com', 12, '2025-02-26', 'girl');
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (3309, 'sample_354', '6683259432@qq.com', 64, '2025-02-06', 'girl');
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (5590, 'sample_38', '4456041358@qq.com', 68, '2024-11-18', 'boy');
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (7993, 'sample_374', '4430348528@qq.com', 10, '2025-07-28', 'boy');
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (7322, 'sample_588', '4600672794@qq.com', 69, '2025-03-30', 'girl');
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (8955, 'sample_563', '2061601156@qq.com', 94, '2025-04-20', 'boy');
INSERT INTO users (id, name, email, age, created_at, sex) VALUES (9565, 'sample_405', '3827205614@qq.com', 16, '2025-04-02', 'boy');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (3328, 5590, 555, 'finished', '2025-08-13');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (7688, 5440, 571, 'finished', '2025-07-30');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (3306, 7993, 383, 'finishing', '2025-07-03');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (843, 7322, 120, 'finished', '2025-01-01');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (9455, 364, 892, 'to_finish', '2025-08-24');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (3856, 7993, 656, 'finished', '2025-01-04');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (7575, 9565, 820, 'finishing', '2025-05-08');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (6200, 865, 63, 'finishing', '2025-07-08');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (6235, 5590, 395, 'to_finish', '2025-02-20');
INSERT INTO orders (id, user_id, amount, status, order_date) VALUES (6654, 8679, 373, 'finishing', '2024-11-14');
SELECT DISTINCT subq.created_at AS created_at, ROW_NUMBER() OVER (ORDER BY 1 = 1) AS row_number_col, DENSE_RANK() OVER (ORDER BY 1 = 1) AS dense_rank_col, subq.created_at AS created_at_1, MAX(subq.created_at) AS max_col, subq.count_id AS count_id FROM (SELECT s227.created_at AS created_at, COUNT(s227.id) AS count_id, s227.created_at AS created_at_1 FROM users AS s227 GROUP BY s227.created_at, s227.created_at) AS subq GROUP BY subq.created_at, subq.count_id HAVING (MAX(subq.count_id) < 10);
SELECT DISTINCT subq.created_at AS created_at, ROW_NUMBER() OVER (ORDER BY 1 = 1) AS row_number_col, DENSE_RANK() OVER (ORDER BY 1 = 1) AS dense_rank_col, subq.created_at AS created_at_1, MAX(subq.created_at) AS max_col, subq.count_id AS count_id FROM (SELECT s227.created_at AS created_at, COUNT(s227.id) AS count_id, s227.created_at AS created_at_1 FROM users AS s227 GROUP BY s227.created_at, s227.created_at) AS subq GROUP BY subq.created_at,subq.count_id HAVING (-MIN(-subq.count_id) < 10);
### 2. What did you expect to see? (Required)
After changing having clause **HAVING (MAX(subq.count_id) < 10);**,the last two querys' result should be the same
### 3. What did you see instead (Required)
The second query returns an error:ERROR 1105 (HY000): runtime error: index out of range [0] with length 0
### 4. What is your TiDB version? (Required)
|
Release Version: v7.5.1
Edition: Community
Git Commit Hash: 7d16cc79e81bbf573124df3fd9351c26963f3e70
Git Branch: heads/refs/tags/v7.5.1
UTC Build Time: 2024-02-27 14:28:32
GoVersion: go1.21.6
Race Enabled: false
Check Table Before Drop: false
Store: unistore |
Contributor guide
Assessment
This issue has not been assessed yet.