geruh opened a new issue, #3337: URL: https://github.com/apache/iceberg-python/issues/3337
### Feature Request / Improvement In #3263, the `iceberg_type` column was added to the SQLCatalog and filters it in `list_tables`, but the other table operations (i.e. load_table, drop_table, rename_table, commit_table) don't check it yet. That means a view row written by iceberg java or iceberg-rust can bleed in pythons SQLCatalog table operations. Java's V1 catalog applies `WHERE (iceberg_type = 'TABLE' OR iceberg_type IS NULL)` everywhere ([JdbcUtil.java#L168](https://github.com/apache/iceberg/blob/main/core/src/main/java/org/apache/iceberg/jdbc/JdbcUtil.java#L168)). We should do the same. Probably worth extracting a small helper since the predicate would now appear in ~5+ places. Repro steps: ```python catalog = SqlCatalog("test", uri="sqlite:///...", warehouse="...") catalog.create_namespace("ns") # bypass and sim java/rust writing a view row with catalog.engine.connect() as conn: conn.execute(text( "INSERT INTO iceberg_tables VALUES " "('test', 'ns', 'a_view', 's3://fake/m.json', NULL, 'VIEW')" )) conn.commit() catalog.drop_table(("ns", "a_view")) # Silently deletes the view row :/ ``` -- 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]
