Same query results are inconsistent on TiKV and TiFlash when involving `FORMAT` function.
- 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)
prepare data
```sql
drop table if exists t0;
CREATE TABLE t0(c0 BOOL UNSIGNED);
INSERT INTO t0(c0) VALUES (1);
ALTER TABLE t0 SET TIFLASH REPLICA 1;
```
execute query
```sql
SELECT /*+ read_from_storage(tikv[t0]) */ * FROM t0 WHERE (+ ((~ ('')AND(FORMAT(0.1, (~ (t0.c0)))))));
SELECT /*+ read_from_storage(tiflash[t0]) */ * FROM t0 WHERE (+ ((~ ('')AND(FORMAT(0.1, (~ (t0.c0)))))));
```
### 2. What did you expect to see? (Required)
The results of the two queries are equal.
### 3. What did you see instead (Required)
Query1: empty
Query2:

### 4. What is your TiDB version? (Required)
Release Version: v8.4.0
Edition: Community
Git Commit Hash: 1a9f0fa25580907d3266dc3edf000ba24379a600
Git Branch: HEAD
UTC Build Time: 2024-11-07 15:18:43
GoVersion: go1.23.2
Race Enabled: false
Check Table Before Drop: false
Store: tikv
Contributor guide
Research direction
Start by running the supplied SQL reproduction with the read_from_storage hints for TiKV and TiFlash on TiDB v8.4.0, then compare how the FORMAT expression is evaluated in the two storage paths. Done means both queries return equal results for this case, with coverage showing the corrected behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, sql
- Domain
- databases, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100