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]

Reply via email to