Add TableLocationSupplier for more flexible table placement #2855
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently table location placement is somewhat restrictive because the base location is defined by the catalog, but doesn't have all relevant information to construct paths for certain scenarios. The only information available to the catalog is
TableIdentifier.Adding a TableLocationSupplier interface allows for more information to be used in defining the location of the table and allow for more flexible layouts and take advantage of other fields that are only populated later in the table creation lifecycle (like uuid, partition spec, sort order, or table properties).
Due to the way the table/metadata creation is performed, this is a little difficult to integrate both cleanly and in a backwards compatible way.
Posting this as a possible approach to allow for more flexible table layouts.