[teiid-commits] teiid SVN: r1604 - in trunk: common-internal/src/main/java/com/metamatrix/platform and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Sun Nov 29 09:39:39 EST 2009


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>
-&lt;DEFAULT&gt; SKIP : {" "| "\t"| "\n"| "\r"}  </entry>
- </row>
- <!-- Token -->
- <row>
-  <entry>
-&lt;DEFAULT&gt; MORE : {"/*" : IN_MULTI_LINE_COMMENT}  </entry>
- </row>
- <!-- Token -->
- <row>
-  <entry>
-&lt;IN_MULTI_LINE_COMMENT&gt; SPECIAL : {&lt;MULTI_LINE_COMMENT: "*/"&gt; : DEFAULT}  </entry>
- </row>
- <!-- Token -->
- <row>
-  <entry>
-&lt;IN_MULTI_LINE_COMMENT&gt; MORE : {&lt;~[]&gt;}  </entry>
- </row>
- <!-- Token -->
- <row>
-  <entry>
-&lt;DEFAULT&gt; TOKEN : {&lt;STRING: "string"&gt;| &lt;BOOLEAN: "boolean"&gt;| &lt;BYTE: "byte"&gt;| &lt;SHORT: "short"&gt;| &lt;CHAR: "char"&gt;| &lt;INTEGER: "integer"&gt;| &lt;LONG: "long"&gt;| &lt;BIGINTEGER: "biginteger"&gt;| &lt;FLOAT: "float"&gt;| &lt;DOUBLE: "double"&gt;| &lt;BIGDECIMAL: "bigdecimal"&gt;| &lt;DATE: "date"&gt;| &lt;TIME: "time"&gt;| &lt;TIMESTAMP: "timestamp"&gt;| &lt;OBJECT: "object"&gt;| &lt;BLOB: "blob"&gt;| &lt;CLOB: "clob"&gt;| &lt;XML: "xml"&gt;}  </entry>
- </row>
- <!-- Token -->
- <row>
-  <entry>
-&lt;DEFAULT&gt; TOKEN : {&lt;CAST: "cast"&gt;| &lt;CONVERT: "convert"&gt;| &lt;TIMESTAMPADD: "timestampadd"&gt;| &lt;TIMESTAMPDIFF: "timestampdiff"&gt;| &lt;COUNT: "count"&gt;| &lt;SUM: "sum"&gt;| &lt;AVG: "avg"&gt;| &lt;MIN: "min"&gt;| &lt;MAX: "max"&gt;}  </entry>
- </row>
- <!-- Token -->
- <row>
-  <entry>
-&lt;DEFAULT&gt; TOKEN : {&lt;ALL: "all"&gt;| &lt;AND: "and"&gt;| &lt;ANY: "any"&gt;| &lt;AS: "as"&gt;| &lt;ASC: "asc"&gt;| &lt;BEGIN: "begin"&gt;| &lt;BETWEEN: "between"&gt;| &lt;BREAK: "break"&gt;| &lt;BY: "by"&gt;| &lt;CASE: "case"&gt;| &lt;CONTINUE: "continue"&gt;| &lt;CREATE: "create"&gt;| &lt;CRITERIA: "criteria"&gt;| &lt;CROSS: "cross"&gt;| &lt;DEBUG: "debug"&gt;| &lt;DECLARE: "declare"&gt;| &lt;DELETE: "delete"&gt;| &lt;DESC: "desc"&gt;| &lt;DISTINCT: "distinct"&gt;| &lt;DROP: "drop"&gt;| &lt;ELSE: "else"&gt;| &lt;END: "end"&gt;| &lt;ERROR: "error"&gt;| &lt;ESCAPE: "escape"&gt;| &lt;EXCEPT: "except"&gt;| &lt;EXEC: "exec"&gt;| &lt;EXECUTE: "execute"&gt;| &lt;EXISTS: "exists"&gt;| &lt;FALSE: "false"&gt;| &lt;FN: "fn"&gt;| &lt;FOR: "for"&gt;| &lt;FROM: "from"&gt;| &lt;FULL: "full"&gt;| &lt;GROUP: "group"&gt;| &lt;HAS: "has"&gt;| &lt;HAVING: "having"&gt;| &lt;IF: "if"&gt;| &lt;IN: "in"&gt;| &lt;INNER: "inner"&gt;| &lt;INSERT: "insert"&gt;| &lt;INTERSECT: "intersect"&gt;|!
  &lt;INTO: "into"&gt;| &lt;IS: "is"&gt;| &lt;JOIN: "join"&gt;| &lt;LEFT: "left"&gt;| &lt;LIKE: "like"&gt;| &lt;LIMIT: "limit"&gt;| &lt;LOCAL: "local"&gt;| &lt;LOOP: "loop"&gt;| &lt;MAKEDEP: "makedep"&gt;| &lt;MAKENOTDEP: "makenotdep"&gt;| &lt;NOCACHE: "nocache"&gt;| &lt;NOT: "not"&gt;| &lt;NULL: "null"&gt;| &lt;ON: "on"&gt;| &lt;OJ: "oj"&gt;| &lt;OPTION: "option"&gt;| &lt;OR: "or"&gt;| &lt;ORDER: "order"&gt;| &lt;OUTER: "outer"&gt;| &lt;PLANONLY: "planonly"&gt;| &lt;PROCEDURE: "procedure"&gt;| &lt;RIGHT: "right"&gt;| &lt;SELECT: "select"&gt;| &lt;SET: "set"&gt;| &lt;SHOWPLAN: "showplan"&gt;| &lt;SOME: "some"&gt;| &lt;TABLE: "table"&gt;| &lt;TEMPORARY: "temporary"&gt;| &lt;THEN: "then"&gt;| &lt;TRANSLATE: "translate"&gt;| &lt;TRUE: "true"&gt;| &lt;UNION: "union"&gt;| &lt;UNKNOWN: "unknown"&gt;| &lt;UPDATE: "update"&gt;| &lt;USING: "using"&gt;| &lt;VALUES: "values"&gt;| &lt;VIRTUAL: "virtual"&gt;| &lt;WHEN: "when"&gt;| &lt;WHERE: "where"&gt;| &lt;WITH: "with"&gt;| &lt;WHILE: !
 "while"&gt;}  </entry>
- </row>
- <!-- Token -->
- <row>
-  <entry>
-&lt;DEFAULT&gt; TOKEN : {&lt;SQL_TSI_FRAC_SECOND: "SQL_TSI_FRAC_SECOND"&gt;| &lt;SQL_TSI_SECOND: "SQL_TSI_SECOND"&gt;| &lt;SQL_TSI_MINUTE: "SQL_TSI_MINUTE"&gt;| &lt;SQL_TSI_HOUR: "SQL_TSI_HOUR"&gt;| &lt;SQL_TSI_DAY: "SQL_TSI_DAY"&gt;| &lt;SQL_TSI_WEEK: "SQL_TSI_WEEK"&gt;| &lt;SQL_TSI_MONTH: "SQL_TSI_MONTH"&gt;| &lt;SQL_TSI_QUARTER: "SQL_TSI_QUARTER"&gt;| &lt;SQL_TSI_YEAR: "SQL_TSI_YEAR"&gt;}  </entry>
- </row>
- <!-- Token -->
- <row>
-  <entry>
-&lt;DEFAULT&gt; TOKEN : {&lt;ALL_IN_GROUP: (&lt;GROUP_PART&gt; | &lt;MMUUID_PART&gt;) &lt;PERIOD&gt; &lt;STAR&gt;&gt;| &lt;VARIABLE: &lt;ID&gt; | &lt;MMUUID&gt;&gt;| &lt;#ID: &lt;GROUP_PART&gt; ((&lt;PERIOD&gt; | &lt;SLASH&gt;) (&lt;QUOTED_ID&gt; | &lt;MMUUID_PART&gt;))?&gt;| &lt;#ELEMENT: &lt;GROUP_PART&gt; (&lt;PERIOD&gt; | &lt;SLASH&gt;) &lt;QUOTED_ID&gt;&gt;| &lt;#GROUP_PART: ("#")? (&lt;QUOTED_ID&gt; (&lt;PERIOD&gt; | &lt;SLASH&gt;))? &lt;QUOTED_ID&gt;&gt;| &lt;#QUOTED_ID: &lt;DOTTED_ID&gt; | "\"" &lt;DOTTED_ID&gt; "\""&gt;| &lt;#DOTTED_ID: &lt;ID_PART&gt; ((&lt;PERIOD&gt; | &lt;SLASH&gt;) &lt;ID_PART&gt;)*&gt;| &lt;#ID_PART: ("@")? &lt;LETTER&gt; (&lt;ID_CHAR&gt;)*&gt;| &lt;#ID_CHAR: &lt;LETTER&gt; | "_" | &lt;DIGIT&gt;&gt;| &lt;#MMUUID: &lt;MMUUID_PART&gt; (&lt;PERIOD&gt; &lt;MMUUID_PART&gt;)?&gt;| &lt;#MMUUID_PART: "mmuuid:" (&lt;MMUUID_CHAR&gt;)*&gt;| &lt;#MMUUID_CHAR: ["a"-"f"] | ["0"-"9"] | "-"&gt;| &lt;DATETYPE: "{" "d"&gt;| &lt;TIMETYPE: "{" "t"&gt;| &lt;TIMEST!
 AMPTYPE: "{" "ts"&gt;| &lt;BOOLEANTYPE: "{" "b"&gt;| &lt;INTEGERVAL: (&lt;MINUS&gt;)? (&lt;DIGIT&gt;)+&gt;| &lt;FLOATVAL: (&lt;MINUS&gt;)? (&lt;DIGIT&gt;)* &lt;PERIOD&gt; (&lt;DIGIT&gt;)+ (["e","E"] (["+","-"])? (&lt;DIGIT&gt;)+)?&gt;| &lt;STRINGVAL: ("N")? (&lt;STRINGA&gt; | &lt;STRINGB&gt;)&gt;| &lt;#STRINGA: "\'" (~["\'"])* ("\'\'" (~["\'"])*)* "\'"&gt;| &lt;#STRINGB: "\"" (~["\""])* ("\"\"" (~["\""])*)* "\""&gt;| &lt;#LETTER: ["a"-"z","A"-"Z"] | ["\u0153"-"\ufffd"]&gt;| &lt;#DIGIT: ["0"-"9"]&gt;| &lt;#COLON: ":"&gt;}  </entry>
- </row>
- <!-- Token -->
- <row>
-  <entry>
-&lt;DEFAULT&gt; TOKEN : {&lt;COMMA: ","&gt;| &lt;PERIOD: "."&gt;| &lt;LPAREN: "("&gt;| &lt;RPAREN: ")"&gt;| &lt;LBRACE: "{"&gt;| &lt;RBRACE: "}"&gt;| &lt;EQ: "="&gt;| &lt;NE: "&lt;&gt;"&gt;| &lt;NE2: "!="&gt;| &lt;LT: "&lt;"&gt;| &lt;LE: "&lt;="&gt;| &lt;GT: "&gt;"&gt;| &lt;GE: "&gt;="&gt;| &lt;STAR: "*"&gt;| &lt;SLASH: "/"&gt;| &lt;PLUS: "+"&gt;| &lt;MINUS: "-"&gt;| &lt;QMARK: "?"&gt;| &lt;DOLLAR: "$"&gt;| &lt;SEMICOLON: ";"&gt;| &lt;CONCAT_OP: "||"&gt;}  </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> ) ( &lt;SEMICOLON&gt; )? &lt;EOF&gt;</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">&lt;DROP&gt; &lt;TABLE&gt; &lt;VARIABLE&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod11"/>createTempTable ::= </entry>
-<entry valign="top">&lt;CREATE&gt; &lt;LOCAL&gt; &lt;TEMPORARY&gt; &lt;TABLE&gt; &lt;VARIABLE&gt; &lt;LPAREN&gt; <link linkend="prod12">createElementsWithTypes</link> &lt;RPAREN&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod13"/>errorStatement ::= </entry>
-<entry valign="top">&lt;ERROR&gt; <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> ) &lt;SEMICOLON&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod25"/>block ::= </entry>
-<entry valign="top">( <link linkend="prod15">statement</link> | ( &lt;BEGIN&gt; ( <link linkend="prod15">statement</link> )* &lt;END&gt; ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod24"/>breakStatement ::= </entry>
-<entry valign="top">&lt;BREAK&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod23"/>continueStatement ::= </entry>
-<entry valign="top">&lt;CONTINUE&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod18"/>whileStatement ::= </entry>
-<entry valign="top">&lt;WHILE&gt; &lt;LPAREN&gt; <link linkend="prod26">criteria</link> &lt;RPAREN&gt; <link linkend="prod25">block</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod17"/>loopStatement ::= </entry>
-<entry valign="top">&lt;LOOP&gt; &lt;ON&gt; &lt;LPAREN&gt; <link linkend="prod5">queryExpression</link> &lt;RPAREN&gt; &lt;AS&gt; &lt;VARIABLE&gt; <link linkend="prod25">block</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod16"/>ifStatement ::= </entry>
-<entry valign="top">&lt;IF&gt; &lt;LPAREN&gt; <link linkend="prod26">criteria</link> &lt;RPAREN&gt; <link linkend="prod25">block</link> ( &lt;ELSE&gt; <link linkend="prod25">block</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod27"/>criteriaSelector ::= </entry>
-<entry valign="top">( ( &lt;EQ&gt; | &lt;NE&gt; | &lt;NE2&gt; | &lt;LE&gt; | &lt;GE&gt; | &lt;LT&gt; | &lt;GT&gt; | &lt;IN&gt; | &lt;LIKE&gt; | ( &lt;IS&gt; &lt;NULL&gt; ) | &lt;BETWEEN&gt; ) )? &lt;CRITERIA&gt; ( &lt;ON&gt; &lt;LPAREN&gt; &lt;VARIABLE&gt; ( &lt;COMMA&gt; &lt;VARIABLE&gt; )* &lt;RPAREN&gt; )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod28"/>hasCriteria ::= </entry>
-<entry valign="top">&lt;HAS&gt; <link linkend="prod27">criteriaSelector</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod22"/>declareStatement ::= </entry>
-<entry valign="top">&lt;DECLARE&gt; <link linkend="prod29">dataType</link> &lt;VARIABLE&gt; ( &lt;EQ&gt; <link linkend="prod30">assignStatementOperand</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod21"/>assignStatement ::= </entry>
-<entry valign="top">&lt;VARIABLE&gt; &lt;EQ&gt; <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">&lt;TRANSLATE&gt; <link linkend="prod27">criteriaSelector</link> ( &lt;WITH&gt; &lt;LPAREN&gt; &lt;VARIABLE&gt; &lt;EQ&gt; <link linkend="prod14">expression</link> ( &lt;COMMA&gt; &lt;VARIABLE&gt; &lt;EQ&gt; <link linkend="prod14">expression</link> )* &lt;RPAREN&gt; )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod2"/>createUpdateProcedure ::= </entry>
-<entry valign="top">&lt;CREATE&gt; ( &lt;VIRTUAL&gt; )? ( &lt;UPDATE&gt; )? &lt;PROCEDURE&gt; <link linkend="prod25">block</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod31"/>dynamicCommand ::= </entry>
-<entry valign="top">( &lt;EXECUTE&gt; | &lt;EXEC&gt; ) &lt;STRING&gt; <link linkend="prod14">expression</link> ( &lt;AS&gt; <link linkend="prod12">createElementsWithTypes</link> ( &lt;INTO&gt; &lt;VARIABLE&gt; )? )? ( &lt;USING&gt; <link linkend="prod33">setClauseList</link> )? ( &lt;UPDATE&gt; ( ( &lt;INTEGERVAL&gt; ) | ( &lt;STAR&gt; ) ) )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod33"/>setClauseList ::= </entry>
-<entry valign="top">&lt;VARIABLE&gt; &lt;EQ&gt; ( &lt;COMMA&gt; &lt;VARIABLE&gt; &lt;EQ&gt; )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod12"/>createElementsWithTypes ::= </entry>
-<entry valign="top">&lt;VARIABLE&gt; <link linkend="prod29">dataType</link> ( &lt;COMMA&gt; &lt;VARIABLE&gt; <link linkend="prod29">dataType</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod4"/>callableStatement ::= </entry>
-<entry valign="top">&lt;LBRACE&gt; ( &lt;QMARK&gt; &lt;EQ&gt; )? &lt;VARIABLE&gt; &lt;VARIABLE&gt; ( &lt;LPAREN&gt; ( <link linkend="prod34">executeUnnamedParams</link> ) &lt;RPAREN&gt; )? &lt;RBRACE&gt; ( <link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod6"/>storedProcedure ::= </entry>
-<entry valign="top">( ( &lt;EXEC&gt; | &lt;EXECUTE&gt; ) &lt;VARIABLE&gt; &lt;LPAREN&gt; ( <link linkend="prod36">executeNamedParams</link> | <link linkend="prod34">executeUnnamedParams</link> ) &lt;RPAREN&gt; ) ( <link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod34"/>executeUnnamedParams ::= </entry>
-<entry valign="top">( <link linkend="prod14">expression</link> ( &lt;COMMA&gt; <link linkend="prod14">expression</link> )* )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod36"/>executeNamedParams ::= </entry>
-<entry valign="top">( <link linkend="prod37">paramName</link> &lt;EQ&gt; <link linkend="prod14">expression</link> ( &lt;COMMA&gt; <link linkend="prod37">paramName</link> &lt;EQ&gt; <link linkend="prod14">expression</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod37"/>paramName ::= </entry>
-<entry valign="top">&lt;VARIABLE&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod7"/>insert ::= </entry>
-<entry valign="top">&lt;INSERT&gt; &lt;INTO&gt; &lt;VARIABLE&gt; ( &lt;LPAREN&gt; &lt;VARIABLE&gt; ( &lt;COMMA&gt; &lt;VARIABLE&gt; )* &lt;RPAREN&gt; )? ( ( &lt;VALUES&gt; <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">&lt;LPAREN&gt; <link linkend="prod14">expression</link> ( &lt;COMMA&gt; <link linkend="prod14">expression</link> )* &lt;RPAREN&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod8"/>update ::= </entry>
-<entry valign="top">&lt;UPDATE&gt; &lt;VARIABLE&gt; &lt;SET&gt; <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">&lt;DELETE&gt; &lt;FROM&gt; &lt;VARIABLE&gt; ( <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> ( ( &lt;UNION&gt; | &lt;EXCEPT&gt; ) ( &lt;ALL&gt; | &lt;DISTINCT&gt; )? <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> ( &lt;INTERSECT&gt; ( &lt;ALL&gt; | &lt;DISTINCT&gt; )? <link linkend="prod44">queryPrimary</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod44"/>queryPrimary ::= </entry>
-<entry valign="top">( <link linkend="prod45">query</link> | ( &lt;LPAREN&gt; <link linkend="prod40">queryExpressionBody</link> &lt;RPAREN&gt; ) )</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">&lt;INTO&gt; ( &lt;VARIABLE&gt; )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod46"/>select ::= </entry>
-<entry valign="top">&lt;SELECT&gt; ( &lt;ALL&gt; | ( &lt;DISTINCT&gt; ) )? ( &lt;STAR&gt; | ( <link linkend="prod51">selectSymbol</link> ( &lt;COMMA&gt; <link linkend="prod51">selectSymbol</link> )* ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod51"/>selectSymbol ::= </entry>
-<entry valign="top">( ( &lt;ALL_IN_GROUP&gt; ) | ( <link linkend="prod14">expression</link> ) ( ( &lt;AS&gt; )? ( &lt;VARIABLE&gt; | &lt;STRINGVAL&gt; ) )? )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod52"/>aggregateSymbol ::= </entry>
-<entry valign="top">( ( &lt;COUNT&gt; &lt;LPAREN&gt; &lt;STAR&gt; &lt;RPAREN&gt; ) | ( ( &lt;COUNT&gt; | &lt;SUM&gt; | &lt;AVG&gt; | &lt;MIN&gt; | &lt;MAX&gt; ) &lt;LPAREN&gt; ( &lt;DISTINCT&gt; )? <link linkend="prod14">expression</link> &lt;RPAREN&gt; ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod48"/>from ::= </entry>
-<entry valign="top">&lt;FROM&gt; ( <link linkend="prod53">tableReference</link> ( &lt;COMMA&gt; <link linkend="prod53">tableReference</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod53"/>tableReference ::= </entry>
-<entry valign="top">( ( &lt;LBRACE&gt; &lt;OJ&gt; <link linkend="prod54">tableReferenceUnescaped</link> &lt;RBRACE&gt; ) | <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">( ( &lt;CROSS&gt; | &lt;UNION&gt; ) &lt;JOIN&gt; <link linkend="prod56">tablePrimary</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod58"/>qualifiedJoin ::= </entry>
-<entry valign="top">( ( ( &lt;RIGHT&gt; ( &lt;OUTER&gt; )? ) | ( &lt;LEFT&gt; ( &lt;OUTER&gt; )? ) | ( &lt;FULL&gt; ( &lt;OUTER&gt; )? ) | &lt;INNER&gt; )? &lt;JOIN&gt; <link linkend="prod53">tableReference</link> &lt;ON&gt; <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> | ( &lt;LPAREN&gt; <link linkend="prod55">joinedTable</link> &lt;RPAREN&gt; ) ) ( ( &lt;MAKEDEP&gt; ) | ( &lt;MAKENOTDEP&gt; ) )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod60"/>subqueryFromClause ::= </entry>
-<entry valign="top">&lt;LPAREN&gt; ( <link linkend="prod5">queryExpression</link> | <link linkend="prod6">storedProcedure</link> ) &lt;RPAREN&gt; ( &lt;AS&gt; )? &lt;VARIABLE&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod59"/>unaryFromClause ::= </entry>
-<entry valign="top">( &lt;VARIABLE&gt; ( ( &lt;AS&gt; )? &lt;VARIABLE&gt; )? )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod39"/>where ::= </entry>
-<entry valign="top">&lt;WHERE&gt; <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> ( &lt;OR&gt; <link linkend="prod62">compoundCritAnd</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod62"/>compoundCritAnd ::= </entry>
-<entry valign="top"><link linkend="prod63">notCrit</link> ( &lt;AND&gt; <link linkend="prod63">notCrit</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod63"/>notCrit ::= </entry>
-<entry valign="top">( &lt;NOT&gt; )? <link linkend="prod64">primary</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod64"/>primary ::= </entry>
-<entry valign="top">( <link linkend="prod65">predicate</link> | ( &lt;LPAREN&gt; <link linkend="prod26">criteria</link> &lt;RPAREN&gt; ) )</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> ( &lt;EQ&gt; | &lt;NE&gt; | &lt;NE2&gt; | &lt;LT&gt; | &lt;LE&gt; | &lt;GT&gt; | &lt;GE&gt; ) <link linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod73"/>subquery ::= </entry>
-<entry valign="top">&lt;LPAREN&gt; ( <link linkend="prod5">queryExpression</link> | <link linkend="prod6">storedProcedure</link> ) &lt;RPAREN&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod66"/>subqueryCompareCriteria ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link> ( &lt;EQ&gt; | &lt;NE&gt; | &lt;NE2&gt; | &lt;LT&gt; | &lt;LE&gt; | &lt;GT&gt; | &lt;GE&gt; ) ( &lt;ANY&gt; | &lt;SOME&gt; | &lt;ALL&gt; ) <link linkend="prod73">subquery</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod68"/>matchCrit ::= </entry>
-<entry valign="top">( <link linkend="prod14">expression</link> ( &lt;NOT&gt; )? &lt;LIKE&gt; <link linkend="prod14">expression</link> ( <link linkend="prod74">escapeChar</link> | ( &lt;LBRACE&gt; <link linkend="prod74">escapeChar</link> &lt;RBRACE&gt; ) )? )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod74"/>escapeChar ::= </entry>
-<entry valign="top">&lt;ESCAPE&gt; &lt;STRINGVAL&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod69"/>betweenCrit ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link> ( &lt;NOT&gt; )? &lt;BETWEEN&gt; <link linkend="prod14">expression</link> &lt;AND&gt; <link linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod72"/>isNullCrit ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link> &lt;IS&gt; ( &lt;NOT&gt; )? &lt;NULL&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod70"/>setCrit ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link> ( &lt;NOT&gt; )? &lt;IN&gt; ( ( <link linkend="prod73">subquery</link> ) | ( &lt;LPAREN&gt; <link linkend="prod14">expression</link> ( &lt;COMMA&gt; <link linkend="prod14">expression</link> )* &lt;RPAREN&gt; ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod71"/>existsCriteria ::= </entry>
-<entry valign="top">&lt;EXISTS&gt; <link linkend="prod73">subquery</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod49"/>groupBy ::= </entry>
-<entry valign="top">&lt;GROUP&gt; &lt;BY&gt; ( <link linkend="prod75">groupByItem</link> ( &lt;COMMA&gt; <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">&lt;HAVING&gt; <link linkend="prod26">criteria</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod42"/>orderby ::= </entry>
-<entry valign="top">&lt;ORDER&gt; &lt;BY&gt; ( &lt;VARIABLE&gt; | &lt;STRINGVAL&gt; | &lt;INTEGERVAL&gt; ) ( &lt;ASC&gt; | &lt;DESC&gt; )? ( &lt;COMMA&gt; ( &lt;VARIABLE&gt; | &lt;STRINGVAL&gt; | &lt;INTEGERVAL&gt; ) ( &lt;ASC&gt; | &lt;DESC&gt; )? )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod43"/>limit ::= </entry>
-<entry valign="top">&lt;LIMIT&gt; ( &lt;INTEGERVAL&gt; | &lt;QMARK&gt; ) ( &lt;COMMA&gt; ( &lt;INTEGERVAL&gt; | &lt;QMARK&gt; ) )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod35"/>option ::= </entry>
-<entry valign="top">&lt;OPTION&gt; ( &lt;SHOWPLAN&gt; | &lt;PLANONLY&gt; | &lt;DEBUG&gt; | &lt;MAKEDEP&gt; &lt;VARIABLE&gt; ( &lt;COMMA&gt; &lt;VARIABLE&gt; )* | &lt;MAKENOTDEP&gt; &lt;VARIABLE&gt; ( &lt;COMMA&gt; &lt;VARIABLE&gt; )* | &lt;NOCACHE&gt; ( &lt;VARIABLE&gt; ( &lt;COMMA&gt; &lt;VARIABLE&gt; )* )? )*</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> ( &lt;CONCAT_OP&gt; <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">( &lt;PLUS&gt; | &lt;MINUS&gt; )</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">( &lt;STAR&gt; | &lt;SLASH&gt; )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod80"/>basicExpression ::= </entry>
-<entry valign="top">( &lt;QMARK&gt; | <link linkend="prod82">literal</link> | ( &lt;LBRACE&gt; &lt;FN&gt; <link linkend="prod83">function</link> &lt;RBRACE&gt; ) | ( <link linkend="prod52">aggregateSymbol</link> ) | ( <link linkend="prod83">function</link> ) | ( &lt;VARIABLE&gt; ) | ( &lt;LPAREN&gt; <link linkend="prod14">expression</link> &lt;RPAREN&gt; ) | <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">&lt;CASE&gt; <link linkend="prod14">expression</link> ( &lt;WHEN&gt; <link linkend="prod14">expression</link> &lt;THEN&gt; <link linkend="prod14">expression</link> )+ ( &lt;ELSE&gt; <link linkend="prod14">expression</link> )? &lt;END&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod85"/>searchedCaseExpression ::= </entry>
-<entry valign="top">&lt;CASE&gt; ( &lt;WHEN&gt; <link linkend="prod26">criteria</link> &lt;THEN&gt; <link linkend="prod14">expression</link> )+ ( &lt;ELSE&gt; <link linkend="prod14">expression</link> )? &lt;END&gt;</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod83"/>function ::= </entry>
-<entry valign="top">( ( &lt;CONVERT&gt; &lt;LPAREN&gt; <link linkend="prod14">expression</link> &lt;COMMA&gt; <link linkend="prod29">dataType</link> &lt;RPAREN&gt; ) | ( &lt;CAST&gt; &lt;LPAREN&gt; <link linkend="prod14">expression</link> &lt;AS&gt; <link linkend="prod29">dataType</link> &lt;RPAREN&gt; ) | ( ( &lt;TIMESTAMPADD&gt; | &lt;TIMESTAMPDIFF&gt; ) &lt;LPAREN&gt; <link linkend="prod86">intervalType</link> &lt;COMMA&gt; <link linkend="prod14">expression</link> &lt;COMMA&gt; <link linkend="prod14">expression</link> &lt;RPAREN&gt; ) | ( ( &lt;LEFT&gt; | &lt;RIGHT&gt; | &lt;CHAR&gt; ) &lt;LPAREN&gt; ( <link linkend="prod14">expression</link> ( &lt;COMMA&gt; <link linkend="prod14">expression</link> )* )? &lt;RPAREN&gt; ) | ( ( &lt;INSERT&gt; ) &lt;LPAREN&gt; ( <link linkend="prod14">expression</link> ( &lt;COMMA&gt; <link linkend="prod14">expression</link> )* )? &lt;RPAREN&gt; ) | ( ( &lt;TRANSLATE&gt; ) &lt;LPAREN&gt; ( <link linkend="prod14">expression</link> ( &lt;COM!
 MA&gt; <link linkend="prod14">expression</link> )* )? &lt;RPAREN&gt; ) | ( &lt;VARIABLE&gt; &lt;LPAREN&gt; ( <link linkend="prod14">expression</link> ( &lt;COMMA&gt; <link linkend="prod14">expression</link> )* )? &lt;RPAREN&gt; ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod29"/>dataType ::= </entry>
-<entry valign="top">( &lt;STRING&gt; | &lt;BOOLEAN&gt; | &lt;BYTE&gt; | &lt;SHORT&gt; | &lt;CHAR&gt; | &lt;INTEGER&gt; | &lt;LONG&gt; | &lt;BIGINTEGER&gt; | &lt;FLOAT&gt; | &lt;DOUBLE&gt; | &lt;BIGDECIMAL&gt; | &lt;DATE&gt; | &lt;TIME&gt; | &lt;TIMESTAMP&gt; | &lt;OBJECT&gt; | &lt;BLOB&gt; | &lt;CLOB&gt; | &lt;XML&gt; )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod86"/>intervalType ::= </entry>
-<entry valign="top">( &lt;SQL_TSI_FRAC_SECOND&gt; | &lt;SQL_TSI_SECOND&gt; | &lt;SQL_TSI_MINUTE&gt; | &lt;SQL_TSI_HOUR&gt; | &lt;SQL_TSI_DAY&gt; | &lt;SQL_TSI_WEEK&gt; | &lt;SQL_TSI_MONTH&gt; | &lt;SQL_TSI_QUARTER&gt; | &lt;SQL_TSI_YEAR&gt; )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod82"/>literal ::= </entry>
-<entry valign="top">( &lt;STRINGVAL&gt; | &lt;INTEGERVAL&gt; | &lt;FLOATVAL&gt; | &lt;FALSE&gt; | &lt;TRUE&gt; | &lt;UNKNOWN&gt; | &lt;NULL&gt; | ( &lt;BOOLEANTYPE&gt; &lt;STRINGVAL&gt; &lt;RBRACE&gt; ) | ( &lt;TIMESTAMPTYPE&gt; &lt;STRINGVAL&gt; &lt;RBRACE&gt; ) | ( &lt;DATETYPE&gt; &lt;STRINGVAL&gt; &lt;RBRACE&gt; ) | ( &lt;TIMETYPE&gt; &lt;STRINGVAL&gt; &lt;RBRACE&gt; ) )</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>
+&lt;DEFAULT&gt; SKIP : {
+&quot; &quot;
+| &quot;\t&quot;
+| &quot;\n&quot;
+| &quot;\r&quot;
+}
+
+   </para></entry>
+          </row>
+          <!-- Token -->
+          <row>
+            <entry><para>
+&lt;DEFAULT&gt; MORE : {
+&quot;/*&quot; : IN_MULTI_LINE_COMMENT
+}
+
+   </para></entry>
+          </row>
+          <!-- Token -->
+          <row>
+            <entry><para>
+&lt;IN_MULTI_LINE_COMMENT&gt; SPECIAL : {
+&lt;MULTI_LINE_COMMENT: &quot;*/&quot;&gt; : DEFAULT
+}
+
+   </para></entry>
+          </row>
+          <!-- Token -->
+          <row>
+            <entry><para>
+&lt;IN_MULTI_LINE_COMMENT&gt; MORE : {
+&lt;~[]&gt;
+}
+
+   </para></entry>
+          </row>
+          <!-- Token -->
+          <row>
+            <entry><para>
+&lt;DEFAULT&gt; TOKEN : {
+&lt;STRING: &quot;string&quot;&gt;
+| &lt;BOOLEAN: &quot;boolean&quot;&gt;
+| &lt;BYTE: &quot;byte&quot;&gt;
+| &lt;SHORT: &quot;short&quot;&gt;
+| &lt;CHAR: &quot;char&quot;&gt;
+| &lt;INTEGER: &quot;integer&quot;&gt;
+| &lt;LONG: &quot;long&quot;&gt;
+| &lt;BIGINTEGER: &quot;biginteger&quot;&gt;
+| &lt;FLOAT: &quot;float&quot;&gt;
+| &lt;DOUBLE: &quot;double&quot;&gt;
+| &lt;BIGDECIMAL: &quot;bigdecimal&quot;&gt;
+| &lt;DATE: &quot;date&quot;&gt;
+| &lt;TIME: &quot;time&quot;&gt;
+| &lt;TIMESTAMP: &quot;timestamp&quot;&gt;
+| &lt;OBJECT: &quot;object&quot;&gt;
+| &lt;BLOB: &quot;blob&quot;&gt;
+| &lt;CLOB: &quot;clob&quot;&gt;
+| &lt;XML: &quot;xml&quot;&gt;
+}
+
+   </para></entry>
+          </row>
+          <!-- Token -->
+          <row>
+            <entry><para>
+&lt;DEFAULT&gt; TOKEN : {
+&lt;CAST: &quot;cast&quot;&gt;
+| &lt;CONVERT: &quot;convert&quot;&gt;
+| &lt;TIMESTAMPADD: &quot;timestampadd&quot;&gt;
+| &lt;TIMESTAMPDIFF: &quot;timestampdiff&quot;&gt;
+| &lt;COUNT: &quot;count&quot;&gt;
+| &lt;SUM: &quot;sum&quot;&gt;
+| &lt;AVG: &quot;avg&quot;&gt;
+| &lt;MIN: &quot;min&quot;&gt;
+| &lt;MAX: &quot;max&quot;&gt;
+}
+
+   </para></entry>
+          </row>
+          <!-- Token -->
+          <row>
+            <entry><para>
+&lt;DEFAULT&gt; TOKEN : {
+&lt;ALL: &quot;all&quot;&gt;
+| &lt;AND: &quot;and&quot;&gt;
+| &lt;ANY: &quot;any&quot;&gt;
+| &lt;AS: &quot;as&quot;&gt;
+| &lt;ASC: &quot;asc&quot;&gt;
+| &lt;BEGIN: &quot;begin&quot;&gt;
+| &lt;BETWEEN: &quot;between&quot;&gt;
+| &lt;BREAK: &quot;break&quot;&gt;
+| &lt;BY: &quot;by&quot;&gt;
+| &lt;CASE: &quot;case&quot;&gt;
+| &lt;CONTINUE: &quot;continue&quot;&gt;
+| &lt;CREATE: &quot;create&quot;&gt;
+| &lt;CRITERIA: &quot;criteria&quot;&gt;
+| &lt;CROSS: &quot;cross&quot;&gt;
+| &lt;DEBUG: &quot;debug&quot;&gt;
+| &lt;DECLARE: &quot;declare&quot;&gt;
+| &lt;DELETE: &quot;delete&quot;&gt;
+| &lt;DESC: &quot;desc&quot;&gt;
+| &lt;DISTINCT: &quot;distinct&quot;&gt;
+| &lt;DROP: &quot;drop&quot;&gt;
+| &lt;ELSE: &quot;else&quot;&gt;
+| &lt;END: &quot;end&quot;&gt;
+| &lt;ERROR: &quot;error&quot;&gt;
+| &lt;ESCAPE: &quot;escape&quot;&gt;
+| &lt;EXCEPT: &quot;except&quot;&gt;
+| &lt;EXEC: &quot;exec&quot;&gt;
+| &lt;EXECUTE: &quot;execute&quot;&gt;
+| &lt;EXISTS: &quot;exists&quot;&gt;
+| &lt;FALSE: &quot;false&quot;&gt;
+| &lt;FN: &quot;fn&quot;&gt;
+| &lt;FOR: &quot;for&quot;&gt;
+| &lt;FROM: &quot;from&quot;&gt;
+| &lt;FULL: &quot;full&quot;&gt;
+| &lt;GROUP: &quot;group&quot;&gt;
+| &lt;HAS: &quot;has&quot;&gt;
+| &lt;HAVING: &quot;having&quot;&gt;
+| &lt;IF: &quot;if&quot;&gt;
+| &lt;IN: &quot;in&quot;&gt;
+| &lt;INNER: &quot;inner&quot;&gt;
+| &lt;INSERT: &quot;insert&quot;&gt;
+| &lt;INTERSECT: &quot;intersect&quot;&gt;
+| &lt;INTO: &quot;into&quot;&gt;
+| &lt;IS: &quot;is&quot;&gt;
+| &lt;JOIN: &quot;join&quot;&gt;
+| &lt;LEFT: &quot;left&quot;&gt;
+| &lt;LIKE: &quot;like&quot;&gt;
+| &lt;LIMIT: &quot;limit&quot;&gt;
+| &lt;LOCAL: &quot;local&quot;&gt;
+| &lt;LOOP: &quot;loop&quot;&gt;
+| &lt;MAKEDEP: &quot;makedep&quot;&gt;
+| &lt;MAKENOTDEP: &quot;makenotdep&quot;&gt;
+| &lt;NOCACHE: &quot;nocache&quot;&gt;
+| &lt;NOT: &quot;not&quot;&gt;
+| &lt;NULL: &quot;null&quot;&gt;
+| &lt;ON: &quot;on&quot;&gt;
+| &lt;OJ: &quot;oj&quot;&gt;
+| &lt;OPTION: &quot;option&quot;&gt;
+| &lt;OR: &quot;or&quot;&gt;
+| &lt;ORDER: &quot;order&quot;&gt;
+| &lt;OUTER: &quot;outer&quot;&gt;
+| &lt;PLANONLY: &quot;planonly&quot;&gt;
+| &lt;PROCEDURE: &quot;procedure&quot;&gt;
+| &lt;RIGHT: &quot;right&quot;&gt;
+| &lt;SELECT: &quot;select&quot;&gt;
+| &lt;SET: &quot;set&quot;&gt;
+| &lt;SHOWPLAN: &quot;showplan&quot;&gt;
+| &lt;SOME: &quot;some&quot;&gt;
+| &lt;TABLE: &quot;table&quot;&gt;
+| &lt;TEMPORARY: &quot;temporary&quot;&gt;
+| &lt;THEN: &quot;then&quot;&gt;
+| &lt;TRANSLATE: &quot;translate&quot;&gt;
+| &lt;TRUE: &quot;true&quot;&gt;
+| &lt;UNION: &quot;union&quot;&gt;
+| &lt;UNKNOWN: &quot;unknown&quot;&gt;
+| &lt;UPDATE: &quot;update&quot;&gt;
+| &lt;USING: &quot;using&quot;&gt;
+| &lt;VALUES: &quot;values&quot;&gt;
+| &lt;VIRTUAL: &quot;virtual&quot;&gt;
+| &lt;WHEN: &quot;when&quot;&gt;
+| &lt;WHERE: &quot;where&quot;&gt;
+| &lt;WITH: &quot;with&quot;&gt;
+| &lt;WHILE: &quot;while&quot;&gt;
+}
+
+   </para></entry>
+          </row>
+          <!-- Token -->
+          <row>
+            <entry><para>
+&lt;DEFAULT&gt; TOKEN : {
+&lt;SQL_TSI_FRAC_SECOND: &quot;SQL_TSI_FRAC_SECOND&quot;&gt;
+| &lt;SQL_TSI_SECOND: &quot;SQL_TSI_SECOND&quot;&gt;
+| &lt;SQL_TSI_MINUTE: &quot;SQL_TSI_MINUTE&quot;&gt;
+| &lt;SQL_TSI_HOUR: &quot;SQL_TSI_HOUR&quot;&gt;
+| &lt;SQL_TSI_DAY: &quot;SQL_TSI_DAY&quot;&gt;
+| &lt;SQL_TSI_WEEK: &quot;SQL_TSI_WEEK&quot;&gt;
+| &lt;SQL_TSI_MONTH: &quot;SQL_TSI_MONTH&quot;&gt;
+| &lt;SQL_TSI_QUARTER: &quot;SQL_TSI_QUARTER&quot;&gt;
+| &lt;SQL_TSI_YEAR: &quot;SQL_TSI_YEAR&quot;&gt;
+}
+
+   </para></entry>
+          </row>
+          <!-- Token -->
+          <row>
+            <entry><para>
+&lt;DEFAULT&gt; TOKEN : {
+&lt;ALL_IN_GROUP: &lt;ID&gt; &lt;PERIOD&gt; &lt;STAR&gt;&gt;
+| &lt;ID: &lt;QUOTED_ID&gt; (&lt;PERIOD&gt; &lt;QUOTED_ID&gt;)*&gt;
+| &lt;#QUOTED_ID: &lt;ID_PART&gt; | &quot;\&quot;&quot; (&quot;\&quot;\&quot;&quot; | ~[&quot;\&quot;&quot;])+ &quot;\&quot;&quot;&gt;
+| &lt;#ID_PART: (&quot;@&quot; | &quot;#&quot; | &lt;LETTER&gt;) (&lt;LETTER&gt; | &quot;_&quot; | &lt;DIGIT&gt;)*&gt;
+| &lt;DATETYPE: &quot;{&quot; &quot;d&quot;&gt;
+| &lt;TIMETYPE: &quot;{&quot; &quot;t&quot;&gt;
+| &lt;TIMESTAMPTYPE: &quot;{&quot; &quot;ts&quot;&gt;
+| &lt;BOOLEANTYPE: &quot;{&quot; &quot;b&quot;&gt;
+| &lt;INTEGERVAL: (&lt;MINUS&gt;)? (&lt;DIGIT&gt;)+&gt;
+| &lt;FLOATVAL: (&lt;MINUS&gt;)? (&lt;DIGIT&gt;)* &lt;PERIOD&gt; (&lt;DIGIT&gt;)+ ([&quot;e&quot;,&quot;E&quot;] ([&quot;+&quot;,&quot;-&quot;])? (&lt;DIGIT&gt;)+)?&gt;
+| &lt;STRINGVAL: (&quot;N&quot;)? &quot;\&apos;&quot; (&quot;\&apos;\&apos;&quot; | ~[&quot;\&apos;&quot;])* &quot;\&apos;&quot;&gt;
+| &lt;#LETTER: [&quot;a&quot;-&quot;z&quot;,&quot;A&quot;-&quot;Z&quot;] | [&quot;\u0153&quot;-&quot;\ufffd&quot;]&gt;
+| &lt;#DIGIT: [&quot;0&quot;-&quot;9&quot;]&gt;
+}
+
+   </para></entry>
+          </row>
+          <!-- Token -->
+          <row>
+            <entry><para>
+&lt;DEFAULT&gt; TOKEN : {
+&lt;COMMA: &quot;,&quot;&gt;
+| &lt;PERIOD: &quot;.&quot;&gt;
+| &lt;LPAREN: &quot;(&quot;&gt;
+| &lt;RPAREN: &quot;)&quot;&gt;
+| &lt;LBRACE: &quot;{&quot;&gt;
+| &lt;RBRACE: &quot;}&quot;&gt;
+| &lt;EQ: &quot;=&quot;&gt;
+| &lt;NE: &quot;&lt;&gt;&quot;&gt;
+| &lt;NE2: &quot;!=&quot;&gt;
+| &lt;LT: &quot;&lt;&quot;&gt;
+| &lt;LE: &quot;&lt;=&quot;&gt;
+| &lt;GT: &quot;&gt;&quot;&gt;
+| &lt;GE: &quot;&gt;=&quot;&gt;
+| &lt;STAR: &quot;*&quot;&gt;
+| &lt;SLASH: &quot;/&quot;&gt;
+| &lt;PLUS: &quot;+&quot;&gt;
+| &lt;MINUS: &quot;-&quot;&gt;
+| &lt;QMARK: &quot;?&quot;&gt;
+| &lt;DOLLAR: &quot;$&quot;&gt;
+| &lt;SEMICOLON: &quot;;&quot;&gt;
+| &lt;CONCAT_OP: &quot;||&quot;&gt;
+}
+
+   </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>( &lt;STRINGVAL&gt; )</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>( &lt;ID&gt; )</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> ) ( &lt;SEMICOLON&gt; )? &lt;EOF&gt;</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>&lt;DROP&gt; &lt;TABLE&gt; <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>&lt;CREATE&gt; &lt;LOCAL&gt; &lt;TEMPORARY&gt; &lt;TABLE&gt; <link linkend="SQLParser.html-prod2">id</link> &lt;LPAREN&gt; <link linkend="SQLParser.html-prod14">createElementsWithTypes</link> &lt;RPAREN&gt;</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>&lt;ERROR&gt; <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> ) &lt;SEMICOLON&gt;</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> | ( &lt;BEGIN&gt; ( <link linkend="SQLParser.html-prod17">statement</link> )* &lt;END&gt; ) )</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>&lt;BREAK&gt;</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>&lt;CONTINUE&gt;</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>&lt;WHILE&gt; &lt;LPAREN&gt; <link linkend="SQLParser.html-prod28">criteria</link> &lt;RPAREN&gt; <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>&lt;LOOP&gt; &lt;ON&gt; &lt;LPAREN&gt; <link linkend="SQLParser.html-prod7">queryExpression</link> &lt;RPAREN&gt; &lt;AS&gt; <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>&lt;IF&gt; &lt;LPAREN&gt; <link linkend="SQLParser.html-prod28">criteria</link> &lt;RPAREN&gt; <link linkend="SQLParser.html-prod27">block</link> ( &lt;ELSE&gt; <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>( ( &lt;EQ&gt; | &lt;NE&gt; | &lt;NE2&gt; | &lt;LE&gt; | &lt;GE&gt; | &lt;LT&gt; | &lt;GT&gt; | &lt;IN&gt; | &lt;LIKE&gt; | ( &lt;IS&gt; &lt;NULL&gt; ) | &lt;BETWEEN&gt; ) )? &lt;CRITERIA&gt; ( &lt;ON&gt; &lt;LPAREN&gt; <link linkend="SQLParser.html-prod2">id</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod2">id</link> )* &lt;RPAREN&gt; )?</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>&lt;HAS&gt; <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>&lt;DECLARE&gt; <link linkend="SQLParser.html-prod31">dataType</link><link linkend="SQLParser.html-prod2">id</link> ( &lt;EQ&gt; <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> &lt;EQ&gt; <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>&lt;TRANSLATE&gt; <link linkend="SQLParser.html-prod29">criteriaSelector</link> ( &lt;WITH&gt; &lt;LPAREN&gt; <link linkend="SQLParser.html-prod2">id</link> &lt;EQ&gt; <link linkend="SQLParser.html-prod16">expression</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod2">id</link> &lt;EQ&gt; <link linkend="SQLParser.html-prod16">expression</link> )* &lt;RPAREN&gt; )?</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>&lt;CREATE&gt; ( &lt;VIRTUAL&gt; )? ( &lt;UPDATE&gt; )? &lt;PROCEDURE&gt; <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>( &lt;EXECUTE&gt; | &lt;EXEC&gt; ) &lt;STRING&gt; <link linkend="SQLParser.html-prod16">expression</link> ( &lt;AS&gt; <link linkend="SQLParser.html-prod14">createElementsWithTypes</link> ( &lt;INTO&gt; <link linkend="SQLParser.html-prod2">id</link> )? )? ( &lt;USING&gt; <link linkend="SQLParser.html-prod35">setClauseList</link> )? ( &lt;UPDATE&gt; ( ( &lt;INTEGERVAL&gt; ) | ( &lt;STAR&gt; ) ) )?</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> &lt;EQ&gt; ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod2">id</link> &lt;EQ&gt; )*</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> ( &lt;COMMA&gt; <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>&lt;LBRACE&gt; ( &lt;QMARK&gt; &lt;EQ&gt; )? &lt;ID&gt; <link linkend="SQLParser.html-prod2">id</link> ( &lt;LPAREN&gt; ( <link linkend="SQLParser.html-prod36">executeUnnamedParams</link> ) &lt;RPAREN&gt; )? &lt;RBRACE&gt; ( <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>( ( &lt;EXEC&gt; | &lt;EXECUTE&gt; ) <link linkend="SQLParser.html-prod2">id</link> &lt;LPAREN&gt; ( <link linkend="SQLParser.html-prod38">executeNamedParams</link> | <link linkend="SQLParser.html-prod36">executeUnnamedParams</link> ) &lt;RPAREN&gt; ) ( <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> ( &lt;COMMA&gt; <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> &lt;EQ&gt; <link linkend="SQLParser.html-prod16">expression</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod2">id</link> &lt;EQ&gt; <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>&lt;INSERT&gt; &lt;INTO&gt; <link linkend="SQLParser.html-prod2">id</link> ( &lt;LPAREN&gt; <link linkend="SQLParser.html-prod2">id</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod2">id</link> )* &lt;RPAREN&gt; )? ( ( &lt;VALUES&gt; <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>&lt;LPAREN&gt; <link linkend="SQLParser.html-prod16">expression</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod16">expression</link> )* &lt;RPAREN&gt;</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>&lt;UPDATE&gt; <link linkend="SQLParser.html-prod2">id</link> &lt;SET&gt; <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>&lt;DELETE&gt; &lt;FROM&gt; <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> ( ( &lt;UNION&gt; | &lt;EXCEPT&gt; ) ( &lt;ALL&gt; | &lt;DISTINCT&gt; )? <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> ( &lt;INTERSECT&gt; ( &lt;ALL&gt; | &lt;DISTINCT&gt; )? <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> | ( &lt;LPAREN&gt; <link linkend="SQLParser.html-prod41">queryExpressionBody</link> &lt;RPAREN&gt; ) )</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>&lt;INTO&gt; ( <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>&lt;SELECT&gt; ( &lt;ALL&gt; | ( &lt;DISTINCT&gt; ) )? ( &lt;STAR&gt; | ( <link linkend="SQLParser.html-prod52">selectSymbol</link> ( &lt;COMMA&gt; <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>( ( &lt;ALL_IN_GROUP&gt; ) | ( <link linkend="SQLParser.html-prod16">expression</link> ) ( ( &lt;AS&gt; )? ( <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>( ( &lt;COUNT&gt; &lt;LPAREN&gt; &lt;STAR&gt; &lt;RPAREN&gt; ) | ( ( &lt;COUNT&gt; | &lt;SUM&gt; | &lt;AVG&gt; | &lt;MIN&gt; | &lt;MAX&gt; ) &lt;LPAREN&gt; ( &lt;DISTINCT&gt; )? <link linkend="SQLParser.html-prod16">expression</link> &lt;RPAREN&gt; ) )</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>&lt;FROM&gt; ( <link linkend="SQLParser.html-prod54">tableReference</link> ( &lt;COMMA&gt; <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>( ( &lt;LBRACE&gt; &lt;OJ&gt; <link linkend="SQLParser.html-prod55">tableReferenceUnescaped</link> &lt;RBRACE&gt; ) | <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>( ( &lt;CROSS&gt; | &lt;UNION&gt; ) &lt;JOIN&gt; <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>( ( ( &lt;RIGHT&gt; ( &lt;OUTER&gt; )? ) | ( &lt;LEFT&gt; ( &lt;OUTER&gt; )? ) | ( &lt;FULL&gt; ( &lt;OUTER&gt; )? ) | &lt;INNER&gt; )? &lt;JOIN&gt; <link linkend="SQLParser.html-prod54">tableReference</link> &lt;ON&gt; <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> | ( &lt;LPAREN&gt; <link linkend="SQLParser.html-prod56">joinedTable</link> &lt;RPAREN&gt; ) ) ( ( &lt;MAKEDEP&gt; ) | ( &lt;MAKENOTDEP&gt; ) )?</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>&lt;LPAREN&gt; ( <link linkend="SQLParser.html-prod7">queryExpression</link> | <link linkend="SQLParser.html-prod8">storedProcedure</link> ) &lt;RPAREN&gt; ( &lt;AS&gt; )? <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>( &lt;ID&gt; ( ( &lt;AS&gt; )? <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>&lt;WHERE&gt; <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> ( &lt;OR&gt; <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> ( &lt;AND&gt; <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>( &lt;NOT&gt; )? <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> | ( &lt;LPAREN&gt; <link linkend="SQLParser.html-prod28">criteria</link> &lt;RPAREN&gt; ) )</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> ( &lt;EQ&gt; | &lt;NE&gt; | &lt;NE2&gt; | &lt;LT&gt; | &lt;LE&gt; | &lt;GT&gt; | &lt;GE&gt; ) <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>&lt;LPAREN&gt; ( <link linkend="SQLParser.html-prod7">queryExpression</link> | <link linkend="SQLParser.html-prod8">storedProcedure</link> ) &lt;RPAREN&gt;</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> ( &lt;EQ&gt; | &lt;NE&gt; | &lt;NE2&gt; | &lt;LT&gt; | &lt;LE&gt; | &lt;GT&gt; | &lt;GE&gt; ) ( &lt;ANY&gt; | &lt;SOME&gt; | &lt;ALL&gt; ) <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> ( &lt;NOT&gt; )? &lt;LIKE&gt; <link linkend="SQLParser.html-prod16">expression</link> ( <link linkend="SQLParser.html-prod75">escapeChar</link> | ( &lt;LBRACE&gt; <link linkend="SQLParser.html-prod75">escapeChar</link> &lt;RBRACE&gt; ) )? )</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>&lt;ESCAPE&gt; <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> ( &lt;NOT&gt; )? &lt;BETWEEN&gt; <link linkend="SQLParser.html-prod16">expression</link> &lt;AND&gt; <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> &lt;IS&gt; ( &lt;NOT&gt; )? &lt;NULL&gt;</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> ( &lt;NOT&gt; )? &lt;IN&gt; ( ( <link linkend="SQLParser.html-prod74">subquery</link> ) | ( &lt;LPAREN&gt; <link linkend="SQLParser.html-prod16">expression</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod16">expression</link> )* &lt;RPAREN&gt; ) )</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>&lt;EXISTS&gt; <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>&lt;GROUP&gt; &lt;BY&gt; ( <link linkend="SQLParser.html-prod76">groupByItem</link> ( &lt;COMMA&gt; <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>&lt;HAVING&gt; <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>&lt;ORDER&gt; &lt;BY&gt; <link linkend="SQLParser.html-prod77">sortKey</link> ( &lt;ASC&gt; | &lt;DESC&gt; )? ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod77">sortKey</link> ( &lt;ASC&gt; | &lt;DESC&gt; )? )*</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>&lt;LIMIT&gt; ( &lt;INTEGERVAL&gt; | &lt;QMARK&gt; ) ( &lt;COMMA&gt; ( &lt;INTEGERVAL&gt; | &lt;QMARK&gt; ) )?</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>&lt;OPTION&gt; ( &lt;SHOWPLAN&gt; | &lt;PLANONLY&gt; | &lt;DEBUG&gt; | &lt;MAKEDEP&gt; <link linkend="SQLParser.html-prod2">id</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod2">id</link> )* | &lt;MAKENOTDEP&gt; <link linkend="SQLParser.html-prod2">id</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod2">id</link> )* | &lt;NOCACHE&gt; ( <link linkend="SQLParser.html-prod2">id</link> ( &lt;COMMA&gt; <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> ( &lt;CONCAT_OP&gt; <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>( &lt;PLUS&gt; | &lt;MINUS&gt; )</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>( &lt;STAR&gt; | &lt;SLASH&gt; )</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>( &lt;QMARK&gt; | <link linkend="SQLParser.html-prod84">literal</link> | ( &lt;LBRACE&gt; &lt;FN&gt; <link linkend="SQLParser.html-prod85">function</link> &lt;RBRACE&gt; ) | ( <link linkend="SQLParser.html-prod53">aggregateSymbol</link> ) | ( <link linkend="SQLParser.html-prod85">function</link> ) | ( &lt;ID&gt; ) | ( &lt;LPAREN&gt; <link linkend="SQLParser.html-prod16">expression</link> &lt;RPAREN&gt; ) | <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>&lt;CASE&gt; <link linkend="SQLParser.html-prod16">expression</link> ( &lt;WHEN&gt; <link linkend="SQLParser.html-prod16">expression</link> &lt;THEN&gt; <link linkend="SQLParser.html-prod16">expression</link> )+ ( &lt;ELSE&gt; <link linkend="SQLParser.html-prod16">expression</link> )? &lt;END&gt;</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>&lt;CASE&gt; ( &lt;WHEN&gt; <link linkend="SQLParser.html-prod28">criteria</link> &lt;THEN&gt; <link linkend="SQLParser.html-prod16">expression</link> )+ ( &lt;ELSE&gt; <link linkend="SQLParser.html-prod16">expression</link> )? &lt;END&gt;</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>( ( &lt;CONVERT&gt; &lt;LPAREN&gt; <link linkend="SQLParser.html-prod16">expression</link> &lt;COMMA&gt; <link linkend="SQLParser.html-prod31">dataType</link> &lt;RPAREN&gt; ) | ( &lt;CAST&gt; &lt;LPAREN&gt; <link linkend="SQLParser.html-prod16">expression</link> &lt;AS&gt; <link linkend="SQLParser.html-prod31">dataType</link> &lt;RPAREN&gt; ) | ( ( &lt;TIMESTAMPADD&gt; | &lt;TIMESTAMPDIFF&gt; ) &lt;LPAREN&gt; <link linkend="SQLParser.html-prod88">intervalType</link> &lt;COMMA&gt; <link linkend="SQLParser.html-prod16">expression</link> &lt;COMMA&gt; <link linkend="SQLParser.html-prod16">expression</link> &lt;RPAREN&gt; ) | ( ( &lt;LEFT&gt; | &lt;RIGHT&gt; | &lt;CHAR&gt; ) &lt;LPAREN&gt; ( <link linkend="SQLParser.html-prod16">expression</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod16">expression</link> )* )? &lt;RPAREN&gt; ) | ( ( &lt;INSERT&gt; ) &lt;LPAREN&gt; ( <link linkend="SQLParser.html-prod16">expression!
 </link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod16">expression</link> )* )? &lt;RPAREN&gt; ) | ( ( &lt;TRANSLATE&gt; ) &lt;LPAREN&gt; ( <link linkend="SQLParser.html-prod16">expression</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod16">expression</link> )* )? &lt;RPAREN&gt; ) | ( <link linkend="SQLParser.html-prod2">id</link> &lt;LPAREN&gt; ( <link linkend="SQLParser.html-prod16">expression</link> ( &lt;COMMA&gt; <link linkend="SQLParser.html-prod16">expression</link> )* )? &lt;RPAREN&gt; ) )</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>( &lt;STRING&gt; | &lt;BOOLEAN&gt; | &lt;BYTE&gt; | &lt;SHORT&gt; | &lt;CHAR&gt; | &lt;INTEGER&gt; | &lt;LONG&gt; | &lt;BIGINTEGER&gt; | &lt;FLOAT&gt; | &lt;DOUBLE&gt; | &lt;BIGDECIMAL&gt; | &lt;DATE&gt; | &lt;TIME&gt; | &lt;TIMESTAMP&gt; | &lt;OBJECT&gt; | &lt;BLOB&gt; | &lt;CLOB&gt; | &lt;XML&gt; )</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>( &lt;SQL_TSI_FRAC_SECOND&gt; | &lt;SQL_TSI_SECOND&gt; | &lt;SQL_TSI_MINUTE&gt; | &lt;SQL_TSI_HOUR&gt; | &lt;SQL_TSI_DAY&gt; | &lt;SQL_TSI_WEEK&gt; | &lt;SQL_TSI_MONTH&gt; | &lt;SQL_TSI_QUARTER&gt; | &lt;SQL_TSI_YEAR&gt; )</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> | &lt;INTEGERVAL&gt; | &lt;FLOATVAL&gt; | &lt;FALSE&gt; | &lt;TRUE&gt; | &lt;UNKNOWN&gt; | &lt;NULL&gt; | ( ( &lt;BOOLEANTYPE&gt; | &lt;TIMESTAMPTYPE&gt; | &lt;DATETYPE&gt; | &lt;TIMETYPE&gt; ) <link linkend="SQLParser.html-prod1">stringVal</link> &lt;RBRACE&gt; ) )</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>



More information about the teiid-commits mailing list