Hi everyone,

We are considering a design in which a separate bbox column is stored alongside 
a geometry column, similar to the GeoParquet 1.1 bbox covering pattern:

geom:      geometry
geom_bbox: struct<
  xmin: double,
  ymin: double,
  xmax: double,
  ymax: double
>

We would use `geom_bbox` as the row-level bbox covering for `geom`.

We are interested in thoughts on the following approach:

1. Is there already an Iceberg-native mechanism for declaring that one column 
is the bbox covering for a geometry or geography column?

2. If not, would a table property be a reasonable way to declare this 
relationship? 
For example: 
"geo.geom.covering.bbox": "geom_bbox"

3. If a table property is a reasonable direction, is there a preferred naming 
convention or value format? In particular, would it make sense to follow the 
relevant GeoParquet 1.1 `covering.bbox` semantics and field-path format?

4. When writing native Parquet `GEOMETRY` / `GEOGRAPHY` logical types, would it 
make sense to also write GeoParquet 1.1 `geo` metadata so that existing 
GeoParquet readers can discover the bbox covering column?

5. Are there any existing discussions or proposals related to row-level 
geometry covering columns, metadata mappings, or planner support for rewriting 
or pushing down geometry predicates through an associated bbox covering column?

We are mainly trying to understand whether this looks like a reasonable 
direction, and whether there are existing conventions or prior work that we 
should align with.

Thanks,
Min

Reply via email to