starrocks 查询字符串函数偶现报错Backend node not found. Check if any backend node is down.backend: [xx.27 alive: true inBlacklist: false] [xx.26 alive: false inBlacklist: false]

这个问题就是字段错位,没有对应该,把字段对应好再测试一下看看吧。更深层看StarRocks的在实现上也存在问题:为什么字段类型都对不上还去用那个物化视图?是有必要提交个Issue的。

嗯嗯,源码层面就麻烦你们有空再看看,我们这边先排查一下

CREATE MATERIALIZED VIEW IF NOT EXISTS _default.dte__DEFAULT__mv_col_1__test REFRESH ASYNC START(‘2024-08-26 17:44:01’) EVERY ( INTERVAL 1 MINUTE ) PROPERTIES ( “replication_num” = “1”,“session.query_timeout” = “3600” ) AS SELECT EXP(integer_01) AS expTmp, float_02 AS float_02, string_01 AS string_01_FROM (SELECT time_stamp AS time_stamp, string_01 AS string_01, string_02 AS string_02, string_03 AS string_03, string_04 AS string_04, string_05 AS string_05, string_06 AS string_06, string_07 AS string_07, string_08 AS string_08, string_09 AS string_09, string_10 AS string_10, integer_01 AS integer_01, integer_02 AS integer_02, integer_03 AS integer_03, integer_04 AS integer_04, integer_05 AS integer_05, integer_06 AS integer_06, integer_07 AS integer_07, integer_08 AS integer_08, integer_09 AS integer_09, integer_10 AS integer_10, long_01 AS long_01, long_02 AS long_02, long_03 AS long_03, long_04 AS long_04, long_05 AS long_05, long_06 AS long_06, long_07 AS long_07, long_08 AS long_08, long_09 AS long_09, long_10 AS long_10, float_01 AS float_01, float_02 AS float_02, float_03 AS float_03, float_04 AS float_04, float_05 AS float_05, float_06 AS float_06, float_07 AS float_07, float_08 AS float_08, float_09 AS float_09, float_10 AS float_10, double_01 AS double_01, double_02 AS double_02, double_03 AS double_03, double_04 AS double_04, double_05 AS double_05, double_06 AS double_06, double_07 AS double_07, double_08 AS double_08, double_09 AS double_09, double_10 AS double_10_FROM dte_hive_catalog._default.ry_data_file_csv_173404fd070550f1f9ea435d36d98ec2 AS query_data_file_csv) AS query_data_logical_fact_WHERE query_data_logical_fact.string_01 = ‘string00’; 能麻烦帮忙看看是哪个字段出问题了吗

我们现在先尝试把物化视图里面的float_02和string_01交换一下顺序再试一下问题还是否会复现。
但是StarRocks源码的问题是你们那边去跟踪,还是需要我们这边去提一个issue帮助你们跟踪呢?

还有就是一个问题,为什么物化视图的字段顺序还有要求呢?这也不能说叫做字段错位吧,万一我现在需要的是float_02,那我是不是又没错位呢

在这里starrocks的实现有bug,在进行物化视图替换重写时,如果字段名相同它就直接拿来用了。

但是我还是没看出来我们的字段哪里错位了,我去那个catalog里面查询了一把string_01。看起来没啥问题啊

为啥用物化视图优化的时候他会错用为float_02呢,大佬能否指点一下,或者说我要怎么改物化视图创建语句,我感觉没啥问题

建物化视图时引入的错误,用SHOW CREATE MATERIALIZED VIEW _default.dte__DEFAULT__mv_col__test看看。你应该用了:CREATE MATERIALIZED VIEW dte__DEFAULT__mv_col__test (string_01, expTmp, float_02)…AS SELECT exp(query_data_logical_fact.integer_01) AS expTmp, query_data_logical_fact.float_02, query_data_logical_fact.string_01 FROM…

是不是前面括号里面的顺序要和后面的顺序一一对应呢?就是前面应该改成expTmp, float_02, string_01

是的,是的

有点奇怪,这个的限制是在官方文档哪里说的呢?其实我们真正创建的时候并没有去显示指定前面括号的内容,应该是SR自己加上的。

有点奇怪,这个的限制是在官方文档哪里说的呢?其实我们真正创建的时候并没有去显示指定前面括号的内容,应该是SR自己加上的。

SHOW CREATE MATERIALIZED VIEW显示的是你建物化视图时使用的语句,StarRocks不会改这个的。

1赞

大佬,我们这边想请问一下,StarRocks优化查询为什么会命中一个错误的类型对不上的物化视图呢?需不需要我们这边提一个issue,还是你们那边已经记录了?

然后就是好像并不是你说的那样,那个括号里面的字段不是我们指定的,是StarRocks根据select自动生成的啊。能再帮忙看看吗。

会不会是SR在从select中自动映射到物化视图的列的时候出了问题?

大佬能再帮忙看看吗?并不是我们手动导致的字段顺序出问题啊,SR自己加的括号。我们重试过了,没有指定对应的列,但是还是会有这个括号

我用的是3.2.0版本,难道是这个版本的SR自动选择列有问题?请问是不是在这个fe/fe-core/src/main/java/com/starrocks/sql/analyzer/MaterializedViewAnalyzer.java类的genMaterializedViewColumns函数影响

我不是StarRocks公司的呀!不过这种问题我应该可以解决,问题是就算我解决了StarRocks社区也未必会接收我的RP。因为我在github上有几个打开的RP已经提交很久了,就是没人去review。

你暂时按表里列的顺序去select来建物化视图试试吧。

:joy:尴尬我还以为你是SR的人呢。。我们先试试手动指定括号里面的内容吧