存算分离3.1.3版本,查询数据错误

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】存算分离3.1.3版本,查询数据错误。

  1. 建表语句,并导入一些数据:
    CREATE TABLE rx_bd_test.dwd_fact_event_0preset_login_19 (
    #user_id varchar(65533) NULL,
    #time datetime NULL
    ) ENGINE=OLAP
    DUPLICATE KEY(#user_id)
    COMMENT “OLAP”
    PARTITION BY RANGE(#time)
    (PARTITION p20230710 VALUES [(“2023-07-10 00:00:00”), (“2023-07-11 00:00:00”)))
    DISTRIBUTED BY HASH(#user_id, #time) BUCKETS 3
    PROPERTIES (
    “replication_num” = “3”,
    “dynamic_partition.enable” = “true”,
    “dynamic_partition.time_unit” = “DAY”,
    “dynamic_partition.time_zone” = “Asia/Shanghai”,
    “dynamic_partition.start” = “-360”,
    “dynamic_partition.end” = “360”,
    “dynamic_partition.prefix” = “p”,
    “dynamic_partition.buckets” = “10”,
    “dynamic_partition.history_partition_num” = “0”,
    “datacache.partition_duration” = “60 days”,
    “datacache.enable” = “true”,
    “enable_async_write_back” = “false”,
    “enable_persistent_index” = “false”,
    “compression” = “ZSTD”
    );

  2. 查询sql如下:
    SELECT
    date_add( a.#time, INTERVAL 0 HOUR ) AS #time
    , a.#user_id
    , DATE_FORMAT(date_add(#time, interval 0 hour), ‘%Y-%m’)
    , DATE_FORMAT(add_months(date_add(now(), interval 0 hour), 0), ‘%Y-%m’)
    from
    dwd_fact_event_0preset_login_19 a
    where
    1 = 1
    AND DATE_FORMAT(date_add(#time, interval 0 hour), ‘%Y-%m’) = DATE_FORMAT(add_months(date_add(now(), interval 0 hour), 0), ‘%Y-%m’)
    ;

  3. 表里的数据

  4. 错误结果:

【业务影响】
【StarRocks版本】存算分离 3.1.3-384ba23
【集群规模】3fe + 10be

发一下带筛选条件的 explain +sql 执行计划

explain如下:

PLAN FRAGMENT 0
OUTPUT EXPRS:3: expr | 1: #user_id | 4: date_format | 5: date_format
PARTITION: UNPARTITIONED

RESULT SINK

2:EXCHANGE
limit: 1000

PLAN FRAGMENT 1
OUTPUT EXPRS:
PARTITION: RANDOM

STREAM DATA SINK
EXCHANGE ID: 02
UNPARTITIONED

1:Project
| <slot 1> : 1: #user_id
| <slot 3> : 6: hours_add
| <slot 4> : date_format(6: hours_add, ‘%Y-%m’)
| <slot 5> : ‘2023-10’
| common expressions:
| <slot 6> : hours_add(2: #time, 0)
| limit: 1000
|
0:OlapScanNode
TABLE: dwd_fact_event_0preset_login_19
PREAGGREGATION: ON
PREDICATES: date_format(hours_add(2: #time, 0), ‘%Y-%m’) = ‘2023-10’
partitions=0/454
rollup: dwd_fact_event_0preset_login_19
tabletRatio=0/0
tabletList=
cardinality=1
avgRowSize=51.0
numNodes=0
limit: 1000

大佬,按上面步骤,随便写入一些数据,能复现吗?

大佬,有复现吗?是否可以加vx?方便沟通

复现出来了,正在看

大佬,这个有结果了吗?什么原因导致的呢?

大佬,能帮忙测试一下3.1.2版本有这个问题吗?目前我们升级到3.1.3之后,没有环境测试,如果3.1.2没有问题的话,我们就先回退到3.1.2版本

这个问题在3.1的主分支上验证查询没有问题,可能是这个pr修复了https://github.com/StarRocks/starrocks/commit/a2c80c24a773cb8a49771321794093078c314718 需要等 3.1.4版本

大佬,这个是什么原因导致的呢?是那个函数有问题吗?

那意思3.1.3之前版本也有这个问题是吧?

刚才搭了个3.1.2版本的集群试了下,3.1.2上可以正常查询,可以先回退到 3.1.2上
降级注意事项参考 https://docs.starrocks.io/zh-cn/latest/deployment/downgrade

大佬,这个是3.1.4进行发版吗?

等 3.1.4 出来再测试一下,目前在 3.1的main分支上执行是没有问题的