ADQL-2.0 Erratum 3: Coordinate system argument as a string literal
Author: Grégory Mantelet
Date last changed: 2020-05-11
Rationale
While adapting the grammar of
POINT
,
BOX
,
CIRCLE
and
POLYGON
for an
alternative function signature introduced in ADQL-2.1, it appeared that the grammar of the first argument of these functions was more permissive than expected (see the GitHub
Issue #29). This argument represents the coordinate system of the geometry coordinates. The grammar of
ADQL-2.0 lets it to be any string expression which means a string concatenation, column references, User Defined Functions (UDF), any other function returning a string, but also numerics. Considering that a coordinate system can not be represented by a numeric expression, this case should have already been excluded. Besides, allowing a non constant expression as coordinate system makes its interpretation very difficult by a parser (need a parsing and all transform functions on the database side), but also for the users who have no explicit way to know what kind of coordinate transformation is applied (and thus, an uncertainty about the query result).
This Erratum aims to allow the expression of the coordinate system argument of
POINT
,
BOX
,
CIRCLE
and
POLYGON
only as a string literal.
Erratum Content
This Erratum changes the BNF grammar of , in the Appendix A, p.25, from:
<coord_sys> ::= <string_value_expression>
into:
<coord_sys> ::= <character_string_literal>
The description of the first argument of
BOX
,
CIRCLE
,
POINT
and
POLYGON
is also changed in resp. section 2.4.3 (p.13), section 2.4.5 (p.14), section 2.4.12 (p.18) and section 2.4.13 (p.18), from:
the coordinate system is a string value expression as defined in Section 2.4.1.
into:
the coordinate system is a string literal as defined in Section 2.4.1.
Impact Assessment
Currently, very few
ADQL services are able to interpret the coordinate system argument and to perform appropriate coordinates transformations. Currently, such known services are able to do so only if the coordinate system is given as a string literal. So this Erratum will not impact them.
A possible impact would be for
ADQL services that can interpret coordinate system and apply coordinates transformations system from a column reference (e.g. via an uploaded table). No such service is known at the present time. If anyway one exists, it is perfectly allowed to offer more features in an implementation as long as the recommended
ADQL language is supported.
From
ADQL-2.1, the coordinate system argument is deprecated and becomes optional. So, no impact expected in future versions of
ADQL where this argument will likely be removed.