#68118·doris

[错误] v1 Parquet 时间戳最小/最大统计信息可能导致非保守的剪枝(没有 DST 回滚防护; INT96 最小值 == 最大值检查失败)

作者: LuciferYang创建于 2026年9月17日更新于 2026年9月17日

**1. v1 时间戳范围没有 DST 回滚保护。** `ParquetPredicate::parse_min_max_value`(`be/src/format/parquet/parquet_predicate.h`) 将调整为 UTC 的 TIMESTAMP 的物理最小值/最大值转换为本地公历时间,使用会话时区,v1 位置区域映射构建器在 `be/src/format/parquet/vparquet_reader.cpp` 中记录结果。转换为本地公历时间不具有 DST 回退的单调性:在 `America/New_York` 中,UTC `[05:30, 06:30]` 对应于本地 `[01:30, 01:30]`,而 UTC `05:59` 的内部行对应于 `01:59`,这超出了转换范围。因此,转换后的 `[min, max]` 不是有效的边界,例如 `dt > 01:45` 的谓词会剪枝行组,尽管 `01:59` 行满足该条件。