Author: shawkins
Date: 2009-11-29 09:39:39 -0500 (Sun, 29 Nov 2009)
New Revision: 1604
Removed:
trunk/common-internal/src/main/java/com/metamatrix/platform/vm/
Modified:
trunk/documentation/reference/src/main/docbook/en-US/content/grammar.xml
trunk/pom.xml
Log:
TEIID-251 TEIID-873 added support for order by expressions and removing parsing
restrictions that limited quoted identifiers.
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/grammar.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/grammar.xml 2009-11-25
21:45:09 UTC (rev 1603)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/grammar.xml 2009-11-29
14:39:39 UTC (rev 1604)
@@ -1,423 +1,773 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<appendix id="grammar">
-<title>BNF Grammar</title>
-<sect1 id="terminals">
-<title>Terminals</title>
-<para>
-<informaltable>
-<tgroup cols="1">
-<tbody>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> SKIP : {" "| "\t"| "\n"|
"\r"} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> MORE : {"/*" : IN_MULTI_LINE_COMMENT} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<IN_MULTI_LINE_COMMENT> SPECIAL : {<MULTI_LINE_COMMENT:
"*/"> : DEFAULT} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<IN_MULTI_LINE_COMMENT> MORE : {<~[]>} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<STRING: "string">|
<BOOLEAN: "boolean">| <BYTE: "byte">|
<SHORT: "short">| <CHAR: "char">|
<INTEGER: "integer">| <LONG: "long">|
<BIGINTEGER: "biginteger">| <FLOAT:
"float">| <DOUBLE: "double">| <BIGDECIMAL:
"bigdecimal">| <DATE: "date">| <TIME:
"time">| <TIMESTAMP: "timestamp">|
<OBJECT: "object">| <BLOB: "blob">|
<CLOB: "clob">| <XML: "xml">}
</entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<CAST: "cast">| <CONVERT:
"convert">| <TIMESTAMPADD: "timestampadd">|
<TIMESTAMPDIFF: "timestampdiff">| <COUNT:
"count">| <SUM: "sum">| <AVG:
"avg">| <MIN: "min">| <MAX:
"max">} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<ALL: "all">| <AND:
"and">| <ANY: "any">| <AS:
"as">| <ASC: "asc">| <BEGIN:
"begin">| <BETWEEN: "between">| <BREAK:
"break">| <BY: "by">| <CASE:
"case">| <CONTINUE: "continue">| <CREATE:
"create">| <CRITERIA: "criteria">| <CROSS:
"cross">| <DEBUG: "debug">| <DECLARE:
"declare">| <DELETE: "delete">| <DESC:
"desc">| <DISTINCT: "distinct">| <DROP:
"drop">| <ELSE: "else">| <END:
"end">| <ERROR: "error">| <ESCAPE:
"escape">| <EXCEPT: "except">| <EXEC:
"exec">| <EXECUTE: "execute">| <EXISTS:
"exists">| <FALSE: "false">| <FN:
"fn">| <FOR: "for">| <FROM:
"from">| <FULL: "full">| <GROUP:
"group">| <HAS: "has">| <HAVING:
"having">| <IF: "if">| <IN:
"in">| <INNER: "inner">| <INSERT:
"insert">| <INTERSECT: "intersect">|!
<INTO: "into">| <IS: "is">|
<JOIN: "join">| <LEFT: "left">|
<LIKE: "like">| <LIMIT: "limit">|
<LOCAL: "local">| <LOOP: "loop">|
<MAKEDEP: "makedep">| <MAKENOTDEP:
"makenotdep">| <NOCACHE: "nocache">| <NOT:
"not">| <NULL: "null">| <ON:
"on">| <OJ: "oj">| <OPTION:
"option">| <OR: "or">| <ORDER:
"order">| <OUTER: "outer">| <PLANONLY:
"planonly">| <PROCEDURE: "procedure">|
<RIGHT: "right">| <SELECT: "select">|
<SET: "set">| <SHOWPLAN: "showplan">|
<SOME: "some">| <TABLE: "table">|
<TEMPORARY: "temporary">| <THEN: "then">|
<TRANSLATE: "translate">| <TRUE: "true">|
<UNION: "union">| <UNKNOWN: "unknown">|
<UPDATE: "update">| <USING: "using">|
<VALUES: "values">| <VIRTUAL: "virtual">|
<WHEN: "when">| <WHERE: "where">|
<WITH: "with">| <WHILE: !
"while">} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<SQL_TSI_FRAC_SECOND:
"SQL_TSI_FRAC_SECOND">| <SQL_TSI_SECOND:
"SQL_TSI_SECOND">| <SQL_TSI_MINUTE:
"SQL_TSI_MINUTE">| <SQL_TSI_HOUR:
"SQL_TSI_HOUR">| <SQL_TSI_DAY: "SQL_TSI_DAY">|
<SQL_TSI_WEEK: "SQL_TSI_WEEK">| <SQL_TSI_MONTH:
"SQL_TSI_MONTH">| <SQL_TSI_QUARTER:
"SQL_TSI_QUARTER">| <SQL_TSI_YEAR:
"SQL_TSI_YEAR">} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<ALL_IN_GROUP: (<GROUP_PART> |
<MMUUID_PART>) <PERIOD> <STAR>>|
<VARIABLE: <ID> | <MMUUID>>| <#ID:
<GROUP_PART> ((<PERIOD> | <SLASH>)
(<QUOTED_ID> | <MMUUID_PART>))?>| <#ELEMENT:
<GROUP_PART> (<PERIOD> | <SLASH>)
<QUOTED_ID>>| <#GROUP_PART: ("#")?
(<QUOTED_ID> (<PERIOD> | <SLASH>))?
<QUOTED_ID>>| <#QUOTED_ID: <DOTTED_ID> |
"\"" <DOTTED_ID> "\"">|
<#DOTTED_ID: <ID_PART> ((<PERIOD> |
<SLASH>) <ID_PART>)*>| <#ID_PART:
("@")? <LETTER> (<ID_CHAR>)*>|
<#ID_CHAR: <LETTER> | "_" | <DIGIT>>|
<#MMUUID: <MMUUID_PART> (<PERIOD>
<MMUUID_PART>)?>| <#MMUUID_PART: "mmuuid:"
(<MMUUID_CHAR>)*>| <#MMUUID_CHAR:
["a"-"f"] | ["0"-"9"] | "-">|
<DATETYPE: "{" "d">| <TIMETYPE: "{"
"t">| <TIMEST!
AMPTYPE: "{" "ts">| <BOOLEANTYPE: "{"
"b">| <INTEGERVAL: (<MINUS>)?
(<DIGIT>)+>| <FLOATVAL: (<MINUS>)?
(<DIGIT>)* <PERIOD> (<DIGIT>)+
(["e","E"] (["+","-"])?
(<DIGIT>)+)?>| <STRINGVAL: ("N")?
(<STRINGA> | <STRINGB>)>| <#STRINGA:
"\'" (~["\'"])* ("\'\'"
(~["\'"])*)* "\'">| <#STRINGB:
"\"" (~["\""])* ("\"\""
(~["\""])*)* "\"">| <#LETTER:
["a"-"z","A"-"Z"] |
["\u0153"-"\ufffd"]>| <#DIGIT:
["0"-"9"]>| <#COLON: ":">}
</entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<COMMA: ",">| <PERIOD:
".">| <LPAREN: "(">| <RPAREN:
")">| <LBRACE: "{">| <RBRACE:
"}">| <EQ: "=">| <NE:
"<>">| <NE2: "!=">| <LT:
"<">| <LE: "<=">| <GT:
">">| <GE: ">=">| <STAR:
"*">| <SLASH: "/">| <PLUS:
"+">| <MINUS: "-">| <QMARK:
"?">| <DOLLAR: "$">| <SEMICOLON:
";">| <CONCAT_OP: "||">} </entry>
- </row>
-</tbody>
-</tgroup>
-</informaltable>
-</para>
-</sect1>
-<sect1 id="non-terminals">
-<title>Non-Terminals</title>
-<para>
-<informaltable>
-<tgroup cols="2">
-<colspec align="right" colwidth="1*"/>
-<colspec align="left" colwidth="2*"/>
-<tbody>
-<row>
-<entry valign="top"><anchor id="prod1"/>command ::=
</entry>
-<entry valign="top">( ( <link
linkend="prod2">createUpdateProcedure</link> ) | <link
linkend="prod3">userCommand</link> | <link
linkend="prod4">callableStatement</link> ) ( <SEMICOLON>
)? <EOF></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod3"/>userCommand ::=
</entry>
-<entry valign="top">( <link
linkend="prod5">queryExpression</link> | <link
linkend="prod6">storedProcedure</link> | <link
linkend="prod7">insert</link> | <link
linkend="prod8">update</link> | <link
linkend="prod9">delete</link> | <link
linkend="prod10">dropTable</link> | <link
linkend="prod11">createTempTable</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod10"/>dropTable ::=
</entry>
-<entry valign="top"><DROP> <TABLE>
<VARIABLE></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod11"/>createTempTable
::= </entry>
-<entry valign="top"><CREATE> <LOCAL>
<TEMPORARY> <TABLE> <VARIABLE>
<LPAREN> <link
linkend="prod12">createElementsWithTypes</link>
<RPAREN></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod13"/>errorStatement
::= </entry>
-<entry valign="top"><ERROR> <link
linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod15"/>statement ::=
</entry>
-<entry valign="top">( <link
linkend="prod16">ifStatement</link> | <link
linkend="prod17">loopStatement</link> | <link
linkend="prod18">whileStatement</link> | <link
linkend="prod19">delimitedStatement</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod19"/>delimitedStatement ::= </entry>
-<entry valign="top">( <link
linkend="prod20">sqlStatement</link> | <link
linkend="prod13">errorStatement</link> | <link
linkend="prod21">assignStatement</link> | <link
linkend="prod22">declareStatement</link> | <link
linkend="prod23">continueStatement</link> | <link
linkend="prod24">breakStatement</link> )
<SEMICOLON></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod25"/>block ::=
</entry>
-<entry valign="top">( <link
linkend="prod15">statement</link> | ( <BEGIN> ( <link
linkend="prod15">statement</link> )* <END> )
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod24"/>breakStatement
::= </entry>
-<entry valign="top"><BREAK></entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod23"/>continueStatement ::= </entry>
-<entry valign="top"><CONTINUE></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod18"/>whileStatement
::= </entry>
-<entry valign="top"><WHILE> <LPAREN> <link
linkend="prod26">criteria</link> <RPAREN> <link
linkend="prod25">block</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod17"/>loopStatement
::= </entry>
-<entry valign="top"><LOOP> <ON>
<LPAREN> <link linkend="prod5">queryExpression</link>
<RPAREN> <AS> <VARIABLE> <link
linkend="prod25">block</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod16"/>ifStatement ::=
</entry>
-<entry valign="top"><IF> <LPAREN> <link
linkend="prod26">criteria</link> <RPAREN> <link
linkend="prod25">block</link> ( <ELSE> <link
linkend="prod25">block</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod27"/>criteriaSelector
::= </entry>
-<entry valign="top">( ( <EQ> | <NE> |
<NE2> | <LE> | <GE> | <LT> |
<GT> | <IN> | <LIKE> | ( <IS>
<NULL> ) | <BETWEEN> ) )? <CRITERIA> (
<ON> <LPAREN> <VARIABLE> ( <COMMA>
<VARIABLE> )* <RPAREN> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod28"/>hasCriteria ::=
</entry>
-<entry valign="top"><HAS> <link
linkend="prod27">criteriaSelector</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod22"/>declareStatement
::= </entry>
-<entry valign="top"><DECLARE> <link
linkend="prod29">dataType</link> <VARIABLE> (
<EQ> <link
linkend="prod30">assignStatementOperand</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod21"/>assignStatement
::= </entry>
-<entry valign="top"><VARIABLE> <EQ> <link
linkend="prod30">assignStatementOperand</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod30"/>assignStatementOperand ::= </entry>
-<entry valign="top">( ( <link
linkend="prod7">insert</link> ) | <link
linkend="prod8">update</link> | <link
linkend="prod9">delete</link> | <link
linkend="prod6">storedProcedure</link> | ( <link
linkend="prod14">expression</link> ) | <link
linkend="prod5">queryExpression</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod20"/>sqlStatement ::=
</entry>
-<entry valign="top">( ( <link
linkend="prod31">dynamicCommand</link> ) | <link
linkend="prod3">userCommand</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod32"/>translateCriteria ::= </entry>
-<entry valign="top"><TRANSLATE> <link
linkend="prod27">criteriaSelector</link> ( <WITH>
<LPAREN> <VARIABLE> <EQ> <link
linkend="prod14">expression</link> ( <COMMA>
<VARIABLE> <EQ> <link
linkend="prod14">expression</link> )* <RPAREN>
)?</entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod2"/>createUpdateProcedure ::= </entry>
-<entry valign="top"><CREATE> ( <VIRTUAL> )? (
<UPDATE> )? <PROCEDURE> <link
linkend="prod25">block</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod31"/>dynamicCommand
::= </entry>
-<entry valign="top">( <EXECUTE> | <EXEC> )
<STRING> <link linkend="prod14">expression</link> (
<AS> <link
linkend="prod12">createElementsWithTypes</link> ( <INTO>
<VARIABLE> )? )? ( <USING> <link
linkend="prod33">setClauseList</link> )? ( <UPDATE> ( (
<INTEGERVAL> ) | ( <STAR> ) ) )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod33"/>setClauseList
::= </entry>
-<entry valign="top"><VARIABLE> <EQ> (
<COMMA> <VARIABLE> <EQ> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod12"/>createElementsWithTypes ::= </entry>
-<entry valign="top"><VARIABLE> <link
linkend="prod29">dataType</link> ( <COMMA>
<VARIABLE> <link linkend="prod29">dataType</link>
)*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod4"/>callableStatement
::= </entry>
-<entry valign="top"><LBRACE> ( <QMARK>
<EQ> )? <VARIABLE> <VARIABLE> (
<LPAREN> ( <link
linkend="prod34">executeUnnamedParams</link> ) <RPAREN>
)? <RBRACE> ( <link linkend="prod35">option</link>
)?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod6"/>storedProcedure
::= </entry>
-<entry valign="top">( ( <EXEC> | <EXECUTE> )
<VARIABLE> <LPAREN> ( <link
linkend="prod36">executeNamedParams</link> | <link
linkend="prod34">executeUnnamedParams</link> ) <RPAREN> )
( <link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod34"/>executeUnnamedParams ::= </entry>
-<entry valign="top">( <link
linkend="prod14">expression</link> ( <COMMA> <link
linkend="prod14">expression</link> )* )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod36"/>executeNamedParams ::= </entry>
-<entry valign="top">( <link
linkend="prod37">paramName</link> <EQ> <link
linkend="prod14">expression</link> ( <COMMA> <link
linkend="prod37">paramName</link> <EQ> <link
linkend="prod14">expression</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod37"/>paramName ::=
</entry>
-<entry valign="top"><VARIABLE></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod7"/>insert ::=
</entry>
-<entry valign="top"><INSERT> <INTO>
<VARIABLE> ( <LPAREN> <VARIABLE> (
<COMMA> <VARIABLE> )* <RPAREN> )? ( (
<VALUES> <link linkend="prod38">rowValues</link> ) | (
<link linkend="prod5">queryExpression</link> ) ) ( <link
linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod38"/>rowValues ::=
</entry>
-<entry valign="top"><LPAREN> <link
linkend="prod14">expression</link> ( <COMMA> <link
linkend="prod14">expression</link> )*
<RPAREN></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod8"/>update ::=
</entry>
-<entry valign="top"><UPDATE> <VARIABLE>
<SET> <link linkend="prod33">setClauseList</link> (
<link linkend="prod39">where</link> )? ( <link
linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod9"/>delete ::=
</entry>
-<entry valign="top"><DELETE> <FROM>
<VARIABLE> ( <link linkend="prod39">where</link> )? (
<link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod5"/>queryExpression
::= </entry>
-<entry valign="top"><link
linkend="prod40">queryExpressionBody</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod40"/>queryExpressionBody ::= </entry>
-<entry valign="top"><link
linkend="prod41">queryTerm</link> ( ( <UNION> |
<EXCEPT> ) ( <ALL> | <DISTINCT> )? <link
linkend="prod41">queryTerm</link> )* ( <link
linkend="prod42">orderby</link> )? ( <link
linkend="prod43">limit</link> )? ( <link
linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod41"/>queryTerm ::=
</entry>
-<entry valign="top"><link
linkend="prod44">queryPrimary</link> ( <INTERSECT> (
<ALL> | <DISTINCT> )? <link
linkend="prod44">queryPrimary</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod44"/>queryPrimary ::=
</entry>
-<entry valign="top">( <link
linkend="prod45">query</link> | ( <LPAREN> <link
linkend="prod40">queryExpressionBody</link> <RPAREN> )
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod45"/>query ::=
</entry>
-<entry valign="top"><link
linkend="prod46">select</link> ( <link
linkend="prod47">into</link> )? ( <link
linkend="prod48">from</link> ( <link
linkend="prod39">where</link> )? ( <link
linkend="prod49">groupBy</link> )? ( <link
linkend="prod50">having</link> )? )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod47"/>into ::=
</entry>
-<entry valign="top"><INTO> ( <VARIABLE>
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod46"/>select ::=
</entry>
-<entry valign="top"><SELECT> ( <ALL> | (
<DISTINCT> ) )? ( <STAR> | ( <link
linkend="prod51">selectSymbol</link> ( <COMMA> <link
linkend="prod51">selectSymbol</link> )* ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod51"/>selectSymbol ::=
</entry>
-<entry valign="top">( ( <ALL_IN_GROUP> ) | ( <link
linkend="prod14">expression</link> ) ( ( <AS> )? (
<VARIABLE> | <STRINGVAL> ) )? )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod52"/>aggregateSymbol
::= </entry>
-<entry valign="top">( ( <COUNT> <LPAREN>
<STAR> <RPAREN> ) | ( ( <COUNT> |
<SUM> | <AVG> | <MIN> | <MAX> )
<LPAREN> ( <DISTINCT> )? <link
linkend="prod14">expression</link> <RPAREN> )
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod48"/>from ::=
</entry>
-<entry valign="top"><FROM> ( <link
linkend="prod53">tableReference</link> ( <COMMA> <link
linkend="prod53">tableReference</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod53"/>tableReference
::= </entry>
-<entry valign="top">( ( <LBRACE> <OJ>
<link linkend="prod54">tableReferenceUnescaped</link>
<RBRACE> ) | <link
linkend="prod54">tableReferenceUnescaped</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod54"/>tableReferenceUnescaped ::= </entry>
-<entry valign="top">( <link
linkend="prod55">joinedTable</link> | <link
linkend="prod56">tablePrimary</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod55"/>joinedTable ::=
</entry>
-<entry valign="top"><link
linkend="prod56">tablePrimary</link> ( ( <link
linkend="prod57">crossJoin</link> | <link
linkend="prod58">qualifiedJoin</link> ) )+</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod57"/>crossJoin ::=
</entry>
-<entry valign="top">( ( <CROSS> | <UNION> )
<JOIN> <link linkend="prod56">tablePrimary</link>
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod58"/>qualifiedJoin
::= </entry>
-<entry valign="top">( ( ( <RIGHT> ( <OUTER>
)? ) | ( <LEFT> ( <OUTER> )? ) | ( <FULL> (
<OUTER> )? ) | <INNER> )? <JOIN> <link
linkend="prod53">tableReference</link> <ON> <link
linkend="prod26">criteria</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod56"/>tablePrimary ::=
</entry>
-<entry valign="top">( <link
linkend="prod59">unaryFromClause</link> | <link
linkend="prod60">subqueryFromClause</link> | ( <LPAREN>
<link linkend="prod55">joinedTable</link> <RPAREN> ) )
( ( <MAKEDEP> ) | ( <MAKENOTDEP> ) )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod60"/>subqueryFromClause ::= </entry>
-<entry valign="top"><LPAREN> ( <link
linkend="prod5">queryExpression</link> | <link
linkend="prod6">storedProcedure</link> ) <RPAREN> (
<AS> )? <VARIABLE></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod59"/>unaryFromClause
::= </entry>
-<entry valign="top">( <VARIABLE> ( ( <AS> )?
<VARIABLE> )? )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod39"/>where ::=
</entry>
-<entry valign="top"><WHERE> <link
linkend="prod26">criteria</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod26"/>criteria ::=
</entry>
-<entry valign="top"><link
linkend="prod61">compoundCritOr</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod61"/>compoundCritOr
::= </entry>
-<entry valign="top"><link
linkend="prod62">compoundCritAnd</link> ( <OR> <link
linkend="prod62">compoundCritAnd</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod62"/>compoundCritAnd
::= </entry>
-<entry valign="top"><link
linkend="prod63">notCrit</link> ( <AND> <link
linkend="prod63">notCrit</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod63"/>notCrit ::=
</entry>
-<entry valign="top">( <NOT> )? <link
linkend="prod64">primary</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod64"/>primary ::=
</entry>
-<entry valign="top">( <link
linkend="prod65">predicate</link> | ( <LPAREN> <link
linkend="prod26">criteria</link> <RPAREN> )
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod65"/>predicate ::=
</entry>
-<entry valign="top">( <link
linkend="prod66">subqueryCompareCriteria</link> | <link
linkend="prod67">compareCrit</link> | <link
linkend="prod68">matchCrit</link> | <link
linkend="prod69">betweenCrit</link> | <link
linkend="prod70">setCrit</link> | <link
linkend="prod71">existsCriteria</link> | <link
linkend="prod28">hasCriteria</link> | <link
linkend="prod32">translateCriteria</link> | <link
linkend="prod72">isNullCrit</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod67"/>compareCrit ::=
</entry>
-<entry valign="top"><link
linkend="prod14">expression</link> ( <EQ> |
<NE> | <NE2> | <LT> | <LE> |
<GT> | <GE> ) <link
linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod73"/>subquery ::=
</entry>
-<entry valign="top"><LPAREN> ( <link
linkend="prod5">queryExpression</link> | <link
linkend="prod6">storedProcedure</link> )
<RPAREN></entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod66"/>subqueryCompareCriteria ::= </entry>
-<entry valign="top"><link
linkend="prod14">expression</link> ( <EQ> |
<NE> | <NE2> | <LT> | <LE> |
<GT> | <GE> ) ( <ANY> | <SOME> |
<ALL> ) <link
linkend="prod73">subquery</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod68"/>matchCrit ::=
</entry>
-<entry valign="top">( <link
linkend="prod14">expression</link> ( <NOT> )?
<LIKE> <link linkend="prod14">expression</link> (
<link linkend="prod74">escapeChar</link> | ( <LBRACE>
<link linkend="prod74">escapeChar</link> <RBRACE> ) )?
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod74"/>escapeChar ::=
</entry>
-<entry valign="top"><ESCAPE>
<STRINGVAL></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod69"/>betweenCrit ::=
</entry>
-<entry valign="top"><link
linkend="prod14">expression</link> ( <NOT> )?
<BETWEEN> <link linkend="prod14">expression</link>
<AND> <link
linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod72"/>isNullCrit ::=
</entry>
-<entry valign="top"><link
linkend="prod14">expression</link> <IS> (
<NOT> )? <NULL></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod70"/>setCrit ::=
</entry>
-<entry valign="top"><link
linkend="prod14">expression</link> ( <NOT> )?
<IN> ( ( <link linkend="prod73">subquery</link> ) | (
<LPAREN> <link linkend="prod14">expression</link> (
<COMMA> <link linkend="prod14">expression</link> )*
<RPAREN> ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod71"/>existsCriteria
::= </entry>
-<entry valign="top"><EXISTS> <link
linkend="prod73">subquery</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod49"/>groupBy ::=
</entry>
-<entry valign="top"><GROUP> <BY> ( <link
linkend="prod75">groupByItem</link> ( <COMMA> <link
linkend="prod75">groupByItem</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod75"/>groupByItem ::=
</entry>
-<entry valign="top"><link
linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod50"/>having ::=
</entry>
-<entry valign="top"><HAVING> <link
linkend="prod26">criteria</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod42"/>orderby ::=
</entry>
-<entry valign="top"><ORDER> <BY> (
<VARIABLE> | <STRINGVAL> | <INTEGERVAL> ) (
<ASC> | <DESC> )? ( <COMMA> (
<VARIABLE> | <STRINGVAL> | <INTEGERVAL> ) (
<ASC> | <DESC> )? )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod43"/>limit ::=
</entry>
-<entry valign="top"><LIMIT> ( <INTEGERVAL> |
<QMARK> ) ( <COMMA> ( <INTEGERVAL> |
<QMARK> ) )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod35"/>option ::=
</entry>
-<entry valign="top"><OPTION> ( <SHOWPLAN> |
<PLANONLY> | <DEBUG> | <MAKEDEP>
<VARIABLE> ( <COMMA> <VARIABLE> )* |
<MAKENOTDEP> <VARIABLE> ( <COMMA>
<VARIABLE> )* | <NOCACHE> ( <VARIABLE> (
<COMMA> <VARIABLE> )* )? )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod14"/>expression ::=
</entry>
-<entry valign="top"><link
linkend="prod76">concatExpression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod76"/>concatExpression
::= </entry>
-<entry valign="top">( <link
linkend="prod77">plusExpression</link> ( <CONCAT_OP>
<link linkend="prod77">plusExpression</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod77"/>plusExpression
::= </entry>
-<entry valign="top">( <link
linkend="prod78">timesExpression</link> ( <link
linkend="prod79">plusOperator</link> <link
linkend="prod78">timesExpression</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod79"/>plusOperator ::=
</entry>
-<entry valign="top">( <PLUS> | <MINUS>
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod78"/>timesExpression
::= </entry>
-<entry valign="top">( <link
linkend="prod80">basicExpression</link> ( <link
linkend="prod81">timesOperator</link> <link
linkend="prod80">basicExpression</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod81"/>timesOperator
::= </entry>
-<entry valign="top">( <STAR> | <SLASH>
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod80"/>basicExpression
::= </entry>
-<entry valign="top">( <QMARK> | <link
linkend="prod82">literal</link> | ( <LBRACE>
<FN> <link linkend="prod83">function</link>
<RBRACE> ) | ( <link
linkend="prod52">aggregateSymbol</link> ) | ( <link
linkend="prod83">function</link> ) | ( <VARIABLE> ) | (
<LPAREN> <link linkend="prod14">expression</link>
<RPAREN> ) | <link linkend="prod73">subquery</link> |
<link linkend="prod84">caseExpression</link> | <link
linkend="prod85">searchedCaseExpression</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod84"/>caseExpression
::= </entry>
-<entry valign="top"><CASE> <link
linkend="prod14">expression</link> ( <WHEN> <link
linkend="prod14">expression</link> <THEN> <link
linkend="prod14">expression</link> )+ ( <ELSE> <link
linkend="prod14">expression</link> )?
<END></entry>
-</row>
-<row>
-<entry valign="top"><anchor
id="prod85"/>searchedCaseExpression ::= </entry>
-<entry valign="top"><CASE> ( <WHEN> <link
linkend="prod26">criteria</link> <THEN> <link
linkend="prod14">expression</link> )+ ( <ELSE> <link
linkend="prod14">expression</link> )?
<END></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod83"/>function ::=
</entry>
-<entry valign="top">( ( <CONVERT> <LPAREN>
<link linkend="prod14">expression</link> <COMMA>
<link linkend="prod29">dataType</link> <RPAREN> ) | (
<CAST> <LPAREN> <link
linkend="prod14">expression</link> <AS> <link
linkend="prod29">dataType</link> <RPAREN> ) | ( (
<TIMESTAMPADD> | <TIMESTAMPDIFF> ) <LPAREN>
<link linkend="prod86">intervalType</link> <COMMA>
<link linkend="prod14">expression</link> <COMMA>
<link linkend="prod14">expression</link> <RPAREN> ) |
( ( <LEFT> | <RIGHT> | <CHAR> )
<LPAREN> ( <link linkend="prod14">expression</link> (
<COMMA> <link linkend="prod14">expression</link> )* )?
<RPAREN> ) | ( ( <INSERT> ) <LPAREN> ( <link
linkend="prod14">expression</link> ( <COMMA> <link
linkend="prod14">expression</link> )* )? <RPAREN> ) | ( (
<TRANSLATE> ) <LPAREN> ( <link
linkend="prod14">expression</link> ( <COM!
MA> <link linkend="prod14">expression</link> )* )?
<RPAREN> ) | ( <VARIABLE> <LPAREN> ( <link
linkend="prod14">expression</link> ( <COMMA> <link
linkend="prod14">expression</link> )* )? <RPAREN> )
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod29"/>dataType ::=
</entry>
-<entry valign="top">( <STRING> | <BOOLEAN> |
<BYTE> | <SHORT> | <CHAR> |
<INTEGER> | <LONG> | <BIGINTEGER> |
<FLOAT> | <DOUBLE> | <BIGDECIMAL> |
<DATE> | <TIME> | <TIMESTAMP> |
<OBJECT> | <BLOB> | <CLOB> | <XML>
)</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod86"/>intervalType ::=
</entry>
-<entry valign="top">( <SQL_TSI_FRAC_SECOND> |
<SQL_TSI_SECOND> | <SQL_TSI_MINUTE> |
<SQL_TSI_HOUR> | <SQL_TSI_DAY> | <SQL_TSI_WEEK>
| <SQL_TSI_MONTH> | <SQL_TSI_QUARTER> |
<SQL_TSI_YEAR> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod82"/>literal ::=
</entry>
-<entry valign="top">( <STRINGVAL> |
<INTEGERVAL> | <FLOATVAL> | <FALSE> |
<TRUE> | <UNKNOWN> | <NULL> | (
<BOOLEANTYPE> <STRINGVAL> <RBRACE> ) | (
<TIMESTAMPTYPE> <STRINGVAL> <RBRACE> ) | (
<DATETYPE> <STRINGVAL> <RBRACE> ) | (
<TIMETYPE> <STRINGVAL> <RBRACE> )
)</entry>
-</row>
-</tbody>
-</tgroup>
-</informaltable>
-</para>
-</sect1>
+ <title>BNF for SQL Grammar</title>
+ <sect1 remap="h2">
+ <title>TOKENS</title>
+ <informaltable frame="none">
+ <tgroup cols="1">
+ <colspec colname="c1" colwidth="100*"/>
+ <!-- Token -->
+ <tbody>
+ <row>
+ <entry><para>
+<DEFAULT> SKIP : {
+" "
+| "\t"
+| "\n"
+| "\r"
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> MORE : {
+"/*" : IN_MULTI_LINE_COMMENT
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<IN_MULTI_LINE_COMMENT> SPECIAL : {
+<MULTI_LINE_COMMENT: "*/"> : DEFAULT
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<IN_MULTI_LINE_COMMENT> MORE : {
+<~[]>
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<STRING: "string">
+| <BOOLEAN: "boolean">
+| <BYTE: "byte">
+| <SHORT: "short">
+| <CHAR: "char">
+| <INTEGER: "integer">
+| <LONG: "long">
+| <BIGINTEGER: "biginteger">
+| <FLOAT: "float">
+| <DOUBLE: "double">
+| <BIGDECIMAL: "bigdecimal">
+| <DATE: "date">
+| <TIME: "time">
+| <TIMESTAMP: "timestamp">
+| <OBJECT: "object">
+| <BLOB: "blob">
+| <CLOB: "clob">
+| <XML: "xml">
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<CAST: "cast">
+| <CONVERT: "convert">
+| <TIMESTAMPADD: "timestampadd">
+| <TIMESTAMPDIFF: "timestampdiff">
+| <COUNT: "count">
+| <SUM: "sum">
+| <AVG: "avg">
+| <MIN: "min">
+| <MAX: "max">
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<ALL: "all">
+| <AND: "and">
+| <ANY: "any">
+| <AS: "as">
+| <ASC: "asc">
+| <BEGIN: "begin">
+| <BETWEEN: "between">
+| <BREAK: "break">
+| <BY: "by">
+| <CASE: "case">
+| <CONTINUE: "continue">
+| <CREATE: "create">
+| <CRITERIA: "criteria">
+| <CROSS: "cross">
+| <DEBUG: "debug">
+| <DECLARE: "declare">
+| <DELETE: "delete">
+| <DESC: "desc">
+| <DISTINCT: "distinct">
+| <DROP: "drop">
+| <ELSE: "else">
+| <END: "end">
+| <ERROR: "error">
+| <ESCAPE: "escape">
+| <EXCEPT: "except">
+| <EXEC: "exec">
+| <EXECUTE: "execute">
+| <EXISTS: "exists">
+| <FALSE: "false">
+| <FN: "fn">
+| <FOR: "for">
+| <FROM: "from">
+| <FULL: "full">
+| <GROUP: "group">
+| <HAS: "has">
+| <HAVING: "having">
+| <IF: "if">
+| <IN: "in">
+| <INNER: "inner">
+| <INSERT: "insert">
+| <INTERSECT: "intersect">
+| <INTO: "into">
+| <IS: "is">
+| <JOIN: "join">
+| <LEFT: "left">
+| <LIKE: "like">
+| <LIMIT: "limit">
+| <LOCAL: "local">
+| <LOOP: "loop">
+| <MAKEDEP: "makedep">
+| <MAKENOTDEP: "makenotdep">
+| <NOCACHE: "nocache">
+| <NOT: "not">
+| <NULL: "null">
+| <ON: "on">
+| <OJ: "oj">
+| <OPTION: "option">
+| <OR: "or">
+| <ORDER: "order">
+| <OUTER: "outer">
+| <PLANONLY: "planonly">
+| <PROCEDURE: "procedure">
+| <RIGHT: "right">
+| <SELECT: "select">
+| <SET: "set">
+| <SHOWPLAN: "showplan">
+| <SOME: "some">
+| <TABLE: "table">
+| <TEMPORARY: "temporary">
+| <THEN: "then">
+| <TRANSLATE: "translate">
+| <TRUE: "true">
+| <UNION: "union">
+| <UNKNOWN: "unknown">
+| <UPDATE: "update">
+| <USING: "using">
+| <VALUES: "values">
+| <VIRTUAL: "virtual">
+| <WHEN: "when">
+| <WHERE: "where">
+| <WITH: "with">
+| <WHILE: "while">
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<SQL_TSI_FRAC_SECOND: "SQL_TSI_FRAC_SECOND">
+| <SQL_TSI_SECOND: "SQL_TSI_SECOND">
+| <SQL_TSI_MINUTE: "SQL_TSI_MINUTE">
+| <SQL_TSI_HOUR: "SQL_TSI_HOUR">
+| <SQL_TSI_DAY: "SQL_TSI_DAY">
+| <SQL_TSI_WEEK: "SQL_TSI_WEEK">
+| <SQL_TSI_MONTH: "SQL_TSI_MONTH">
+| <SQL_TSI_QUARTER: "SQL_TSI_QUARTER">
+| <SQL_TSI_YEAR: "SQL_TSI_YEAR">
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<ALL_IN_GROUP: <ID> <PERIOD>
<STAR>>
+| <ID: <QUOTED_ID> (<PERIOD>
<QUOTED_ID>)*>
+| <#QUOTED_ID: <ID_PART> | "\""
("\"\"" | ~["\""])+
"\"">
+| <#ID_PART: ("@" | "#" |
<LETTER>) (<LETTER> | "_" |
<DIGIT>)*>
+| <DATETYPE: "{" "d">
+| <TIMETYPE: "{" "t">
+| <TIMESTAMPTYPE: "{" "ts">
+| <BOOLEANTYPE: "{" "b">
+| <INTEGERVAL: (<MINUS>)? (<DIGIT>)+>
+| <FLOATVAL: (<MINUS>)? (<DIGIT>)*
<PERIOD> (<DIGIT>)+
(["e","E"]
(["+","-"])? (<DIGIT>)+)?>
+| <STRINGVAL: ("N")? "\'"
("\'\'" | ~["\'"])*
"\'">
+| <#LETTER:
["a"-"z","A"-"Z"]
| ["\u0153"-"\ufffd"]>
+| <#DIGIT: ["0"-"9"]>
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<COMMA: ",">
+| <PERIOD: ".">
+| <LPAREN: "(">
+| <RPAREN: ")">
+| <LBRACE: "{">
+| <RBRACE: "}">
+| <EQ: "=">
+| <NE: "<>">
+| <NE2: "!=">
+| <LT: "<">
+| <LE: "<=">
+| <GT: ">">
+| <GE: ">=">
+| <STAR: "*">
+| <SLASH: "/">
+| <PLUS: "+">
+| <MINUS: "-">
+| <QMARK: "?">
+| <DOLLAR: "$">
+| <SEMICOLON: ";">
+| <CONCAT_OP: "||">
+}
+
+ </para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect1>
+ <sect1 remap="h2">
+ <title>NON-TERMINALS</title>
+ <informaltable frame="none">
+ <tgroup cols="3">
+ <colspec colname="c1" colwidth="33*"/>
+ <colspec colname="c2" colwidth="5*"/>
+ <colspec colname="c3" colwidth="62*"/>
+ <tbody>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod1"
xreflabel="stringVal"/>stringVal</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<STRINGVAL> )</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod2"
xreflabel="id"/>id</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<ID> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod3"
xreflabel="command"/>command</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<link linkend="SQLParser.html-prod4">createUpdateProcedure</link> )
| <link linkend="SQLParser.html-prod5">userCommand</link> | <link
linkend="SQLParser.html-prod6">callableStatement</link> ) (
<SEMICOLON> )? <EOF></para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod5"
xreflabel="userCommand"/>userCommand</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod7">queryExpression</link> |
<link linkend="SQLParser.html-prod8">storedProcedure</link> |
<link linkend="SQLParser.html-prod9">insert</link> | <link
linkend="SQLParser.html-prod10">update</link> | <link
linkend="SQLParser.html-prod11">delete</link> | <link
linkend="SQLParser.html-prod12">dropTable</link> | <link
linkend="SQLParser.html-prod13">createTempTable</link>
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod12"
xreflabel="dropTable"/>dropTable</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><DROP> <TABLE> <link
linkend="SQLParser.html-prod2">id</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod13"
xreflabel="createTempTable"/>createTempTable</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><CREATE> <LOCAL>
<TEMPORARY> <TABLE> <link
linkend="SQLParser.html-prod2">id</link> <LPAREN>
<link linkend="SQLParser.html-prod14">createElementsWithTypes</link>
<RPAREN></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod15"
xreflabel="errorStatement"/>errorStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><ERROR> <link
linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod17"
xreflabel="statement"/>statement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod18">ifStatement</link> | <link
linkend="SQLParser.html-prod19">loopStatement</link> | <link
linkend="SQLParser.html-prod20">whileStatement</link> | <link
linkend="SQLParser.html-prod21">delimitedStatement</link>
)</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod21"
xreflabel="delimitedStatement"/>delimitedStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod22">sqlStatement</link> | <link
linkend="SQLParser.html-prod15">errorStatement</link> | <link
linkend="SQLParser.html-prod23">assignStatement</link> | <link
linkend="SQLParser.html-prod24">declareStatement</link> | <link
linkend="SQLParser.html-prod25">continueStatement</link> | <link
linkend="SQLParser.html-prod26">breakStatement</link> )
<SEMICOLON></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod27"
xreflabel="block"/>block</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod17">statement</link> | (
<BEGIN> ( <link
linkend="SQLParser.html-prod17">statement</link> )* <END>
) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod26"
xreflabel="breakStatement"/>breakStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><BREAK></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod25"
xreflabel="continueStatement"/>continueStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><CONTINUE></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod20"
xreflabel="whileStatement"/>whileStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><WHILE> <LPAREN>
<link linkend="SQLParser.html-prod28">criteria</link>
<RPAREN> <link
linkend="SQLParser.html-prod27">block</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod19"
xreflabel="loopStatement"/>loopStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><LOOP> <ON>
<LPAREN> <link
linkend="SQLParser.html-prod7">queryExpression</link>
<RPAREN> <AS> <link
linkend="SQLParser.html-prod2">id</link><link
linkend="SQLParser.html-prod27">block</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod18"
xreflabel="ifStatement"/>ifStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><IF> <LPAREN> <link
linkend="SQLParser.html-prod28">criteria</link> <RPAREN>
<link linkend="SQLParser.html-prod27">block</link> (
<ELSE> <link
linkend="SQLParser.html-prod27">block</link>
)?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod29"
xreflabel="criteriaSelector"/>criteriaSelector</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<EQ> | <NE> | <NE2> | <LE> |
<GE> | <LT> | <GT> | <IN> |
<LIKE> | ( <IS> <NULL> ) |
<BETWEEN> ) )? <CRITERIA> ( <ON>
<LPAREN> <link
linkend="SQLParser.html-prod2">id</link> ( <COMMA>
<link linkend="SQLParser.html-prod2">id</link> )*
<RPAREN> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod30"
xreflabel="hasCriteria"/>hasCriteria</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><HAS> <link
linkend="SQLParser.html-prod29">criteriaSelector</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod24"
xreflabel="declareStatement"/>declareStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><DECLARE> <link
linkend="SQLParser.html-prod31">dataType</link><link
linkend="SQLParser.html-prod2">id</link> ( <EQ> <link
linkend="SQLParser.html-prod32">assignStatementOperand</link>
)?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod23"
xreflabel="assignStatement"/>assignStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod2">id</link> <EQ> <link
linkend="SQLParser.html-prod32">assignStatementOperand</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod32"
xreflabel="assignStatementOperand"/>assignStatementOperand</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<link linkend="SQLParser.html-prod9">insert</link> ) | <link
linkend="SQLParser.html-prod10">update</link> | <link
linkend="SQLParser.html-prod11">delete</link> | <link
linkend="SQLParser.html-prod8">storedProcedure</link> | ( <link
linkend="SQLParser.html-prod16">expression</link> ) | <link
linkend="SQLParser.html-prod7">queryExpression</link>
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod22"
xreflabel="sqlStatement"/>sqlStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<link linkend="SQLParser.html-prod33">dynamicCommand</link> ) |
<link linkend="SQLParser.html-prod5">userCommand</link>
)</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod34"
xreflabel="translateCriteria"/>translateCriteria</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><TRANSLATE> <link
linkend="SQLParser.html-prod29">criteriaSelector</link> (
<WITH> <LPAREN> <link
linkend="SQLParser.html-prod2">id</link> <EQ> <link
linkend="SQLParser.html-prod16">expression</link> (
<COMMA> <link linkend="SQLParser.html-prod2">id</link>
<EQ> <link
linkend="SQLParser.html-prod16">expression</link> )*
<RPAREN> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod4"
xreflabel="createUpdateProcedure"/>createUpdateProcedure</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><CREATE> ( <VIRTUAL> )?
( <UPDATE> )? <PROCEDURE> <link
linkend="SQLParser.html-prod27">block</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod33"
xreflabel="dynamicCommand"/>dynamicCommand</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<EXECUTE> | <EXEC> ) <STRING> <link
linkend="SQLParser.html-prod16">expression</link> ( <AS>
<link linkend="SQLParser.html-prod14">createElementsWithTypes</link>
( <INTO> <link
linkend="SQLParser.html-prod2">id</link> )? )? ( <USING>
<link linkend="SQLParser.html-prod35">setClauseList</link> )? (
<UPDATE> ( ( <INTEGERVAL> ) | ( <STAR> ) )
)?</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod35"
xreflabel="setClauseList"/>setClauseList</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod2">id</link> <EQ> (
<COMMA> <link linkend="SQLParser.html-prod2">id</link>
<EQ> )*</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod14"
xreflabel="createElementsWithTypes"/>createElementsWithTypes</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod2">id</link><link
linkend="SQLParser.html-prod31">dataType</link> ( <COMMA>
<link linkend="SQLParser.html-prod2">id</link><link
linkend="SQLParser.html-prod31">dataType</link>
)*</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod6"
xreflabel="callableStatement"/>callableStatement</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><LBRACE> ( <QMARK>
<EQ> )? <ID> <link
linkend="SQLParser.html-prod2">id</link> ( <LPAREN> (
<link linkend="SQLParser.html-prod36">executeUnnamedParams</link> )
<RPAREN> )? <RBRACE> ( <link
linkend="SQLParser.html-prod37">option</link>
)?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod8"
xreflabel="storedProcedure"/>storedProcedure</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<EXEC> | <EXECUTE> ) <link
linkend="SQLParser.html-prod2">id</link> <LPAREN> (
<link linkend="SQLParser.html-prod38">executeNamedParams</link> |
<link linkend="SQLParser.html-prod36">executeUnnamedParams</link> )
<RPAREN> ) ( <link
linkend="SQLParser.html-prod37">option</link>
)?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod36"
xreflabel="executeUnnamedParams"/>executeUnnamedParams</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod16">expression</link> (
<COMMA> <link
linkend="SQLParser.html-prod16">expression</link> )*
)?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod38"
xreflabel="executeNamedParams"/>executeNamedParams</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod2">id</link> <EQ>
<link linkend="SQLParser.html-prod16">expression</link> (
<COMMA> <link linkend="SQLParser.html-prod2">id</link>
<EQ> <link
linkend="SQLParser.html-prod16">expression</link> )*
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod9"
xreflabel="insert"/>insert</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><INSERT> <INTO> <link
linkend="SQLParser.html-prod2">id</link> ( <LPAREN>
<link linkend="SQLParser.html-prod2">id</link> (
<COMMA> <link linkend="SQLParser.html-prod2">id</link>
)* <RPAREN> )? ( ( <VALUES> <link
linkend="SQLParser.html-prod39">rowValues</link> ) | ( <link
linkend="SQLParser.html-prod7">queryExpression</link> ) ) ( <link
linkend="SQLParser.html-prod37">option</link>
)?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod39"
xreflabel="rowValues"/>rowValues</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><LPAREN> <link
linkend="SQLParser.html-prod16">expression</link> (
<COMMA> <link
linkend="SQLParser.html-prod16">expression</link> )*
<RPAREN></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod10"
xreflabel="update"/>update</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><UPDATE> <link
linkend="SQLParser.html-prod2">id</link> <SET> <link
linkend="SQLParser.html-prod35">setClauseList</link> ( <link
linkend="SQLParser.html-prod40">where</link> )? ( <link
linkend="SQLParser.html-prod37">option</link>
)?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod11"
xreflabel="delete"/>delete</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><DELETE> <FROM> <link
linkend="SQLParser.html-prod2">id</link> ( <link
linkend="SQLParser.html-prod40">where</link> )? ( <link
linkend="SQLParser.html-prod37">option</link>
)?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod7"
xreflabel="queryExpression"/>queryExpression</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod41">queryExpressionBody</link></para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod41"
xreflabel="queryExpressionBody"/>queryExpressionBody</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod42">queryTerm</link> ( (
<UNION> | <EXCEPT> ) ( <ALL> |
<DISTINCT> )? <link
linkend="SQLParser.html-prod42">queryTerm</link> )* ( <link
linkend="SQLParser.html-prod43">orderby</link> )? ( <link
linkend="SQLParser.html-prod44">limit</link> )? ( <link
linkend="SQLParser.html-prod37">option</link>
)?</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod42"
xreflabel="queryTerm"/>queryTerm</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod45">queryPrimary</link> (
<INTERSECT> ( <ALL> | <DISTINCT> )? <link
linkend="SQLParser.html-prod45">queryPrimary</link>
)*</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod45"
xreflabel="queryPrimary"/>queryPrimary</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod46">query</link> | (
<LPAREN> <link
linkend="SQLParser.html-prod41">queryExpressionBody</link>
<RPAREN> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod46"
xreflabel="query"/>query</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod47">select</link> ( <link
linkend="SQLParser.html-prod48">into</link> )? ( <link
linkend="SQLParser.html-prod49">from</link> ( <link
linkend="SQLParser.html-prod40">where</link> )? ( <link
linkend="SQLParser.html-prod50">groupBy</link> )? ( <link
linkend="SQLParser.html-prod51">having</link> )?
)?</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod48"
xreflabel="into"/>into</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><INTO> ( <link
linkend="SQLParser.html-prod2">id</link> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod47"
xreflabel="select"/>select</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><SELECT> ( <ALL> | (
<DISTINCT> ) )? ( <STAR> | ( <link
linkend="SQLParser.html-prod52">selectSymbol</link> (
<COMMA> <link
linkend="SQLParser.html-prod52">selectSymbol</link> )* )
)</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod52"
xreflabel="selectSymbol"/>selectSymbol</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<ALL_IN_GROUP> ) | ( <link
linkend="SQLParser.html-prod16">expression</link> ) ( (
<AS> )? ( <link
linkend="SQLParser.html-prod2">id</link> ) )?
)</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod53"
xreflabel="aggregateSymbol"/>aggregateSymbol</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<COUNT> <LPAREN> <STAR> <RPAREN> )
| ( ( <COUNT> | <SUM> | <AVG> |
<MIN> | <MAX> ) <LPAREN> (
<DISTINCT> )? <link
linkend="SQLParser.html-prod16">expression</link>
<RPAREN> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod49"
xreflabel="from"/>from</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><FROM> ( <link
linkend="SQLParser.html-prod54">tableReference</link> (
<COMMA> <link
linkend="SQLParser.html-prod54">tableReference</link> )*
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod54"
xreflabel="tableReference"/>tableReference</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<LBRACE> <OJ> <link
linkend="SQLParser.html-prod55">tableReferenceUnescaped</link>
<RBRACE> ) | <link
linkend="SQLParser.html-prod55">tableReferenceUnescaped</link>
)</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod55"
xreflabel="tableReferenceUnescaped"/>tableReferenceUnescaped</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod56">joinedTable</link> | <link
linkend="SQLParser.html-prod57">tablePrimary</link>
)</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod56"
xreflabel="joinedTable"/>joinedTable</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod57">tablePrimary</link> ( ( <link
linkend="SQLParser.html-prod58">crossJoin</link> | <link
linkend="SQLParser.html-prod59">qualifiedJoin</link> )
)+</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod58"
xreflabel="crossJoin"/>crossJoin</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<CROSS> | <UNION> ) <JOIN> <link
linkend="SQLParser.html-prod57">tablePrimary</link>
)</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod59"
xreflabel="qualifiedJoin"/>qualifiedJoin</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( (
<RIGHT> ( <OUTER> )? ) | ( <LEFT> (
<OUTER> )? ) | ( <FULL> ( <OUTER> )? ) |
<INNER> )? <JOIN> <link
linkend="SQLParser.html-prod54">tableReference</link>
<ON> <link
linkend="SQLParser.html-prod28">criteria</link>
)</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod57"
xreflabel="tablePrimary"/>tablePrimary</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod60">unaryFromClause</link> |
<link linkend="SQLParser.html-prod61">subqueryFromClause</link> | (
<LPAREN> <link
linkend="SQLParser.html-prod56">joinedTable</link>
<RPAREN> ) ) ( ( <MAKEDEP> ) | ( <MAKENOTDEP> )
)?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod61"
xreflabel="subqueryFromClause"/>subqueryFromClause</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><LPAREN> ( <link
linkend="SQLParser.html-prod7">queryExpression</link> | <link
linkend="SQLParser.html-prod8">storedProcedure</link> )
<RPAREN> ( <AS> )? <link
linkend="SQLParser.html-prod2">id</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod60"
xreflabel="unaryFromClause"/>unaryFromClause</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<ID> ( ( <AS> )? <link
linkend="SQLParser.html-prod2">id</link> )?
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod40"
xreflabel="where"/>where</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><WHERE> <link
linkend="SQLParser.html-prod28">criteria</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod28"
xreflabel="criteria"/>criteria</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod62">compoundCritOr</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod62"
xreflabel="compoundCritOr"/>compoundCritOr</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod63">compoundCritAnd</link> (
<OR> <link
linkend="SQLParser.html-prod63">compoundCritAnd</link>
)*</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod63"
xreflabel="compoundCritAnd"/>compoundCritAnd</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod64">notCrit</link> ( <AND>
<link linkend="SQLParser.html-prod64">notCrit</link>
)*</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod64"
xreflabel="notCrit"/>notCrit</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<NOT> )? <link
linkend="SQLParser.html-prod65">primary</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod65"
xreflabel="primary"/>primary</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod66">predicate</link> | (
<LPAREN> <link
linkend="SQLParser.html-prod28">criteria</link> <RPAREN>
) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod66"
xreflabel="predicate"/>predicate</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod67">subqueryCompareCriteria</link>
| <link linkend="SQLParser.html-prod68">compareCrit</link> |
<link linkend="SQLParser.html-prod69">matchCrit</link> | <link
linkend="SQLParser.html-prod70">betweenCrit</link> | <link
linkend="SQLParser.html-prod71">setCrit</link> | <link
linkend="SQLParser.html-prod72">existsCriteria</link> | <link
linkend="SQLParser.html-prod30">hasCriteria</link> | <link
linkend="SQLParser.html-prod34">translateCriteria</link> | <link
linkend="SQLParser.html-prod73">isNullCrit</link>
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod68"
xreflabel="compareCrit"/>compareCrit</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod16">expression</link> ( <EQ>
| <NE> | <NE2> | <LT> | <LE> |
<GT> | <GE> ) <link
linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod74"
xreflabel="subquery"/>subquery</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><LPAREN> ( <link
linkend="SQLParser.html-prod7">queryExpression</link> | <link
linkend="SQLParser.html-prod8">storedProcedure</link> )
<RPAREN></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod67"
xreflabel="subqueryCompareCriteria"/>subqueryCompareCriteria</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod16">expression</link> ( <EQ>
| <NE> | <NE2> | <LT> | <LE> |
<GT> | <GE> ) ( <ANY> | <SOME> |
<ALL> ) <link
linkend="SQLParser.html-prod74">subquery</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod69"
xreflabel="matchCrit"/>matchCrit</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod16">expression</link> (
<NOT> )? <LIKE> <link
linkend="SQLParser.html-prod16">expression</link> ( <link
linkend="SQLParser.html-prod75">escapeChar</link> | (
<LBRACE> <link
linkend="SQLParser.html-prod75">escapeChar</link>
<RBRACE> ) )? )</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod75"
xreflabel="escapeChar"/>escapeChar</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><ESCAPE> <link
linkend="SQLParser.html-prod1">stringVal</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod70"
xreflabel="betweenCrit"/>betweenCrit</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod16">expression</link> ( <NOT>
)? <BETWEEN> <link
linkend="SQLParser.html-prod16">expression</link> <AND>
<link
linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod73"
xreflabel="isNullCrit"/>isNullCrit</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod16">expression</link> <IS> (
<NOT> )? <NULL></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod71"
xreflabel="setCrit"/>setCrit</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod16">expression</link> ( <NOT>
)? <IN> ( ( <link
linkend="SQLParser.html-prod74">subquery</link> ) | (
<LPAREN> <link
linkend="SQLParser.html-prod16">expression</link> (
<COMMA> <link
linkend="SQLParser.html-prod16">expression</link> )*
<RPAREN> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod72"
xreflabel="existsCriteria"/>existsCriteria</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><EXISTS> <link
linkend="SQLParser.html-prod74">subquery</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod50"
xreflabel="groupBy"/>groupBy</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><GROUP> <BY> ( <link
linkend="SQLParser.html-prod76">groupByItem</link> (
<COMMA> <link
linkend="SQLParser.html-prod76">groupByItem</link> )*
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod76"
xreflabel="groupByItem"/>groupByItem</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod51"
xreflabel="having"/>having</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><HAVING> <link
linkend="SQLParser.html-prod28">criteria</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod43"
xreflabel="orderby"/>orderby</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><ORDER> <BY> <link
linkend="SQLParser.html-prod77">sortKey</link> ( <ASC> |
<DESC> )? ( <COMMA> <link
linkend="SQLParser.html-prod77">sortKey</link> ( <ASC> |
<DESC> )? )*</para></entry>
+ </row>
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod77"
xreflabel="sortKey"/>sortKey</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod44"
xreflabel="limit"/>limit</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><LIMIT> ( <INTEGERVAL> |
<QMARK> ) ( <COMMA> ( <INTEGERVAL> |
<QMARK> ) )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod37"
xreflabel="option"/>option</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><OPTION> ( <SHOWPLAN> |
<PLANONLY> | <DEBUG> | <MAKEDEP> <link
linkend="SQLParser.html-prod2">id</link> ( <COMMA>
<link linkend="SQLParser.html-prod2">id</link> )* |
<MAKENOTDEP> <link
linkend="SQLParser.html-prod2">id</link> ( <COMMA>
<link linkend="SQLParser.html-prod2">id</link> )* |
<NOCACHE> ( <link
linkend="SQLParser.html-prod2">id</link> ( <COMMA>
<link linkend="SQLParser.html-prod2">id</link> )* )?
)*</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod16"
xreflabel="expression"/>expression</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><link
linkend="SQLParser.html-prod78">concatExpression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod78"
xreflabel="concatExpression"/>concatExpression</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod79">plusExpression</link> (
<CONCAT_OP> <link
linkend="SQLParser.html-prod79">plusExpression</link> )*
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod79"
xreflabel="plusExpression"/>plusExpression</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod80">timesExpression</link> (
<link linkend="SQLParser.html-prod81">plusOperator</link><link
linkend="SQLParser.html-prod80">timesExpression</link> )*
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod81"
xreflabel="plusOperator"/>plusOperator</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<PLUS> | <MINUS> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod80"
xreflabel="timesExpression"/>timesExpression</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod82">basicExpression</link> (
<link linkend="SQLParser.html-prod83">timesOperator</link><link
linkend="SQLParser.html-prod82">basicExpression</link> )*
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod83"
xreflabel="timesOperator"/>timesOperator</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<STAR> | <SLASH> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod82"
xreflabel="basicExpression"/>basicExpression</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<QMARK> | <link
linkend="SQLParser.html-prod84">literal</link> | (
<LBRACE> <FN> <link
linkend="SQLParser.html-prod85">function</link> <RBRACE>
) | ( <link linkend="SQLParser.html-prod53">aggregateSymbol</link> )
| ( <link linkend="SQLParser.html-prod85">function</link> ) | (
<ID> ) | ( <LPAREN> <link
linkend="SQLParser.html-prod16">expression</link>
<RPAREN> ) | <link
linkend="SQLParser.html-prod74">subquery</link> | <link
linkend="SQLParser.html-prod86">caseExpression</link> | <link
linkend="SQLParser.html-prod87">searchedCaseExpression</link>
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod86"
xreflabel="caseExpression"/>caseExpression</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><CASE> <link
linkend="SQLParser.html-prod16">expression</link> (
<WHEN> <link
linkend="SQLParser.html-prod16">expression</link> <THEN>
<link linkend="SQLParser.html-prod16">expression</link> )+ (
<ELSE> <link
linkend="SQLParser.html-prod16">expression</link> )?
<END></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod87"
xreflabel="searchedCaseExpression"/>searchedCaseExpression</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left"
valign="top"><para><CASE> ( <WHEN> <link
linkend="SQLParser.html-prod28">criteria</link> <THEN>
<link linkend="SQLParser.html-prod16">expression</link> )+ (
<ELSE> <link
linkend="SQLParser.html-prod16">expression</link> )?
<END></para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod85"
xreflabel="function"/>function</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( (
<CONVERT> <LPAREN> <link
linkend="SQLParser.html-prod16">expression</link> <COMMA>
<link linkend="SQLParser.html-prod31">dataType</link>
<RPAREN> ) | ( <CAST> <LPAREN> <link
linkend="SQLParser.html-prod16">expression</link> <AS>
<link linkend="SQLParser.html-prod31">dataType</link>
<RPAREN> ) | ( ( <TIMESTAMPADD> |
<TIMESTAMPDIFF> ) <LPAREN> <link
linkend="SQLParser.html-prod88">intervalType</link>
<COMMA> <link
linkend="SQLParser.html-prod16">expression</link> <COMMA>
<link linkend="SQLParser.html-prod16">expression</link>
<RPAREN> ) | ( ( <LEFT> | <RIGHT> |
<CHAR> ) <LPAREN> ( <link
linkend="SQLParser.html-prod16">expression</link> (
<COMMA> <link
linkend="SQLParser.html-prod16">expression</link> )* )?
<RPAREN> ) | ( ( <INSERT> ) <LPAREN> ( <link
linkend="SQLParser.html-prod16">expression!
</link> ( <COMMA> <link
linkend="SQLParser.html-prod16">expression</link> )* )?
<RPAREN> ) | ( ( <TRANSLATE> ) <LPAREN> (
<link linkend="SQLParser.html-prod16">expression</link> (
<COMMA> <link
linkend="SQLParser.html-prod16">expression</link> )* )?
<RPAREN> ) | ( <link
linkend="SQLParser.html-prod2">id</link> <LPAREN> (
<link linkend="SQLParser.html-prod16">expression</link> (
<COMMA> <link
linkend="SQLParser.html-prod16">expression</link> )* )?
<RPAREN> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod31"
xreflabel="dataType"/>dataType</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<STRING> | <BOOLEAN> | <BYTE> |
<SHORT> | <CHAR> | <INTEGER> |
<LONG> | <BIGINTEGER> | <FLOAT> |
<DOUBLE> | <BIGDECIMAL> | <DATE> |
<TIME> | <TIMESTAMP> | <OBJECT> |
<BLOB> | <CLOB> | <XML>
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod88"
xreflabel="intervalType"/>intervalType</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<SQL_TSI_FRAC_SECOND> | <SQL_TSI_SECOND> |
<SQL_TSI_MINUTE> | <SQL_TSI_HOUR> |
<SQL_TSI_DAY> | <SQL_TSI_WEEK> | <SQL_TSI_MONTH>
| <SQL_TSI_QUARTER> | <SQL_TSI_YEAR>
)</para></entry>
+ </row>
+
+ <row>
+ <entry align="right"
valign="top"><para><anchor id="SQLParser.html-prod84"
xreflabel="literal"/>literal</para></entry>
+ <entry align="center"
valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>(
<link linkend="SQLParser.html-prod1">stringVal</link> |
<INTEGERVAL> | <FLOATVAL> | <FALSE> |
<TRUE> | <UNKNOWN> | <NULL> | ( (
<BOOLEANTYPE> | <TIMESTAMPTYPE> | <DATETYPE> |
<TIMETYPE> ) <link
linkend="SQLParser.html-prod1">stringVal</link> <RBRACE>
) )</para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect1>
</appendix>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-11-25 21:45:09 UTC (rev 1603)
+++ trunk/pom.xml 2009-11-29 14:39:39 UTC (rev 1604)
@@ -87,9 +87,7 @@
<descriptor>build/assembly/cdk/cdk-dist.xml</descriptor>
<descriptor>build/assembly/adminshell/adminshell-dependencies.xml</descriptor>
<descriptor>build/assembly/adminshell/adminshell-dist.xml</descriptor>
- <!--
<descriptor>documentation/assembly/docs.xml</descriptor>
- -->
</descriptors>
<outputDirectory>target/distribution</outputDirectory>
<workDirectory>target/assembly/work</workDirectory>
Show replies by date