TAPNotes & Mistake in ADQL grammar ?
Grégory Mantelet
gmantele at ari.uni-heidelberg.de
Thu Oct 2 10:51:03 CEST 2014
On 02.10.2014 07:53, Markus Demleitner wrote:
> Dear DAL,
>
> On Wed, Oct 01, 2014 at 06:47:25PM +0200, Grégory Mantelet wrote:
>> 1/ In section 2.2.5 of TAPNotes, the given grammar contains an
>> item called "<query primary>" which is referenced nowhere in the
>> given new rules and in the current ADQL grammar. I would say it is a
>> copy-paste error, because the content of this rule is exactly the
>> same as the new "<query_expression>". So, let's say it is a very
> As <query primary> is not referenced anywhere, it is indeed
> superfluous in this grammar. Going back to sql1992, I notice I
> really messed up the rule above, fortunately in a way so gross it'd
> have been obvious in implementation right away:
>
> <non_join_query_term> ::=
> [...] <query term> INTERSECT [ ALL ]
>
> is of course missing its second operand. In sql1992, this second
> operand is the <query_primary>. As Grégeory correctly observes, in
> ADQL <query_primary> and <query_expression> have the same expansions.
> So, I'm fixing the above rule to
>
> [...] <query term> INTERSECT [ ALL ] <query_expression>
>
> in SVN.
>
>> 2/ However, while looking a such rule in the current grammar
>> (ADQL 2.0 standard document), I discovered that it was valid,
>> according to the given BNF, to have a query limited to a table name
>> or a table join. Indeed, it is possible due to the following rules:
>>
>> <query_expression> ::= <query_specification>
>> | <joined_table>
>>
>> So, a query can be either a "SELECT .... FROM ..." or just a table
>> name (or a join between 2 tables), according to the following rules:
> Here, I disagree with Grégory -- unless I'm completely confused here,
> the root production of ADQL is query_specification, not
> query_expression, no?
Yes, you are true. As said in the section "2.2 Query syntax" of the ADQL
document:
"A full and complete syntax of the select statement can be found in
“Appendix A:
BNF Grammar” at the <query_specification> construct."
About the rule "query_expression", it is used only for the rule
"subquery" (which really make sense).
Sorry for the confusion I introduce here, and thank you for your quick
answer.
Cheers,
Grégory
More information about the dal
mailing list