geyanggang opened a new issue, #13480: URL: https://github.com/apache/gravitino/issues/13480
### What would you like to be improved? TableNormalizeDispatcher normalizes a table identifier (applying the catalog's Capability.normalizeName) before every loadTable, alterTable, dropTable, purgeTable, and tableExists. For most catalogs this normalized name is exactly what the source stores, so it round-trips fine. But normalization is not always reversible. When a catalog folds a name (for example an unquoted name to a fixed case) while the underlying source also allows case-sensitive objects created in a different case, listTables can return a physical name that the same normalized-name lookup then fails to find. A name Gravitino itself returned from listTables cannot always be passed straight back to loadTable/alterTable/dropTable. There is currently no extension point where a catalog can map a normalized identifier back to the name the source physically stores. Adding one lets any catalog whose normalization is not reversible make the list → load/alter/drop round-trip work, without changing behavior for the catalogs that don't need it. ### How should we improve? Add an opt-in, default-identity resolution hook: - TableCatalog#resolveTableName(NameIdentifier) (api) — default returns the identifier unchanged. - TableOperation#resolveTableName(String databaseName, String tableName) (catalog-jdbc-common) — default identity; JdbcCatalogOperations forwards to it. - TableNormalizeDispatcher (core) — after normalization and before dispatching, resolve the identifier through this hook, so the resolved identifier drives both the catalog call and the entity store key (keeping them consistent). For every catalog that does not override the hook, resolution is a pure identity call — no I/O, no behavior change. -- 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]
