Skip to content

Generate the temporal pointcloud families (tpcpoint, tpcpatch) - #236

Merged
estebanzimanyi merged 1 commit into
MobilityDB:mainfrom
estebanzimanyi:feat/duck-pointcloud-generated
Jul 31, 2026
Merged

Generate the temporal pointcloud families (tpcpoint, tpcpatch)#236
estebanzimanyi merged 1 commit into
MobilityDB:mainfrom
estebanzimanyi:feat/duck-pointcloud-generated

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

Registers the tpcpoint and tpcpatch families in the UDF generator so their temporal surface is emitted from the MEOS catalog like every other family, instead of being hand-written.

Generator (tools/codegen_duck_udfs.py)

  • Add the tpcpoint/tpcpatch/pcpoint/pcpatch tokens to REGISTERED_FAMILIES, reg_scope rules, and TO_TYPE/SIG_TEMPORAL_ACC entries mapping the temporal types.
  • Add a self-contained blob<->Pcpoint/Pcpatch value marshaller (both are varlena, mirroring the existing Cbuffer marshalling) plus the pointcloud type includes.

This emits the generic temporal accessors for both types with the canonical bare SQL names.

Type registration (src/pointcloud/)

  • Canonicalize the hand type to the lowercase catalog names (meos_catalog.c: pcpoint, tpcpoint, pcpatch, tpcpatch), replacing the non-canonical uppercase TPCPOINT/TPCPATCH aliases.
  • Add the base pcpoint/pcpatch value types as BLOB aliases (mirroring cbuffer).

Value surface: startValue/endValue/atValue/getValues/constructor for tpcpoint/tpcpatch route through the Pcpoint/Pcpatch marshaller and generate automatically once the corresponding Temporal<T> value functions are exposed in MEOS (the pointcloud temporal types do not yet carry them, unlike tjsonb). The binding side is complete and wired.

The generated surface coexists with the existing hand registrations (DuckDB resolves the generated overloads).

@estebanzimanyi
estebanzimanyi force-pushed the feat/duck-pointcloud-generated branch 5 times, most recently from 93f6e20 to 8cbfc1a Compare July 30, 2026 19:06
Register the tpcpoint and tpcpatch families in the UDF generator so their
temporal surface is emitted from the MEOS catalog like every other family:
add the tokens to REGISTERED_FAMILIES, reg_scope rules, and TO_TYPE/
SIG_TEMPORAL_ACC entries mapping the temporal types, plus a self-contained
blob<->Pcpoint/Pcpatch value marshaller (both are varlena, mirroring the
Cbuffer marshalling) and the pointcloud type includes.

Canonicalize the hand type registration to the lowercase catalog names
(meos_catalog.c: pcpoint, tpcpoint, pcpatch, tpcpatch), replacing the
non-canonical uppercase TPCPOINT/TPCPATCH aliases, and add the base
pcpoint/pcpatch value types as BLOB aliases mirroring cbuffer.

This emits the generic temporal accessors for both types; the value
accessors (startValue/atValue/getValues/constructor) wire through the
Pcpoint/Pcpatch marshaller and generate once the corresponding MEOS
temporal-value functions are exposed.
@estebanzimanyi
estebanzimanyi force-pushed the feat/duck-pointcloud-generated branch from 8cbfc1a to cf7f6f8 Compare July 31, 2026 06:08
@estebanzimanyi
estebanzimanyi merged commit 13845af into MobilityDB:main Jul 31, 2026
17 checks passed
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