fix(glue): Support create_table_transaction for S3 Tables federated databases by jamesbornholt · Pull Request #3210 · apache/iceberg-python

@jamesbornholt

…atabases

For S3 Tables, the warehouse location is managed by S3 Tables and only
available after a Glue table entry is created. create_table() already
handled this via _create_table_s3tables(), but create_table_transaction()
went through the base class path which failed with 'No default path is
set'.

This adds a create_table_transaction() override on GlueCatalog that, for
S3 Tables federated databases:
  1. Pre-creates a minimal Glue table entry so S3 Tables allocates storage
  2. Retrieves the managed location from the Glue table
  3. Builds the staged table targeting that managed location
  4. Returns an _S3TablesCreateTableTransaction that cleans up the
     staging table on abort/failure

Also refactors commit_table() to handle the case where a Glue table
exists but has no metadata_location yet (the staging table case),
branching on current_glue_table instead of current_table for the
update-vs-create decision.