Skip to content

Warehouse path is always required for Glue catalog, even when there isn't one #941

Description

@omerhadari

The warehouse config prop for Glue catalog is required, but it isn't always known or required. The Glue catalog ID is enough in order to resolve metadata locations.

Moreover - I don't think this path is used for anything but protocol (FileIO type) inference? I was able to work around this issue by passing the correct Glue catalog ID (which is the AWS account ID) and s3:// as the warehouse, with no issue.

In my opinion warehouse should be replaced with something like FileIO type and only the Glue catalog ID should be required, but for backwards compatibility not passing warehouse should at least be allowed.

Activity

  1. CTTY commented on May 9, 2025

    @CTTY
    Collaborator

    I think this makes sense and making the warehouse path optional matches the iceberg-java behavior. We should probably fix this while implementing the new catalog builder: #1259

  2. chasehaddleton commented on Jun 10, 2025

    @chasehaddleton

    I believe there is an entire class of bugs caused by the current behavior. For example, if you pass s3 as the warehouse, but the catalog contains tables with both s3 and s3a files, then it erroneously fails saying that protocols do not match (even though it is immaterial). Moving to a FileIOType could solve this, assuming it's paired with a set of "valid protocols for a type".

  3. added this to the 0.6.0 Release milestone on Jun 11, 2025
  4. lliangyu-lin commented on Aug 5, 2025

    @lliangyu-lin
    Contributor

    Another issue is that when loading the table from glue, the table is read using the catalog file io. So if catalog file io is set to S3, but the table loaded is stored in another storage, it will continue to use the S3 file io to read the metadata. I think the file io should be inferred during create table and load table instead of initialized with the catalog...

    Reference in python

  5. github-actions commented on Feb 2, 2026

    @github-actions
    Contributor

    This issue has been automatically marked as stale because it has been open for 180 days with no activity. It will be closed in next 14 days if no further activity occurs. To permanently prevent this issue from being considered stale, add the label 'not-stale', but commenting on the issue is preferred when possible.

  6. blackmwk commented on Feb 2, 2026

    @blackmwk
    Contributor

    Don't close this, it's a but.

  7. David-Banquet commented on Oct 5, 2026

    @David-Banquet

    A status check on main, since the code has moved since this was opened.

    The original concern is mostly gone: the Glue catalog no longer infers its FileIO from warehouse, it builds it from the storage factory and the catalog properties. The only remaining use of warehouse is the default table location in create_table, and only when the Glue database has no LocationUri (get_default_table_location in utils.rs).

    What still differs from Java is when the check happens. GlueCatalogBuilder::load fails with "Catalog warehouse is required" before any call to Glue. Java's GlueCatalog accepts a missing warehouse and only throws in defaultWarehouseLocation, when a table is created without a location in a database that has no LocationUri. So a read-only client, or one that always creates tables in databases with a location, works in Java without a warehouse and is refused in Rust.

    @blackmwk I see #3102 keeps the fail-fast validation on purpose. Would you take a follow-up that moves the check to create_table, matching Java? If so I can open it once #3102 is merged.

  8. David-Banquet commented on Oct 12, 2026

    @David-Banquet

    @blackmwk #3102 was closed by the stale bot last night. Do you plan to reopen it? If not, I can open the follow-up for this issue against main now: keep the warehouse property optional in GlueCatalogBuilder::load and only fail in create_table when the database has no LocationUri, as Java does. It is a small change and I can rebase it on #3102 if that comes back first.

  9. blackmwk commented on Oct 13, 2026

    @blackmwk
    Contributor

    Hi, @David-Banquet Yes, I'll reopen it.

  10. David-Banquet commented on Oct 14, 2026

    @David-Banquet

    Thanks. I'll wait for #3102 to be back and open the follow-up on top of it: keep warehouse optional in GlueCatalogBuilder::load and only fail in create_table when the database has no LocationUri. If you'd rather fold that into #3102 directly, that works for me too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions