From 69ab1e27e7f0b4a1abb2d0140d7c2dd2150fe7a8 Mon Sep 17 00:00:00 2001 From: Raghav Aggarwal Date: Wed, 2 Sep 2026 02:33:31 +0530 Subject: [PATCH] HIVE-29878: HMS REST Catalog ignores pagination for listTables and listNamespaces --- .../iceberg/rest/HMSCatalogAdapter.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogAdapter.java b/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogAdapter.java index 885e30063528..d087f9793c10 100644 --- a/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogAdapter.java +++ b/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogAdapter.java @@ -241,7 +241,17 @@ private ListNamespacesResponse listNamespaces(Map vars) { } else { namespace = Namespace.empty(); } - return castResponse(ListNamespacesResponse.class, CatalogHandlers.listNamespaces(asNamespaceCatalog, namespace)); + String pageToken = PropertyUtil.propertyAsString(vars, "pageToken", null); + String pageSize = PropertyUtil.propertyAsString(vars, "pageSize", null); + if (pageSize != null) { + return castResponse( + ListNamespacesResponse.class, + CatalogHandlers.listNamespaces(asNamespaceCatalog, namespace, pageToken, pageSize)); + } else { + return castResponse( + ListNamespacesResponse.class, + CatalogHandlers.listNamespaces(asNamespaceCatalog, namespace)); + } } private CreateNamespaceResponse createNamespace(Object body) { @@ -278,7 +288,15 @@ private UpdateNamespacePropertiesResponse updateNamespace(Map va private ListTablesResponse listTables(Map vars) { Namespace namespace = namespaceFromPathVars(vars); - return castResponse(ListTablesResponse.class, CatalogHandlers.listTables(catalog, namespace)); + String pageToken = PropertyUtil.propertyAsString(vars, "pageToken", null); + String pageSize = PropertyUtil.propertyAsString(vars, "pageSize", null); + if (pageSize != null) { + return castResponse( + ListTablesResponse.class, + CatalogHandlers.listTables(catalog, namespace, pageToken, pageSize)); + } else { + return castResponse(ListTablesResponse.class, CatalogHandlers.listTables(catalog, namespace)); + } } private LoadTableResponse createTable(Map vars, Object body) {