[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>
-<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>
More information about the teiid-commits
mailing list