物化视图删除失败?

【详述】物化视图删除失败?
【StarRocks版本】例如:2.3.3

查看当前数据库中存在的物化视图。

SHOW MATERIALIZED VIEW; 查看不了当前存在的视图;但是 我看视图已经命中;

检查物化视图是否构建完成: SHOW ALTER MATERIALIZED VIEW FROM example_db; 也是存在的,如下图

另外;删除视图报错,什么原因?

MySQL [example_db]> DROP MATERIALIZED VIEW IF EXISTS ads_services_base_mps_activity_price_ds;
ERROR 1064 (HY000): Cannot drop base index by using DROP ROLLUP or DROP MATERIALIZED VIEW.

没有复现出来,您可以确认下是否存在一张表名字叫ads_services_base_mps_activity_price_ds么?

有的

应该是没有建相应的物化视图。

那为什么,SHOW ALTER MATERIALIZED VIEW FROM example_db; 这边是可以看到的?

执行下这个语句看下呢 select CREATE_TIME from information_schema.tables where TABLE_NAME = ‘ads_services_base_mps_activity_price_ds’;

能否帮忙确认一下,我不理解,现在是能看到,而且 EXPLAIN 能看到查询计划树中的 OlapScanNode 显示 PREAGGREGATION: ON 和 rollup: ads_services_base_mps_activity_price_ds。

MySQL [example_db]> SHOW ALTER MATERIALIZED VIEW FROM example_db;
±--------±----------------------------------------±--------------------±--------------------±----------------------------------------±---------------------------------------------±---------±--------------±---------±-----±---------±--------+
| JobId | TableName | CreateTime | FinishedTime | BaseIndexName | RollupIndexName | RollupId | TransactionId | State | Msg | Progress | Timeout |
±--------±----------------------------------------±--------------------±--------------------±----------------------------------------±---------------------------------------------±---------±--------------±---------±-----±---------±--------+
| 2604205 | ads_services_base_mps_activity_price_ds | 2022-11-23 18:44:15 | 2022-11-23 18:44:37 | ads_services_base_mps_activity_price_ds | ads_services_base_mps_activity_price_ds_view | 2604206 | 640237 | FINISHED | | NULL | 86400 |
±--------±----------------------------------------±--------------------±--------------------±----------------------------------------±---------------------------------------------±---------±--------------±---------±-----±---------±--------+
1 row in set (0.00 sec)

MySQL [example_db]> show tables;
±----------------------------------------+
| Tables_in_example_db |
±----------------------------------------+
| ads_services_base_mps_activity_price_ds |
±----------------------------------------+

MySQL [example_db]> EXPLAIN select brand_cname,sum(unit_settle_amt) from ads_bdc_services.ads_services_base_mps_activity_price_ds GROUP BY brand_cname;
±------------------------------------------------------------------------------------------------+
| Explain String |
±------------------------------------------------------------------------------------------------+
| PLAN FRAGMENT 0 |
| OUTPUT EXPRS:8 | 21: sum |
| PARTITION: UNPARTITIONED |
| |
| RESULT SINK |
| |
| 5:EXCHANGE |
| |
| PLAN FRAGMENT 1 |
| OUTPUT EXPRS: |
| PARTITION: HASH_PARTITIONED: 22: brand_cname |
| |
| STREAM DATA SINK |
| EXCHANGE ID: 05 |
| UNPARTITIONED |
| |
| 4:Decode |
| | <dict id 22> : <string id 8> |
| | |
| 3:AGGREGATE (merge finalize) |
| | output: sum(21: sum) |
| | group by: 22: brand_cname |
| | |
| 2:EXCHANGE |
| |
| PLAN FRAGMENT 2 |
| OUTPUT EXPRS: |
| PARTITION: RANDOM |
| |
| STREAM DATA SINK |
| EXCHANGE ID: 02 |
| HASH_PARTITIONED: 22: brand_cname |
| |
| 1:AGGREGATE (update serialize) |
| | STREAMING |
| | output: sum(16: unit_settle_amt) |
| | group by: 22: brand_cname |
| | |
| 0:OlapScanNode |
| TABLE: ads_services_base_mps_activity_price_ds |
| PREAGGREGATION: ON |
| partitions=1/1 |
| rollup: ads_services_base_mps_activity_price_ds |
| tabletRatio=10/10 |
| tabletList=2602758,2602762,2602766,2602770,2602774,2602778,2602782,2602786,2602790,2602794 |
| cardinality=193551589 |
| avgRowSize=10.85359 |
| numNodes=0 |
±------------------------------------------------------------------------------------------------+
48 rows in set (0.02 sec)

MySQL [example_db]>

explain里面没有物化视图的话rollup是会显示原表信息的

好,我刚刚是又创建了一个相同名的,所以现在是有2个

所以 SHOW ALTER MATERIALIZED VIEW FROM example_db; 这个语句只是可以看到历史创建的视图?并不是已存在的视图?而且删除视图也会存在?

是的,这个记录的只是历史建物化视图的记录。

好的,我知道了,谢谢 :tulip: