Skip to content

Keep the catalog derivable from master after the E writers and the circular-buffer names - #179

Merged
estebanzimanyi merged 2 commits into
MobilityDB:masterfrom
estebanzimanyi:catalog/plain-hexwkb-codec
Oct 5, 2026
Merged

estebanzimanyi merged 2 commits into
MobilityDB:masterfrom
estebanzimanyi:catalog/plain-hexwkb-codec

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

Keep the plain hex-WKB reader and writer as the codec of a class having both

MobilityDB 2510e750d0 gives cbuffer, npoint, nsegment, pose, posechain, stbox and tpcbox an
E writer beside the plain one, cbuffer_as_hexewkb beside cbuffer_as_hexwkb. One pattern of the
encoding table, as_hex?e?wkb, matched both, so #keyed of parser/codecs.py ranked them alike,
each serving one SQL type, and stopped the catalog: "type encodings that contradict
themselves: Cbuffer: cbuffer written by cbuffer_as_hexewkb and cbuffer_as_hexwkb", and so for
the six others. Every binding provisioning from master fails at that step, MobilitySpark main
among them.

The encoding tables of parser/enrich.py now state the plain hex-WKB pattern before the E one,
for the writers and the readers alike, so a class having both keeps the plain pair as its
codec, the one it stated before: the variant its send binds already decides whether the bytes
carry the SRID. A class having only the E pair, GSERIALIZED, keeps it. Each function is
classified under the same encoding as before; only the rank of the two patterns differs.

Witness: over the installed headers of a libmeos built from MobilityDB master 881945dca9,
run.py exits 1 with the seven contradictions above.

Measured over the same headers: run.py derives the catalog, 5149 functions; the seven classes
state their plain *_as_hexwkb writer and *_from_hexwkb reader, with the variant their send
binds, and GSERIALIZED its HexEWKB readers and writer. tests/test_codecs.py states the rank
over a class having both pairs, failing without the change.

Read the class-prefixed name of the static circular-buffer containment

MobilityDB 881945dca9 names the six relationships between two circular buffers by their class,
as every other static function of a base type is named: contains_cbuffer_cbuffer is
cbufferContains, declared as CREATE FUNCTION cbufferContains(cbuffer, cbuffer) in
mobilitydb/sql/cbuffer/200_cbuffer.in.sql. test_sqlfn_deployed.py reads that name over the
catalog generated from master, where it read cbuffer_contains.

Measured over the catalog derived from master 881945dca9: the suite passes, 484 tests, 25
skipped for want of a MobilityDB source tree or installed headers, which CI provides.

…ng both

MobilityDB 2510e750d0 gives cbuffer, npoint, nsegment, pose, posechain, stbox and tpcbox an
E writer beside the plain one, cbuffer_as_hexewkb beside cbuffer_as_hexwkb. One pattern of the
encoding table, _as_hex_?e?wkb, matched both, so #keyed of parser/codecs.py ranked them alike,
each serving one SQL type, and stopped the catalog: "type encodings that contradict
themselves: Cbuffer: cbuffer written by cbuffer_as_hexewkb and cbuffer_as_hexwkb", and so for
the six others. Every binding provisioning from master fails at that step, MobilitySpark main
among them.

The encoding tables of parser/enrich.py now state the plain hex-WKB pattern before the E one,
for the writers and the readers alike, so a class having both keeps the plain pair as its
codec, the one it stated before: the variant its send binds already decides whether the bytes
carry the SRID. A class having only the E pair, GSERIALIZED, keeps it. Each function is
classified under the same encoding as before; only the rank of the two patterns differs.

Witness: over the installed headers of a libmeos built from MobilityDB master 881945dca9,
run.py exits 1 with the seven contradictions above.

Measured over the same headers: run.py derives the catalog, 5149 functions; the seven classes
state their plain *_as_hexwkb writer and *_from_hexwkb reader, with the variant their send
binds, and GSERIALIZED its HexEWKB readers and writer. tests/test_codecs.py states the rank
over a class having both pairs, failing without the change.
MobilityDB 881945dca9 names the six relationships between two circular buffers by their class,
as every other static function of a base type is named: contains_cbuffer_cbuffer is
cbufferContains, declared as CREATE FUNCTION cbufferContains(cbuffer, cbuffer) in
mobilitydb/sql/cbuffer/200_cbuffer.in.sql. test_sqlfn_deployed.py reads that name over the
catalog generated from master, where it read cbuffer_contains.

Measured over the catalog derived from master 881945dca9: the suite passes, 484 tests, 25
skipped for want of a MobilityDB source tree or installed headers, which CI provides.
@estebanzimanyi
estebanzimanyi merged commit 0438baa into MobilityDB:master Oct 5, 2026
3 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