Skip to content

Give each topological operator its SQL names by class - #187

Merged
estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:portable/topology-names-by-class
Oct 10, 2026
Merged

estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:portable/topology-names-by-class

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

The topological operators &&, @>, <@ and -|- have one SQL name per class of their operands, as
the position operators have: MobilityDB names the functions behind them by the
class they compare, && being setOverlaps, spanOverlaps, spansetOverlaps, tboxOverlaps,
stboxOverlaps and tpcboxOverlaps, a temporal operand taking the class of its bounding box. No
operator of MobilityDB master is backed by a function named overlaps, contains, contained or
adjacent: its one contains, contains(geometry, geometry), is the spatial relationship, which
carries no operator and which Spark and Flink call geoContains. The mapping
holds them under positionFamilies as the family topology, each operator with its stem overlaps,
contains, contained or adjacent, and not as bare names under families, so byOperator and
byBareName carry 21 pairs and byPositionOperator 20 operators. attach_position_names derives
their names from the @sqlfn tags of the functions whose @sqlop is the operator, as it derives the
position names, and stops the pipeline on a tag that is not the class followed by the stem, such
as a shared contains_bbox tag. classify_backing_sqlfn flags the shared backing tag of a bare
name, which ~= alone has; MobilityDB master carries no such tag.

The parity audit lists the four under byPosition, backed by the MEOS functions their stem
prefixes (overlaps_, contains_), and the documentation, the schema description and the
cross-repository handoff state the topological operators beside the position ones.

Measured over MobilityDB master 96d665686e: run.py derives 88 names by class for the 20
operators, 24 of them topological: setOverlaps … tpcboxOverlaps, the seven @> names including
tjsonbContains, the six <@ names and the five -|- names, each one a function MobilityDB
master's .in.sql files declare. portable_parity.py reads 41 of 41 operators backed. The suite
collects 534 tests, the portable ones pass with none skipped, and the floor of
.github/workflows/pytest.yml stays 534. JMEOS's Spark UDF surface, generated from this catalog,
registers none of the bare overlaps, contains, contained and adjacent, of which contains
would replace Spark's own function; its typed Spark and Flink SQL surfaces are unchanged.

Why: a binding registers what the catalog states, and the catalog states the names MobilityDB
declares for these operators.

The topological operators &&, @>, <@ and -|- have one SQL name per class of their operands, as
the position operators have: MobilityDB names the functions behind them by the
class they compare, && being setOverlaps, spanOverlaps, spansetOverlaps, tboxOverlaps,
stboxOverlaps and tpcboxOverlaps, a temporal operand taking the class of its bounding box. No
operator of MobilityDB master is backed by a function named overlaps, contains, contained or
adjacent: its one contains, contains(geometry, geometry), is the spatial relationship, which
carries no operator and which Spark and Flink call geoContains. The mapping
holds them under positionFamilies as the family topology, each operator with its stem overlaps,
contains, contained or adjacent, and not as bare names under families, so byOperator and
byBareName carry 21 pairs and byPositionOperator 20 operators. attach_position_names derives
their names from the @sqlfn tags of the functions whose @sqlop is the operator, as it derives the
position names, and stops the pipeline on a tag that is not the class followed by the stem, such
as a shared contains_bbox tag. classify_backing_sqlfn flags the shared backing tag of a bare
name, which ~= alone has; MobilityDB master carries no such tag.

The parity audit lists the four under byPosition, backed by the MEOS functions their stem
prefixes (overlaps_*, contains_*), and the documentation, the schema description and the
cross-repository handoff state the topological operators beside the position ones.

Measured over MobilityDB master 96d665686e: run.py derives 88 names by class for the 20
operators, 24 of them topological: setOverlaps … tpcboxOverlaps, the seven @> names including
tjsonbContains, the six <@ names and the five -|- names, each one a function MobilityDB
master's .in.sql files declare. portable_parity.py reads 41 of 41 operators backed. The suite
collects 534 tests, the portable ones pass with none skipped, and the floor of
.github/workflows/pytest.yml stays 534. JMEOS's Spark UDF surface, generated from this catalog,
registers none of the bare overlaps, contains, contained and adjacent, of which contains
would replace Spark's own function; its typed Spark and Flink SQL surfaces are unchanged.

Why: a binding registers what the catalog states, and the catalog states the names MobilityDB
declares for these operators.
@estebanzimanyi
estebanzimanyi merged commit ffa1f6f into MobilityDB:master Oct 10, 2026
3 checks passed
@estebanzimanyi
estebanzimanyi deleted the portable/topology-names-by-class branch October 10, 2026 22:46
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