<@U0A71G31CDV> I am trying to create a view on sta...
# questions-and-troubleshooting
s
@Rocky I am trying to create a view on starrocks external catalog:
Copy code
create view xeno_prod_ib.reporting.merchant_mv
as select * from xeno_prod_ib.xeno_sql_zenmaster_new.merchant
where
xeno_prod_ib
is external glue catalog which contains iceberg tables
xeno_prod_ib.xeno_sql_zenmaster_new.merchant
is iceberg table. My current starrocks version is:
4.1.4-4a9848e
I am getting following error:
Copy code
SQL Error [1064] [42000]: This catalog doesn't support creating/alter views
r
The error
This catalog doesn't support creating/alter views
occurs because you are attempting to create a view definition directly inside an external catalog (AWS Glue). In StarRocks, external catalogs like Glue are primarily used for mapping external metadata and do not always support storing StarRocks-specific view definitions or the Iceberg View specification. To resolve this, you should create the view in your
default_catalog
(StarRocks' internal metadata store). This view can still reference tables from your external Glue catalog. Recommended Solution Create the view in a database within the internal catalog:
Copy code
sql
-- First, ensure you have a database in the default_catalog
CREATE DATABASE IF NOT EXISTS default_catalog.reporting;

-- Create the view in the default_catalog
CREATE VIEW default_catalog.reporting.merchant_mv
AS 
SELECT * FROM xeno_prod_ib.xeno_sql_zenmaster_new.merchant;
Why this happens 1. Metadata Storage: StarRocks logical views are stored in the StarRocks Frontend (FE). When you specify a path like
xeno_prod_ib.reporting.merchant_mv
, StarRocks tries to persist that view definition into the external Glue catalog. 2. Catalog Limitations: While StarRocks (starting from v3.5 and enhanced in v4.1) supports Iceberg Views, this support is often specific to certain catalog types (like the Iceberg REST catalog). The standard Glue catalog implementation in StarRocks frequently restricts DDL operations for views because Glue's traditional API does not natively support the Iceberg View spec in the same way a dedicated Iceberg REST server does. 3. Permissions: External catalogs are often treated as read-only for metadata objects like views, even if they allow
INSERT INTO
for data. Summary * Logical Views: Always create these in the
default_catalog
. They are lightweight and can point to any table in any catalog. * Iceberg Views: If you specifically need the view to be visible to other engines (like Spark or Trino) via Glue, you would need to use a catalog type that supports the Iceberg View specification (typically a REST-based catalog), but for most StarRocks-only use cases, a standard logical view in the
default_catalog
is the correct. References • release_notes/release-2.5.md • release_notes/release-2.3.md • release_notes/release-4.0.md