Skip to content

Report a @csqlfn naming a wrapper over another container - #118

Merged
estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:feat/container-family-lint
Sep 2, 2026
Merged

Report a @csqlfn naming a wrapper over another container#118
estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:feat/container-family-lint

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

A MEOS function's name ends in the container it takes, and its @csqlfn names
the PG wrapper it corresponds to. Where the two disagree about the container,
every existing check still passes: the wrapper exists, nothing is unreachable,
and the arity matches. What the catalog then derives is the SQL surface of a
different overload, so lint_container_family_csqlfn reports the disagreement
beside the ever/always, positional and case lints run over the same map.

Reading the suffixes literally reports the tree rather than a defect. A
concrete function name over a generic wrapper is how the value surface is
written throughout — adjacent_span_timestamptz names Adjacent_span_value
because one wrapper serves every base type — and forty names disagree that
way. Both sides are therefore read as a container family, mapping tstzset to
set and timestamptz to value, which leaves the seven that named a wrapper over
another container and which MobilityDB now corrects.

The lint reports none against a MobilityDB tree carrying that correction. Its
test states the case it must catch and four it must not, and neutering the
comparison fails the first while leaving the others passing, so the suite
discriminates the lint rather than agreeing with it either way.

A MEOS function's name ends in the container it takes, and its @csqlfn names
the PG wrapper it corresponds to. Where the two disagree about the container,
every existing check still passes: the wrapper exists, nothing is unreachable,
and the arity matches. What the catalog then derives is the SQL surface of a
different overload, so lint_container_family_csqlfn reports the disagreement
beside the ever/always, positional and case lints run over the same map.

Reading the suffixes literally reports the tree rather than a defect. A
concrete function name over a generic wrapper is how the value surface is
written throughout — adjacent_span_timestamptz names Adjacent_span_value
because one wrapper serves every base type — and forty names disagree that
way. Both sides are therefore read as a container family, mapping tstzset to
set and timestamptz to value, which leaves the seven that named a wrapper over
another container and which MobilityDB now corrects.

The lint reports none against a MobilityDB tree carrying that correction. Its
test states the case it must catch and four it must not, and neutering the
comparison fails the first while leaving the others passing, so the suite
discriminates the lint rather than agreeing with it either way.
@estebanzimanyi
estebanzimanyi merged commit 956c3ff into MobilityDB:master Sep 2, 2026
3 checks passed
@estebanzimanyi
estebanzimanyi deleted the feat/container-family-lint branch September 2, 2026 20:29
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