Apache Polaris 1.5.0

Released on May 18th, 2026.

Downloadsđź”—

ArtifactPGP SigSHA-512
source tar.gz.asc.sha512
binary tgz.asc.sha512
binary zip.asc.sha512
Spark 3.5 with Scala 2.12 Client Jar.asc.sha512
Spark 3.5 with Scala 2.13 Client Jar.asc.sha512

Release Notesđź”—

Upgrade notesđź”—

Breaking changesđź”—

  • The ExternalCatalogFactory interface has been renamed to FederatedCatalogFactory. Its createCatalog() and createGenericCatalog() method signatures have been extended to include a catalogProperties parameter of type Map<String, String> for passing through proxy and timeout settings to federated catalog HTTP clients.
  • The ConnectionCredentials.of() method now throws an exception when more than one expiration timestamp property is present in the credentials map. Only a single expiration timestamp is allowed per credentials bundle.
  • Entity names (namespaces, tables, views, generic tables) submitted to the REST layer are now rejected with HTTP 400 if they are empty, contain a /, or have leading/trailing whitespace. Clients that were previously able to create such entities must rename them before upgrading.
  • The MaintenanceService.performMaintenance() signature now requires an explicit OptionalLong overrideRunId argument to supersede the latest unfinished maintenance run.

New Featuresđź”—

  • Added envFrom support in Helm chart.
  • Added summarize subcommand to Polaris CLI.
  • Added find and tables options to Polaris CLI.
  • Added support for multiple event listeners. Set polaris.event-listener.types to a comma-separated list of event listener types to enable multiple event listeners.
  • Added support for enabling only a subset of event types and event categories per event listener. Set polaris.event-listener.<name>.enabled-event-types or polaris.event-listener.<name>.enabled-event-categories to the list of event types or categories for the specified event listener to only consume the selected subset of events.
  • Added support for Apache Ranger as an external authorizer (Beta).

Changesđź”—

  • Improved Python CLI error messages and exit codes for invalid arguments and configuration errors.
  • Removed unused PolarisAuthorizableOperation values: REVOKE_PRINCIPAL_GRANT_FROM_PRINCIPAL_ROLE, REVOKE_PRINCIPAL_ROLE_GRANT_FROM_PRINCIPAL_ROLE, LIST_GRANTS_ON_ROOT, ADD_PRINCIPAL_GRANT_TO_PRINCIPAL_ROLE, LIST_GRANTS_ON_PRINCIPAL, ADD_PRINCIPAL_ROLE_GRANT_TO_PRINCIPAL_ROLE, LIST_GRANTS_ON_PRINCIPAL_ROLE, ADD_CATALOG_ROLE_GRANT_TO_CATALOG_ROLE, REVOKE_CATALOG_ROLE_GRANT_FROM_CATALOG_ROLE, LIST_GRANTS_ON_CATALOG_ROLE, LIST_GRANTS_ON_CATALOG, LIST_GRANTS_ON_NAMESPACE, LIST_GRANTS_ON_TABLE, LIST_GRANTS_ON_VIEW.
  • Changed deprecated APIs in JUnit 5. This change will force downstream projects that pull in the Polaris test packages to adopt JUnit 6.
  • Added client id collision check during reset.
  • The nosql maintenance-run admin command now rejects a new run when the latest recorded maintenance run is still unfinished, unless the operator explicitly passes --supersede-run=<run-id>.
  • Added version option to Polaris CLI.

Deprecationsđź”—

  • The configuration option polaris.event-listener.type is deprecated and will be removed later. Please use polaris.event-listener.types instead.

Fixesđź”—

  • Fixed renameTable to return HTTP 204 (No Content) instead of 200, as per the Iceberg REST Catalog spec.