sachinnn99 opened a new pull request, #11123: URL: https://github.com/apache/gravitino/pull/11123
### What changes were proposed in this pull request? - Add full `ViewCatalog` implementation for JDBC catalogs (create, alter, drop, load, list) - Implement MySQL and PostgreSQL dialect-specific view operations using the template method pattern - Share logic via `JdbcViewCatalogOperations` helper to avoid duplication between MySQL and PostgreSQL - Re-map table-centric exceptions from existing JDBC exception converters to view-specific types (`TableAlreadyExistsException` → `ViewAlreadyExistsException`, `NoSuchTableException` → `NoSuchViewException`) - Add `MYSQL` and `POSTGRESQL` constants to `Dialects.java` ### Why are the changes needed? JDBC catalogs (MySQL, PostgreSQL) currently have no view support. This implements the `ViewCatalog` interface so users can manage views through Gravitino's unified API. Only MySQL and PostgreSQL implement `ViewCatalog`; Doris and StarRocks remain unaffected via the existing `instanceof ViewCatalog` check in `CatalogManager`. Fixes #11001 ### Does this PR introduce _any_ user-facing change? Yes. MySQL (`jdbc-mysql`) and PostgreSQL (`jdbc-postgresql`) catalogs now support view operations: `listViews`, `loadView`, `createView`, `alterView` (rename and replace), and `dropView`. ### How was this patch tested? - 24 unit tests for `JdbcViewCatalogOperations` (atomicity, schema checks, CRUD, edge cases) - 9 unit tests for MySQL SQL generation and identifier quoting - 9 unit tests for PostgreSQL SQL generation and identifier quoting - `./gradlew spotlessApply` passes with no changes - `./gradlew :catalogs:catalog-jdbc-common:test :catalogs:catalog-jdbc-mysql:test :catalogs:catalog-jdbc-postgresql:test -PskipITs` all pass -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
