| ||||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | ADQL-2.0 Erratum 2 - Mathematical functions' Table issues | |||||||||||||||||||||||||
> > | ADQL-2.0 Erratum 2: Mathematical Functions' Table issues | |||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | IVOA DAL mailing list thread on July 2016 highlighted a possible issue with the description of the MOD function. Discussion went on also on this other thread. | |||||||||||||||||||||||||
> > | Author: DAL WG | |||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | Subsequently a different thread highlighted other mismatches between Table 1 (Mathematical functions) descriptions and the ADQL-2.0 grammar. | |||||||||||||||||||||||||
> > | Date last changed: 2017-05-26 | |||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | Erratum Content | |||||||||||||||||||||||||
> > | Rationale | |||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | Table 1 on page 8 of the ADQL-2.0 recommendation reports | |||||||||||||||||||||||||
> > | IVOA DAL mailing list thread on July 2016 highlighted a possible issue with the description of the MOD function. Discussion went on also on this other thread. | |||||||||||||||||||||||||
Deleted: | ||||||||||||||||||||||||||
< < |
| |||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | The descriptions reported in the above table are ambiguous with respect to the ADQL grammar or are conflicting with SQL definitions. | |||||||||||||||||||||||||
> > | Subsequently a different thread highlighted other mismatches between Table 1 (Mathematical functions) descriptions and the ADQL-2.0 grammar. | |||||||||||||||||||||||||
Deleted: | ||||||||||||||||||||||||||
< < | Issue 1 seems to conflict with SQL (92, 2003) definitions and, as well, the behaviour of the existing TAP services, suggesting that x and y should be swapped in the function description. Issue 2 description does not report x to be optional. Issues 3 & 4 descriptions do not report that n is optional and that it should default to 0. | |||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | Rationale | |||||||||||||||||||||||||
> > | Here follows what emerged as possible erratum content from those discussions. | |||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | (issue 1) MOD function description | |||||||||||||||||||||||||
> > | MOD function description | |||||||||||||||||||||||||
Deleted: | ||||||||||||||||||||||||||
< < | Considering what current TAP services using ADQL and the mathematical description of the modulo operator where | |||||||||||||||||||||||||
Added: | ||||||||||||||||||||||||||
> > | Considering what current TAP-1.0 services using ADQL and the mathematical description of the modulo operator where | |||||||||||||||||||||||||
M % N = R
with
| ||||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | The definition of mod(x, y) in ADQL-2.0 should be amended to "Returns the remainder of x/y". It should also be made clear, maybe in a future revision, to follow the above rules for the remainder and its sign. | |||||||||||||||||||||||||
> > | The definition of mod(x, y) in ADQL-2.0 should be amended to "Returns the remainder of x/y". It should also be made clear, maybe in a future revision, to follow the above rules for the remainder and its sign. | |||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | (issue 2) RAND optional seed | |||||||||||||||||||||||||
> > | RAND optional seed | |||||||||||||||||||||||||
Deleted: | ||||||||||||||||||||||||||
< < | ADQL BNF grammar (page 29 of ADQL-2.0) reports the | |||||||||||||||||||||||||
Added: | ||||||||||||||||||||||||||
> > | ADQL BNF grammar (page 29 of ADQL-2.0) reports the unsigned_integer x to be an optional argument (the seed) to the random mathematical function. This is not made explicit in the description in Table 1. | |||||||||||||||||||||||||
We suggest to amend the description changing the final "where x is a seed" into "where x is an optional seed" value. | ||||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | (issue 3) ROUND optional places number | |||||||||||||||||||||||||
> > | ROUND optional places number | |||||||||||||||||||||||||
Deleted: | ||||||||||||||||||||||||||
< < | ADQL BNF grammar (pages 29-30 of ADQL-2.0) reports the | |||||||||||||||||||||||||
Added: | ||||||||||||||||||||||||||
> > | ADQL BNF grammar (pages 29-30 of ADQL-2.0) reports the signed_integer n of ROUND(x, n) to be an optional argument. This signed integer number of places to round the value of x to is not made explicit to be optional in Table 1 description. Also, as per SQL standard, it should default to 0 when not explicitly present. | |||||||||||||||||||||||||
We suggest to amend the description of round(x, n) in Table 1 by adding a final sentence reading "The integer n is optional and its value should default to 0.". | ||||||||||||||||||||||||||
Changed: | ||||||||||||||||||||||||||
< < | (issue 4) TRUNCATE optional places number | |||||||||||||||||||||||||
> > | TRUNCATE optional places number | |||||||||||||||||||||||||
Deleted: | ||||||||||||||||||||||||||
< < | ADQL BNF grammar (page 30 of ADQL-2.0) reports the | |||||||||||||||||||||||||
Added: | ||||||||||||||||||||||||||
> > | ADQL BNF grammar (page 30 of ADQL-2.0) reports the signed_integer n of TRUNCATE(x, n) to be an optional argument. This signed integer number of places to truncate the value of x to is not made explicit to be optional in Table 1 description. Also, as per SQL standard, it should default to 0 when not explicitly present. | |||||||||||||||||||||||||
We suggest to amend the description of truncate(x, n) in Table 1 by adding a final sentence reading "The integer n is optional and its value should default to 0.". | ||||||||||||||||||||||||||
Added: | ||||||||||||||||||||||||||
> > |
Erratum ContentTable 1 on page 8 of the ADQL-2.0 recommendation reports the following descriptions for the hereby discussed mathematical functions:
| |||||||||||||||||||||||||
Impact AssesmentThe changes proposed by this erratum should impact no existing IVOA resource. Checks against the major TAP services show they already act following the behaviour here above described for the modulo function, while for the remaining 3 issue, all of them simply require some explicit wording in the description to follow the grammar constrains. Checks against a choice of RDBMS-es (PostgreSQL, MySQL, MariaDB, Apache Derby, HyperSQL and Oracle) shows the same behaviour too. See the mail threads referenced in the introduction of this page for details.<--
|