peakki opened a new issue, #69085:
URL: https://github.com/apache/doris/issues/69085

   ### Version
   Apache Doris 4.1.4.1 (also present on master: 
`InfoSchemaDb.getDbNameFromMysqlTableSchema`)
   
   ### What happened
   With an Iceberg REST catalog (Nessie) that has two-level namespaces, Doris 
exposes each namespace as a database named `a.b` (e.g. `gold.reporting`).
   
   - `SHOW DATABASES FROM <catalog>` lists `gold.reporting` ✔
   - `SHOW TABLES FROM <catalog>.\`gold.reporting\`` lists the tables ✔
   - `information_schema.schemata` lists the database ✔
   - `information_schema.tables` / `information_schema.columns` / `SHOW TABLE 
STATUS` return **0 rows** for that database ✘ (for root and for a restricted 
user alike)
   
   FE log: `Database reporting does not exist in the remote system`.
   
   ### Cause (from source)
   `FrontendServiceImpl.listTableStatus` maps the schema name through 
`getDbNameFromMysqlTableSchema`. For a non-internal catalog, a name with 
exactly one dot is treated as `<cluster>.<db>` and only the part after the dot 
is kept, so `gold.reporting` becomes `reporting`, which does not exist. 
(4.1.4.1 `FrontendServiceImpl.java` ~L578-587; on master moved to 
`InfoSchemaDb.getDbNameFromMysqlTableSchema`, unchanged.) Setting 
`show_full_dbname_in_info_schema_db=true` does not help (a two-dot name is then 
passed through whole and still not found).
   
   ### Related
   For single-level external databases, `listTableStatus` loads every table 
(`getComment`) and drops the **whole** database from the result when any one 
table fails to load (e.g. one table with unreadable metadata), so the other 
tables vanish from information_schema too.
   
   ### Impact
   Tools that enumerate tables via information_schema (BI tools, SQLAlchemy 
dialects, OpenMetadata's Doris connector, Superset physical datasets) see no 
tables in nested-namespace Iceberg catalogs.
   
   ### How to reproduce
   1. CREATE CATALOG with `type=iceberg`, `iceberg.catalog.type=rest` pointing 
at a REST catalog (Nessie 0.108.x) that has namespace `gold.reporting` with a 
table `t`.
   2. `SHOW TABLES FROM cat.\`gold.reporting\`;` → `t`
   3. `SELECT * FROM cat.information_schema.tables WHERE 
table_schema='gold.reporting';` → empty
   
   ### Expected
   information_schema reflects the same tables as SHOW TABLES; a single failing 
table should not hide the rest.
   


-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to