This is an automated email from the ASF dual-hosted git repository.
mchades pushed a commit to branch branch-1.3
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-1.3 by this push:
new dd6b053835 [Cherry-pick to branch-1.3] [#11640] docs: Improve view
support documentation for catalogs and connectors (#11641) (#11691)
dd6b053835 is described below
commit dd6b05383587501f1a93d6eefeb534da452c5da1
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Jun 17 09:45:00 2026 +0800
[Cherry-pick to branch-1.3] [#11640] docs: Improve view support
documentation for catalogs and connectors (#11641) (#11691)
**Cherry-pick Information:**
- Original commit: c66f0d43fa2593e57641ce8ac364be2b4a416dc3
- Target branch: `branch-1.3`
- Status: ✅ Clean cherry-pick (no conflicts)
Co-authored-by: Yuhui <[email protected]>
---
docs/apache-hive-catalog.md | 8 +++++---
docs/flink-connector/flink-catalog-hive.md | 26 +++++++++++++++++++++++++-
docs/flink-connector/flink-catalog-iceberg.md | 25 ++++++++++++++++++++++++-
docs/flink-connector/flink-catalog-paimon.md | 25 ++++++++++++++++++++++++-
docs/lakehouse-iceberg-catalog.md | 12 +++++++++---
docs/lakehouse-paimon-catalog.md | 8 ++++++--
docs/manage-view-metadata-using-gravitino.md | 4 ++--
docs/spark-connector/spark-catalog-hive.md | 17 +++++++++++++++--
8 files changed, 110 insertions(+), 15 deletions(-)
diff --git a/docs/apache-hive-catalog.md b/docs/apache-hive-catalog.md
index 8bef06cf60..8b509ab445 100644
--- a/docs/apache-hive-catalog.md
+++ b/docs/apache-hive-catalog.md
@@ -237,9 +237,11 @@ Support for altering partitions is under development.
- Supports list, create, load, alter, and drop for views stored in the Hive
Metastore Service as `VIRTUAL_VIEW`.
- Each view must contain exactly one SQL representation.
-- Supports the `hive`, `trino`, and `spark` dialects.
-- When loading an existing HMS view, Gravitino automatically detects whether
the view uses the `hive`, `trino`, or `spark` dialect.
-- For the `hive` dialect, `defaultCatalog` and `defaultSchema` must be `null`.
+- Supports creating views with the `hive`, `flink`, or `spark` dialect.
+- When loading an existing HMS view, Gravitino automatically detects whether
the view uses the `hive`, `flink`, `spark`, or `trino` dialect.
+- For the `hive` and `flink` dialects, `defaultCatalog` and `defaultSchema`
must be `null`.
+- The `flink` dialect requires at least one view property with the prefix
`flink.` to be set. The Flink connector automatically sets
`flink.schema.num-columns`; when using the REST API directly, set at least one
`flink.*` property explicitly.
+- The `spark` dialect requires the view property `spark.sql.create.version` to
be set; without it the view round-trips as the `hive` dialect on reload.
### View Operations
diff --git a/docs/flink-connector/flink-catalog-hive.md
b/docs/flink-connector/flink-catalog-hive.md
index 2be6074628..9ba41f4c81 100644
--- a/docs/flink-connector/flink-catalog-hive.md
+++ b/docs/flink-connector/flink-catalog-hive.md
@@ -15,7 +15,6 @@ Supports most DDL and DML operations in Flink SQL, except
such operations:
- Function operations
- Partition operations
-- View operations
- Querying UDF
- `LOAD` clause
- `UNLOAD` clause
@@ -99,6 +98,31 @@ INSERT INTO employees VALUES (1, 'John Doe', 20240101), (2,
'Jane Smith', 202401
SELECT * FROM employees WHERE dt = 20240101;
```
+## View
+
+### View Capabilities
+
+- Supports `CREATE VIEW`, `DROP VIEW`, `ALTER VIEW` (rename and replace view
definition), list, load, and rename views stored in the Hive Metastore Service.
+- When creating a view, the connector stores the SQL with the `flink` dialect
and automatically records the `flink.schema.num-columns` property, which acts
as the dialect marker required by the Hive catalog.
+- When loading a view, the connector tries the `flink` dialect first, then
falls back to the `hive` dialect.
+- Views created by other engines (e.g. Spark) with a different dialect marker
are visible in `SHOW VIEWS` but cannot be loaded by the Flink connector.
+- `defaultCatalog` and `defaultSchema` are always stored as `null` for
Flink-created views.
+
+### View SQL Example
+
+```sql
+USE CATALOG hive_a;
+USE mydatabase;
+
+CREATE VIEW employee_view AS SELECT id, name FROM employees WHERE dt =
20240101;
+
+SHOW VIEWS;
+
+SELECT * FROM employee_view;
+
+DROP VIEW employee_view;
+```
+
## Catalog Properties
The configuration of Flink Hive Connector is the same with the original Flink
Hive connector.
diff --git a/docs/flink-connector/flink-catalog-iceberg.md
b/docs/flink-connector/flink-catalog-iceberg.md
index 42b03c7326..75e4a3772d 100644
--- a/docs/flink-connector/flink-catalog-iceberg.md
+++ b/docs/flink-connector/flink-catalog-iceberg.md
@@ -25,7 +25,6 @@ To enable the Flink connector, you must download the Iceberg
Flink runtime JAR a
### Unsupported Operations
- Partition operations
-- View operations
- Metadata tables, like:
- `{iceberg_catalog}.{iceberg_database}.{iceberg_table}&snapshots`
- Query UDF
@@ -77,6 +76,30 @@ SELECT * FROM sample WHERE data = 'B';
```
+## View
+
+### View Capabilities
+
+- Supports `CREATE VIEW`, `DROP VIEW`, `ALTER VIEW` (rename and replace view
definition), list, load, and rename views managed by the underlying Iceberg
backend.
+- When creating a view, the connector stores the SQL with the `flink` dialect.
+- When loading a view, the connector tries the `flink` dialect first, then
falls back to the `hive` dialect.
+- Multiple SQL representations per view (e.g. also a `spark` dialect) can
coexist and are preserved through Gravitino.
+
+### View SQL Example
+
+```sql
+USE CATALOG iceberg_a;
+USE mydb;
+
+CREATE VIEW order_view AS SELECT id, amount FROM orders WHERE status =
'completed';
+
+SHOW VIEWS;
+
+SELECT * FROM order_view;
+
+DROP VIEW order_view;
+```
+
## Catalog Properties
The Gravitino Flink connector transforms the following properties in a catalog
to Flink connector configuration.
diff --git a/docs/flink-connector/flink-catalog-paimon.md
b/docs/flink-connector/flink-catalog-paimon.md
index 4f46cd081f..a643747971 100644
--- a/docs/flink-connector/flink-catalog-paimon.md
+++ b/docs/flink-connector/flink-catalog-paimon.md
@@ -28,7 +28,6 @@ Supports most DDL and DML operations in Flink SQL, except
such operations:
- Function operations
- Partition operations
-- View operations
- Querying UDF
- `LOAD` clause
- `UNLOAD` clause
@@ -126,6 +125,30 @@ CREATE TABLE paimon_bucketed_table (
);
```
+## View
+
+### View Capabilities
+
+- Supports `CREATE VIEW`, `DROP VIEW`, `ALTER VIEW` (rename and replace view
definition), list, load, and rename views stored in the Paimon catalog.
+- When creating a view, the connector stores two SQL representations: one with
the `flink` dialect and one with the `query` dialect (Paimon's canonical
dialect), both using the same expanded SQL text.
+- When loading a view, the connector tries dialects in order: `flink` → `hive`
→ `query`. The first available representation wins.
+- View support depends on the selected Paimon backend; not all backends
implement the Paimon view API.
+
+### View SQL Example
+
+```sql
+USE CATALOG paimon_a;
+USE mydb;
+
+CREATE VIEW summary_view AS SELECT category, SUM(amount) AS total FROM orders
GROUP BY category;
+
+SHOW VIEWS;
+
+SELECT * FROM summary_view;
+
+DROP VIEW summary_view;
+```
+
## Catalog Properties
Gravitino Flink connector will transform below property names which are
defined in catalog properties to Flink Paimon connector configuration.
diff --git a/docs/lakehouse-iceberg-catalog.md
b/docs/lakehouse-iceberg-catalog.md
index 93981824f9..68931a3672 100644
--- a/docs/lakehouse-iceberg-catalog.md
+++ b/docs/lakehouse-iceberg-catalog.md
@@ -494,9 +494,15 @@ If you update a nullability column to non nullability,
there may be compatibilit
### View Capabilities
-- Supports list, create, load, alter, and drop for views managed by the
underlying Iceberg REST, JDBC, or Hive backend.
-- Supports dialects such as `trino`, `spark`, and `hive`.
-- Can preserve multiple SQL representations for the same logical view.
+- Supports list, create, load, alter, and drop for views managed by the
underlying Iceberg backend.
+- Accepts any dialect name (e.g. `trino`, `spark`, `flink`, `hive`). No
restriction on which dialects are used.
+- Can preserve multiple SQL representations for the same logical view; the
full set of representations round-trips through Gravitino.
+- `defaultCatalog` and `defaultSchema` are stored and returned as-is by the
backend.
+- View support depends on the Iceberg catalog backend: REST and Hive backends
generally support views; JDBC backend support is in continuous validation.
+
+:::note
+Rename cannot be combined with other changes in a single `alterView` call.
Submit rename as a standalone request.
+:::
### View Operations
diff --git a/docs/lakehouse-paimon-catalog.md b/docs/lakehouse-paimon-catalog.md
index 329330f3e2..fed8d2a2e1 100644
--- a/docs/lakehouse-paimon-catalog.md
+++ b/docs/lakehouse-paimon-catalog.md
@@ -237,11 +237,15 @@ Refer to [Manage Relational Metadata Using
Gravitino](./manage-relational-metada
### View Capabilities
- Supports list, create, load, alter, and drop for views stored in the Paimon
catalog.
-- Each view must include exactly one SQL representation with dialect `query`,
which serves as the canonical view definition.
-- Additional dialect-specific SQL representations (for example, `spark` or
`trino`) can be provided alongside the required `query` representation.
+- Each view must include exactly one SQL representation with dialect `query`,
which serves as the canonical view definition. At most one representation per
dialect is allowed.
+- Additional dialect-specific SQL representations (for example, `flink`,
`spark`) can be provided alongside the required `query` representation.
- The `defaultCatalog` and `defaultSchema` fields are stored as Paimon view
options and can be used to resolve unqualified identifiers in the SQL text.
- View support depends on the selected Paimon backend and requires backend
view API support.
+:::note
+Rename cannot be combined with other changes in a single `alterView` call.
Submit rename as a standalone request.
+:::
+
### View Operations
Refer to [Manage view metadata using
Gravitino](./manage-view-metadata-using-gravitino.md) for more details.
diff --git a/docs/manage-view-metadata-using-gravitino.md
b/docs/manage-view-metadata-using-gravitino.md
index 034334e982..0c4e0a37fc 100644
--- a/docs/manage-view-metadata-using-gravitino.md
+++ b/docs/manage-view-metadata-using-gravitino.md
@@ -133,8 +133,8 @@ Use the following fields when creating a view:
`Representation` model, but only the `sql` type is supported, which maps to
`SQLRepresentation` in Java.
- `defaultCatalog` and `defaultSchema`: Optionally define how unqualified
identifiers in the SQL
- text are resolved for dialects that use them. For the `hive` dialect in Hive
catalogs, both
- fields must be `null`.
+ text are resolved for dialects that use them. For the `hive` and `flink`
dialects in Hive
+ catalogs, both fields must be `null`.
- `properties`: Carries provider-specific metadata.
Column types use the same Gravitino type system as table columns. For the full
type list and the
diff --git a/docs/spark-connector/spark-catalog-hive.md
b/docs/spark-connector/spark-catalog-hive.md
index 74df514c70..ccc6c991b6 100644
--- a/docs/spark-connector/spark-catalog-hive.md
+++ b/docs/spark-connector/spark-catalog-hive.md
@@ -15,10 +15,10 @@ Supports most DDL and DML operations in SparkSQL, except
such operations:
- Function operations (Gravitino UDFs are supported, see [Spark connector -
User-defined functions](spark-connector-udf.md))
- Partition operations
-- View operations
+- View DDL operations (`CREATE VIEW`, `DROP VIEW`, `ALTER VIEW`)
- `LOAD` clause
- `CREATE TABLE LIKE` clause
-- `TRUCATE TABLE` clause
+- `TRUNCATE TABLE` clause
:::info
@@ -58,6 +58,19 @@ SELECT * FROM employees WHERE department = 'Engineering';
```
+## View
+
+Spark DDL view operations (`CREATE VIEW`, `DROP VIEW`, `ALTER VIEW`) are not
supported. However, existing views stored in the Hive Metastore can be read
with `SELECT`. When `SELECT` references a view name, the connector loads the
view's SQL definition from Gravitino, resolves the query, and executes it.
+
+:::caution
+The current implementation materializes all view results on the Spark driver
using `LocalScan`. This is suitable only for small or bounded views. Querying a
large or unbounded view may exhaust driver memory and cause an OOM error.
+:::
+
+```sql
+-- Assumes a view was created via Gravitino API, Flink, or Hive directly
+SELECT * FROM employee_view;
+```
+
## Catalog Properties
Gravitino spark connector will transform below property names which are
defined in catalog properties to Spark Hive connector configuration.