Hi All,
Based on the inputs received so far (from Jeff mainly) I have compiled a
new draft version of both the ADQL specification and the BNF grammar.
You can find both in the attached document [ADQL-20070419.doc]
In order to make the grammar more readable I have produced a few
snapshots of the dependencies among all non-terminal symbols [token.png,
valueExpression.png, querySpecification.png and searchCondition.png]. To
do so, I have used UML class diagrams. Though BNF and UML do no
translate each other very well I still believe the result worths the
effort. I hope these diagrams help to understand better the present and
the missing bits of the grammar.
Going through Jeff's comments and the previous draft I have tried to
identify the main issues that are still open. Please take note of them
to discuss them asap! These are:
- *Region definition.
*
- *User Defined Functions definition.*
- *General discussion on interval and temporal data types (date,
time, datetime and timestamp) constructs*. As Jeff stated we
should discuss this in a wider context taking into account the
work of other working groups (Arnold Rot's STC...)
- *Discuss on definition and usage of SELECT INTO. * My personal
opinion on this is that we should tackle it at a later stage and
keep focused on building a consolidated and robust ADQL grammar
before, no matter if it's still not very complex.
- *Usage of utypes within ADQL.*
- *Recommendations on version number.*
If you find that there are other issues to discuss, please do not
hesitate to add items to this list.
Last but not least you can find attached a detailed description of what
has been changed in both the specification and the grammar
[changes.html]. Though the feature to track the changes in the word
document is still enabled (and used) I thought it would still be useful
to have them listed in a separate file.
I would like to take this opportunity to thank Jeff Lusted whose
comments on the first draft have been extremely valuable and have helped
us a lot to produce this second one (Kona, I guess you will forward this
email to him).
That's all from my side. I hope you find all that useful.
Cheers
Inaki
ADQL Draft 19 April 2007
Changes in the document
- Split list of reserved words into SQL-specific and ADQL-specific
- Remove list of non-reserved words
- Update section on joins and subqueries
- Update rand function as can take a seed value as well
- Changes in the BNF:
- Syntax rules names (non-terminal symbols) have been compacted by replacing whitespaces with underscores.
- Syntax rules definitions have been sorted alphabetically.
- Non-reserved words list removed.
- New syntax rule for ADQL reserved keywords: ADQL_reserved_word.
- Previous reserved keywords renamed as SQL_reserved_word.
- TOP is now in the list of ADQL reserved keywords.
- Reserved words are now extensive (and includes COUNT).
- Bit and Hex literals taken out from nondelimiter_token rule.
- New syntax rule to accomodate TOP: set_limit referenced in query_specification.
- Removed interval_term_1, interval_term_2, interval_value_expression_1 syntax rules.
- Renamed comp_op to comparison_operator.
- Removed row_value_contructor_1, row_value_contructor_2 syntax rules.
- Removed major additions not accomodated in previous versions of the spec and not esential at this stage (See Jeff Lusted comments):
- Remove (temporarily) datetime_value_expression, interval_value_expression and alliased children nodes as they need careful consideration from the VO community before (See Jeff Lusted and Arnold Rots comments)
- Replace row_value_constructor usage by value_expression and remove orphan children nodes.
- Remove scalar_subquery and subsequently subquery and derived_table.
- Simplify the correlation_specification rule by avoiding a derived column list.
- Remove support of CROSS JOIN for the time being.
- Compact definition of identifier rule and add a delimiter identifier to escape reserved keywords and non-standard identifiers.
- Not equals operator extended to support !=.
- Correct minor mistake in character_primary definition.
- truth_value now supports TRUE, FALSE and UNKNOWN.
- Added numeric_value_function, trigonometric_function and math_function definitions.
- Added table_name and schema_name definitions (name qualification using database schemas is widely used).
- Added column_name definition.
- Syntax rule for delimited identifiers updated.
- Removed (temporarily) date_string, time_string, timestamp_string referenced within delimiter_token syntax rule as they need careful consideration and might be replaced by STC-like rules
- Added column_name_list syntax rule
- Deleted escape_character syntax_rule as it is not used.
- Deleted null_specification syntax_rule as it is not used.
- Removed match_value and pattern and update like_predicate accordingly.
- Relief table_subquery construct replacing query_expression by query_specification. Hence, we can remove the following non-terminals:
- query_expression
- query_primary
- query_term
- simple_table
- non-join_query_expression
- non-join_query_primary
- non-join_query_term
Received on 2007-04-24Z15:47:52