TRINO 迁移 SR, 视图问题

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】在 sr 创建一个视图 A,

create  view  `default_catalog`.`enlightent_daily`.`v_movie_total_info_zero_p` 
select *   FROM default_catalog.enlightent_daily.v_total_info_zero_p

视图创建完成后, 我 用show create view 查看 sql语句。

CREATE VIEW `v_movie_total_info_zero_p` (`name`, `play_times`, `dayplaytimes`, `up`, `dayup`, `down`, `daydown`, `totalcomments`, `comment_count`, `barragecount`, `daybarragecount`, `playtimespredicted`, `dayplaytimespredicted`, `channel`, `fake`, `day`, `channeltype`) AS SELECT 
 * FROM `enlightent_daily`.`v_total_info_zero_p` 

变成了FROM enlightent_daily.v_total_info_zero_p 。 default_catalog 被去掉了。

【背景】trino 迁移 sr , trino 默认在 hive catalog 下面。 在 sr 里也想默认在hive catalog里。这样开发不需要改 sql。

迁移 trino 的 hive 视图 到 SR

  1. trino 在建 hive 的视图
  2. trino 中的hive catalog 不需要配置 oss key, 所以一个catalog 可以访问hive 的所有表。
  3. sr 的hive catalog 需要配置 oss key, 我们有两个oss 账号, 所以我们有两个 hive catalog。
    hive_new 和 hive_old, 用于访问基于oss账号的表。
  4. 因为需要用到两个 catalog, 我们无法在 hive 里建视图, 只能把视图 迁移 到 SR上。

【业务影响】是
【是否存算分离】 是
【StarRocks版本】3.2.8

【结果演示】

set catalog default_catalog;
select * from  default_catalog.enlightent_daily.v_movie_total_info_zero_p;

结果正确

set  catalog  hive_new;
select * from  default_catalog.enlightent_daily.v_movie_total_info_zero_p;

错误信息如下:
此时在hive_new catalog 下面, 视图中的enlightent_daily.v_total_info_zero_p 是无法找到的。

SQL 错误 [1049] [42000]: Getting analyzing error. Detail message: View enlightent_daily.v_movie_total_info_zero_p references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them: Getting analyzing error. Detail message: Unknown database ‘enlightent_daily’…

请问有办法规避 自动去除 default_catalog的功能么

default_catalog.enlightent_daily.v_total_info_zero_p这个是内表吗?不能直接使用hive catalog下的表吗?这样是不是就没有default_catalog的问题了

我简单概括就是在hive catalog下不能查询default catalog中的view吧?是这个意思吗?

default_catalog.enlightent_daily.v_total_info_zero_p 是一个 sr 的视图, 里面访问了 hive_new 和 hive_old 两个catalog 的表,所以不能放到hive 里。

创建   default_catalog 的view  A, 在 hive catalog 下查询
1. view A 在创建的时候,使用default_catalog 的表或者视图, 不能访问
2. view A 在创建的时候, 没有使用 default_catalog 的表或者视图, 可以访问

原始是 default_catalog 中的 view, 在创建的时候, 把 select 语句中访问 default_catalog 的表或者视图的 catalog 前缀去掉了。