This happens if SET write_full_path_in_iceberg_metadata = 1 is not set in Clickhouse, but we should print a meaningful error in ice-rest-catalog.
CH server:
create table ice.`flowers.sample5`( value Int32) ENGINE=Iceberg('http://localhost:9000/bucket1/flowers/sample5',access_key_id='miniouser', secret_access_key='miniopassword') partition by value;
2026-07-08 15:29:14 [33519968-36/1351985] INFO c.a.i.r.c.i.r.RESTCatalogServlet > @token POST v1/namespaces/flowers/tables
2026-07-08 15:29:14 [33519968-36/1351985] ERROR c.a.i.r.c.i.r.RESTCatalogServlet > @token POST v1/namespaces/flowers/tables
java.lang.NullPointerException: unsupported scheme "null": "/flowers/sample5/metadata/00000-89d909f6-06f4-462a-9728-d58d2f1e6a95.metadata.json"
at org.apache.iceberg.relocated.com.google.common.base.Preconditions.checkNotNull(Preconditions.java:920)
at com.altinity.ice.internal.iceberg.io.SchemeFileIO.io(SchemeFileIO.java:144)
at com.altinity.ice.internal.iceberg.io.SchemeFileIO.newOutputFile(SchemeFileIO.java:91)
at org.apache.iceberg.BaseMetastoreTableOperations.writeNewMetadata(BaseMetastoreTableOperations.java:157)
at org.apache.iceberg.BaseMetastoreTableOperations.writeNewMetadataIfRequired(BaseMetastoreTableOperations.java:152)
at org.apache.iceberg.jdbc.JdbcTableOperations.doCommit(JdbcTableOperations.java:106)
at org.apache.iceberg.BaseMetastoreTableOperations.commit(BaseMetastoreTableOperations.java:127)
at org.apache.iceberg.BaseMetastoreCatalog$BaseMetastoreCatalogTableBuilder.create(BaseMetastoreCatalog.java:201)
at org.apache.iceberg.rest.CatalogHandlers.createTable(CatalogHandlers.java:280)
at com.altinity.ice.rest.catalog.internal.rest.RESTCatalogAdapter.handle(RESTCatalogAdapter.java:218)
at com.altinity.ice.rest.catalog.internal.rest.RESTCatalogMiddlewareConfig.handle(RESTCatalogMiddlewareConfig.java:33)
at com.altinity.ice.rest.catalog.internal.rest.RESTCatalogMiddlewareTableConfig.handle(RESTCatalogMiddlewareTableConfig.java:33)
at com.altinity.ice.rest.catalog.internal.rest.RESTCatalogMiddlewareCredentials.handle(RESTCatalogMiddlewareCredentials.java:62)
at com.altinity.ice.rest.catalog.internal.rest.RESTCatalogMiddlewareTableCredentials.handle(RESTCatalogMiddlewareTableCredentials.java:40)
at com.altinity.ice.rest.catalog.internal.rest.RESTCatalogServlet.handle(RESTCatalogServlet.java:141)
at com.altinity.ice.rest.catalog.internal.rest.RESTCatalogServlet.doPost(RESTCatalogServlet.java:191)
at com.altinity.ice.rest.catalog.internal.rest.RESTCatalogAuthorizationHandler.next(RESTCatalogAuthorizationHandler.java:84) [6 skipped]
at com.altinity.ice.rest.catalog.internal.rest.RESTCatalogAuthorizationHandler.handle(RESTCatalogAuthorizationHandler.java:54)
[28 skipped]
This happens if
SET write_full_path_in_iceberg_metadata = 1is not set in Clickhouse, but we should print a meaningful error in ice-rest-catalog.CH server: