Skip to content

[Bug](High) ROW binlog rejects valid HLL writes with a misleading QuantileState nullable error #65865

Description

@MoanasDaddyXu

Tracking

Search before asking

  • 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:

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?

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions