iceberg-python icon indicating copy to clipboard operation
iceberg-python copied to clipboard

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

Open RoseGoldIsntGay opened this issue 1 year ago • 1 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

RoseGoldIsntGay avatar May 07 '24 13:05 RoseGoldIsntGay

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

ndrluis avatar May 10 '24 15:05 ndrluis