vollt
vollt copied to clipboard
Case sensitivity in LanguageFeature type
Language Features currently need canonical capitalisation of the feature type in order to be recognised, for instance if I create a feature like this:
new LanguageFeature(""ivo://ivoa.net/std/TAPRegExt#features-adqlgeo", "CIRCLE")
it is recognised by VOLLT as referring to the standard CIRCLE geometry function, but if I do it like this:
new LanguageFeature("ivo://ivoa.net/std/tapregext#features-adqlgeo", "CIRCLE")
it's not.
This isn't strictly speaking a bug, but it goes against the rule from the IVOID 2.0 specification section 2.1:
The Registry references are, as a whole, compared case-insensitively, and must be treated case-insensitively throughout to maintain backwards compatibility with version 1 of this specification. When comparing full IVOIDs, the local part must be split off and compared preserving case, while the registry part must be compared case-insensitively.
I think this could be fixed by just modifying the (already overridden) equals
and hashcode
methods in adql.parsers.feature.LanguageFeature
to work with case-folded values of type
.
I'm happy to write a PR on request, but I don't know whether it could cause subtle unwanted effects elsewhere.