这个问题就是字段错位,没有对应该,把字段对应好再测试一下看看吧。更深层看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…
是的,是的
有点奇怪,这个的限制是在官方文档哪里说的呢?其实我们真正创建的时候并没有去显示指定前面括号的内容,应该是SR自己加上的。
有点奇怪,这个的限制是在官方文档哪里说的呢?其实我们真正创建的时候并没有去显示指定前面括号的内容,应该是SR自己加上的。
SHOW CREATE MATERIALIZED VIEW显示的是你建物化视图时使用的语句,StarRocks不会改这个的。
大佬,我们这边想请问一下,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来建物化视图试试吧。
尴尬我还以为你是SR的人呢。。我们先试试手动指定括号里面的内容吧