Skip to content

Add the temporal-covering descriptor to the catalog#24

Open
estebanzimanyi wants to merge 1 commit into
MobilityDB:masterfrom
estebanzimanyi:feat/temporal-covering-descriptor
Open

Add the temporal-covering descriptor to the catalog#24
estebanzimanyi wants to merge 1 commit into
MobilityDB:masterfrom
estebanzimanyi:feat/temporal-covering-descriptor

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

Folds meta/temporal-covering.json into meos-idl.json as temporalCovering — the single codegen source of truth for projecting a MEOS temporal column into Parquet/Iceberg covering columns (RFC #870 TemporalParquet / #913 Temporal Data Lake). Every binding/engine generates the identical covering schema from this one mapping, so a temporal table prunes the same way on every platform (Iceberg manifest pruning + Parquet row-group min/max) with no spatial-aware engine — GeoParquet 1.1 covering.bbox.

What it adds

  • meta/temporal-covering.json (+ JSON schema) — curated descriptor keyed by temporal-type class, not by type:
    • spatialSTBOX covering (xmin..zmax, tmin/tmax, srid) via tspatial_to_stbox / tspatial_srid — tgeompoint, tgeogpoint, tgeometry, tgeography, tcbuffer, tnpoint, tpose, trgeometry.
    • numberTBOX covering (vmin/vmax, tmin/tmax) via tnumber_to_tbox — tint, tfloat, tbigint.
    • value codec temporal_as_hexwkb / temporal_from_hexwkb; the canonical MEOS-WKB value column stays lossless, covering columns are denormalised derivations.
  • parser/covering.pyattach_temporal_covering folds it into the catalog with a byType index and the set of referenced C symbols.
  • tools/covering_parity.py — audits that every referenced symbol is exported by the catalog and every covered type is a real MeosType; a miss is reported as a worklist (add/export the accessor in MEOS), never a fabricated pass.
  • Tests + docs/temporal-covering.md. Mirrors the portable-aliases infrastructure exactly.

Verification

  • tests/test_covering.py + tests/test_covering_parity.py green (11 tests).
  • Live gate against the generated catalog: all referenced symbols backed (100%), all 11 covered types valid MeosType.

Not yet covered (surfaced as gaps, not filled binding-side)

  • Time-only (tbool, ttext): needs a span lower/upper bound accessor (not exported) — close in MEOS C.
  • Point-cloud / cell-index types: fold into spatial once a uniform temporal→STBOX converter is confirmed.

Fold meta/temporal-covering.json into meos-idl.json as temporalCovering, the
single codegen source of truth for projecting a MEOS temporal column into
Parquet/Iceberg covering columns (RFC #870 TemporalParquet / #913 Temporal
Data Lake). Every binding generates the identical covering schema, so a
temporal table prunes the same way on every platform (Iceberg manifest +
Parquet row-group min/max) with no spatial-aware engine.

The descriptor is keyed by temporal-type class, not by type: the spatial
class derives an STBOX covering (xmin..zmax, tmin/tmax, srid) via
tspatial_to_stbox; the number class derives a TBOX covering (vmin/vmax,
tmin/tmax) via tnumber_to_tbox. parser/covering.py attaches it with a
byType index and the set of referenced C symbols; tools/covering_parity.py
audits that every symbol is exported by the catalog and every covered type
is a real MeosType, reporting any miss as a worklist rather than a pass.

Mirrors the portable-aliases infrastructure (descriptor + schema + parser
hook + parity audit + tests + doc).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant