apache / iceberg-python

Apache PyIceberg

Home Page:https://py.iceberg.apache.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot access table endpoint in REST catalog when table name contains a slash character (`/`)

RoseGoldIsntGay opened this issue Β· comments

Apache Iceberg version

0.4.0

Please describe the bug 🐞

When trying to get a table containing a slash character in the name from the Iceberg REST catalog, pyiceberg doesn't url-encode the table name, resulting in an incorrect route.
e.g:
table name: /some/table
api route: v1/namespaces/schema/tables//some/table which returns HTTP Error 400

The table name that's sent to the REST api should be url-encoded resulting in v1/namespaces/schema/tables/%2Fsome%2Ftable which does in fact work.

Adding urllib.parse.quote_plus(identifier.name) in the following line should solve this issue.
https://github.com/apache/iceberg-python/blob/main/pyiceberg/catalog/rest.py#L356

Hello @RoseGoldIsntGay, how did you create this table? I couldn't find any specifications in the Iceberg documentation about naming, but I believe the convention is that names may only contain alphanumeric characters and the symbols _ or -.