Hi folks,

While reviewing the PR https://github.com/apache/polaris/pull/4966, I'm
thinking maybe we could simplify the location-related flags a bit.

Today we have both ALLOW_EXTERNAL_TABLE_LOCATION and
ALLOW_EXTERNAL_METADATA_FILE_LOCATION. Their descriptions are similar but
serve different purposes. From reading the code,
ALLOW_EXTERNAL_TABLE_LOCATION mostly acts like a metadata-location escape
hatch: it relaxes the check that metadata files must live under the table
location. That overlaps heavily with ALLOW_EXTERNAL_METADATA_FILE_LOCATION,
and the name is easy to confuse with ALLOW_UNSTRUCTURED_TABLE_LOCATION.

I think the clearer model is:

   - ALLOW_UNSTRUCTURED_TABLE_LOCATION: table/view locations may be outside
   the structured namespace layout.
   - ALLOW_EXTERNAL_METADATA_FILE_LOCATION: metadata files may be outside
   the table location.

Proposal: deprecate ALLOW_EXTERNAL_TABLE_LOCATION, keep it as a
backward-compatible alias for the metadata-location behavior, and update
docs/tests accordingly.

There’s also one related doc mismatch:
DEFAULT_LOCATION_OBJECT_STORAGE_PREFIX_ENABLED says it requires
ALLOW_EXTERNAL_TABLE_LOCATION, but the implementation checks
ALLOW_UNSTRUCTURED_TABLE_LOCATION. [1]

Thoughts?

1.
https://github.com/apache/polaris/blob/1ef1d722521e460381d9cc8e8461619727df4c18/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/LocalIcebergCatalog.java#L1148


Yufei

Reply via email to