[Bug](High) ROW binlog rejects valid HLL writes with a misleading QuantileState nullable error
- Dominant language
- Java
- Stars
- 15.9k
- Forks
- 3.9k
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 520
Description
### Tracking
- Tracking issue: #65265
### Search before asking
- [x] I searched the existing issues and found no issue with the same error or reproduction.
### Version
Reproduced while testing #62606 on Doris commit `a78b707ed040c3206df99cf43ea3101ab2ba5b90`.
Test environment: non-Cloud deployment with 1 FE and 3 BEs.
### What's Wrong?
A UNIQUE KEY merge-on-write table can be created with a `NOT NULL HLL` column and ROW binlog enabled, but the first valid HLL write fails in the BE conversion path:
```text
QuantileState column does not support nullable
```
The HLL column is declared `NOT NULL`, and the error incorrectly refers to QuantileState. The same ROW-binlog configuration can write BITMAP values successfully, so the failure is specific to the HLL ROW-binlog write path.
IVM requires ROW binlog, so this blocks IVM scenarios whose base tables contain HLL columns before refresh can begin.
### What You Expected?
If HLL is supported with ROW binlog, a valid `HLL_HASH` value should be written successfully and produce consumable row binlog. If this combination is intentionally unsupported, Doris should reject it during CREATE/ALTER analysis with an accurate error instead of accepting the table and failing every write.
### How to Reproduce?
```sql
DROP DATABASE IF EXISTS ivm_hll_row_binlog_repro;
CREATE DATABASE ivm_hll_row_binlog_repro;
USE ivm_hll_row_binlog_repro;
CREATE TABLE hll_row_binlog_base (
id BIGINT NOT NULL,
value HLL NOT NULL
)
UNIQUE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES (
'replication_num'='1',
'enable_unique_key_merge_on_write'='true',
'binlog.enable'='true',
'binlog.format'='ROW',
'binlog.need_historical_value'='true'
);
INSERT INTO hll_row_binlog_base VALUES (1, HLL_HASH('one'));
SELECT COUNT(*) FROM hll_row_binlog_base;
```
The CREATE succeeds, the INSERT fails with the error above, and the table remains empty.
### Regression Test Result
- Suite: `ivm_sql_complex_type_matrix`
- Jenkins: `regression-debug #792`
- Result: CREATE succeeds and the valid `HLL_HASH` INSERT fails consistently.
The suite currently records this behavior as a negative capability boundary and therefore passes; that pass means the failure is reproducible, not that the product behavior is correct.
### Anything Else?
The failure occurs in the BE HLL column conversion path when a nullmap is present. The returned error text appears to have been copied from the QuantileState converter.
### Are you willing to submit PR?
- [ ] Yes, I am willing to submit a PR!
Contributor guide
Research direction
Start with the BE HLL column conversion path and the ivm_sql_complex_type_matrix regression suite. Reproduce the CREATE and HLL_HASH INSERT shown in the issue, then trace the conversion when a nullmap is present and compare the error with the QuantileState converter. Done means supported HLL ROW-binlog writes succeed with consumable row binlog, or CREATE/ALTER rejects the combination with an accurate error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- sql
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100