Skip to content

[BUG] RangePartitionPruner的裁剪结果不合预期 #5989

@huangmengbin

Description

@huangmengbin

Describe the bug

  • RangePartitionPruner的裁剪结果不合预期。
  • The result of RangePartitionPruner is not as expected.

To Reproduce

  1. 创建一张拥有多列Range分区(>=3列)的表,

create table

实际上,你填写了范围 LESS THAN('0'),Doris内部会自动帮忙为后面的列填充相应类型的负无穷值。

help create table

  1. 插入一条数据

截屏2021-06-07 下午6 51 17

  1. 查看执行计划,主要涉及 > 和 >= 操作符。可以看到分区已命中

gt

ge

Expected behavior

  • 预期应该不会命中任何分区,即partitions=0/1

Additional context

  • 主要原因是:以 a>0 作为过滤条件时,实际上是生成了区间 ( ('0'), (+∞) ) ;以 a>=0 作为过滤条件时,实际上生成了 [ ('0', -∞), (+∞) ) ;以 a=0 作为过滤条件时,实际上生成了[ ('0', -∞), ('0', +∞) ].
  • 可以看到,原来代码的逻辑只会帮忙补充一次无穷值,而不是补全至末尾。由于它们的下界的size更小,在大小比较时会小于元组('0', -∞, -∞),因此与某个分区产生了交集。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions