Skip to content

Claim a restriction by the overloads it declares, not by its name - #363

Merged
estebanzimanyi merged 1 commit into
MobilityDB:mainfrom
estebanzimanyi:feat/retire-flav-claim-gate
Sep 3, 2026
Merged

Claim a restriction by the overloads it declares, not by its name#363
estebanzimanyi merged 1 commit into
MobilityDB:mainfrom
estebanzimanyi:feat/retire-flav-claim-gate

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

Which functions the two-operand restriction shape claims is read from the
catalog: a function whose sqlSignatures declare a two-argument overload is
claimed, one that declares none is not. The emitted surface does not move —
6264 registrations before and after, none added, none removed — so what
changes is where the answer comes from, not what it is.

The name decided it before, through a tstz substring for the time
restrictions and a span spelling for the value ones. A name cannot see which
overloads an extension declares, so a second shape existed for the
restrictions the first turned away, each guarded against the other so no
function was claimed twice. Both now answer from the same statement, and the
second reaches nothing: over the catalog it claims thirty functions, and all
thirty are claimed by the first. It is removed with its emitter and the three
tables left unused, and the generated files do not move, which is what says
they were unreachable rather than merely unused.

A box is admissible here only where the function answers a temporal value,
which is a restriction. shape_temporal_box owns the pairings of a temporal
value with a box that answer a scalar, and claiming those here as well emits
their body twice — a redefinition the compiler rejects. A registration set
cannot see it: two identical registrations collapse in a set where two
definitions do not, so the check that a surface is unchanged has to count
bodies as well.

Which functions the two-operand restriction shape claims is read from the
catalog: a function whose sqlSignatures declare a two-argument overload is
claimed, one that declares none is not. The emitted surface does not move —
6264 registrations before and after, none added, none removed — so what
changes is where the answer comes from, not what it is.

The name decided it before, through a `tstz` substring for the time
restrictions and a span spelling for the value ones. A name cannot see which
overloads an extension declares, so a second shape existed for the
restrictions the first turned away, each guarded against the other so no
function was claimed twice. Both now answer from the same statement, and the
second reaches nothing: over the catalog it claims thirty functions, and all
thirty are claimed by the first. It is removed with its emitter and the three
tables left unused, and the generated files do not move, which is what says
they were unreachable rather than merely unused.

A box is admissible here only where the function answers a temporal value,
which is a restriction. shape_temporal_box owns the pairings of a temporal
value with a box that answer a scalar, and claiming those here as well emits
their body twice — a redefinition the compiler rejects. A registration set
cannot see it: two identical registrations collapse in a set where two
definitions do not, so the check that a surface is unchanged has to count
bodies as well.
@estebanzimanyi
estebanzimanyi merged commit 7a7a91c into MobilityDB:main Sep 3, 2026
10 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