JBoss.orgCommunity Documentation
<DEFAULT> SKIP : {" "| "\t"| "\n"| "\r"} |
<DEFAULT> MORE : {"/*" : IN_MULTI_LINE_COMMENT} |
<IN_MULTI_LINE_COMMENT> SPECIAL : {<MULTI_LINE_COMMENT: "*/"> : DEFAULT} |
<IN_MULTI_LINE_COMMENT> MORE : {<~[]>} |
<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">} |
<DEFAULT> TOKEN : {<CAST: "cast">| <CONVERT: "convert">| <TIMESTAMPADD: "timestampadd">| <TIMESTAMPDIFF: "timestampdiff">| <COUNT: "count">| <SUM: "sum">| <AVG: "avg">| <MIN: "min">| <MAX: "max">} |
<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">} |
<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">} |
<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">| <TIMESTAMPTYPE: "{" "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: ":">} |
<DEFAULT> TOKEN : {<COMMA: ",">| <PERIOD: ".">| <LPAREN: "(">| <RPAREN: ")">| <LBRACE: "{">| <RBRACE: "}">| <EQ: "=">| <NE: "<>">| <NE2: "!=">| <LT: "<">| <LE: "<=">| <GT: ">">| <GE: ">=">| <STAR: "*">| <SLASH: "/">| <PLUS: "+">| <MINUS: "-">| <QMARK: "?">| <DOLLAR: "$">| <SEMICOLON: ";">| <CONCAT_OP: "||">} |
command ::= | ( ( createUpdateProcedure ) | userCommand | callableStatement ) ( <SEMICOLON> )? <EOF> |
userCommand ::= | ( queryExpression | storedProcedure | insert | update | delete | dropTable | createTempTable ) |
dropTable ::= | <DROP> <TABLE> <VARIABLE> |
createTempTable ::= | <CREATE> <LOCAL> <TEMPORARY> <TABLE> <VARIABLE> <LPAREN> createElementsWithTypes <RPAREN> |
errorStatement ::= | <ERROR> expression |
statement ::= | ( ifStatement | loopStatement | whileStatement | delimitedStatement ) |
delimitedStatement ::= | ( sqlStatement | errorStatement | assignStatement | declareStatement | continueStatement | breakStatement ) <SEMICOLON> |
block ::= | ( statement | ( <BEGIN> ( statement )* <END> ) ) |
breakStatement ::= | <BREAK> |
continueStatement ::= | <CONTINUE> |
whileStatement ::= | <WHILE> <LPAREN> criteria <RPAREN> block |
loopStatement ::= | <LOOP> <ON> <LPAREN> queryExpression <RPAREN> <AS> <VARIABLE> block |
ifStatement ::= | <IF> <LPAREN> criteria <RPAREN> block ( <ELSE> block )? |
criteriaSelector ::= | ( ( <EQ> | <NE> | <NE2> | <LE> | <GE> | <LT> | <GT> | <IN> | <LIKE> | ( <IS> <NULL> ) | <BETWEEN> ) )? <CRITERIA> ( <ON> <LPAREN> <VARIABLE> ( <COMMA> <VARIABLE> )* <RPAREN> )? |
hasCriteria ::= | <HAS> criteriaSelector |
declareStatement ::= | <DECLARE> dataType <VARIABLE> ( <EQ> assignStatementOperand )? |
assignStatement ::= | <VARIABLE> <EQ> assignStatementOperand |
assignStatementOperand ::= | ( ( insert ) | update | delete | storedProcedure | ( expression ) | queryExpression ) |
sqlStatement ::= | ( ( dynamicCommand ) | userCommand ) |
translateCriteria ::= | <TRANSLATE> criteriaSelector ( <WITH> <LPAREN> <VARIABLE> <EQ> expression ( <COMMA> <VARIABLE> <EQ> expression )* <RPAREN> )? |
createUpdateProcedure ::= | <CREATE> ( <VIRTUAL> )? ( <UPDATE> )? <PROCEDURE> block |
dynamicCommand ::= | ( <EXECUTE> | <EXEC> ) <STRING> expression ( <AS> createElementsWithTypes ( <INTO> <VARIABLE> )? )? ( <USING> setClauseList )? ( <UPDATE> ( ( <INTEGERVAL> ) | ( <STAR> ) ) )? |
setClauseList ::= | <VARIABLE> <EQ> ( <COMMA> <VARIABLE> <EQ> )* |
createElementsWithTypes ::= | <VARIABLE> dataType ( <COMMA> <VARIABLE> dataType )* |
callableStatement ::= | <LBRACE> ( <QMARK> <EQ> )? <VARIABLE> <VARIABLE> ( <LPAREN> ( executeUnnamedParams ) <RPAREN> )? <RBRACE> ( option )? |
storedProcedure ::= | ( ( <EXEC> | <EXECUTE> ) <VARIABLE> <LPAREN> ( executeNamedParams | executeUnnamedParams ) <RPAREN> ) ( option )? |
executeUnnamedParams ::= | ( expression ( <COMMA> expression )* )? |
executeNamedParams ::= | ( paramName <EQ> expression ( <COMMA> paramName <EQ> expression )* ) |
paramName ::= | <VARIABLE> |
insert ::= | <INSERT> <INTO> <VARIABLE> ( <LPAREN> <VARIABLE> ( <COMMA> <VARIABLE> )* <RPAREN> )? ( ( <VALUES> rowValues ) | ( queryExpression ) ) ( option )? |
rowValues ::= | <LPAREN> expression ( <COMMA> expression )* <RPAREN> |
update ::= | <UPDATE> <VARIABLE> <SET> setClauseList ( where )? ( option )? |
delete ::= | <DELETE> <FROM> <VARIABLE> ( where )? ( option )? |
queryExpression ::= | queryExpressionBody |
queryExpressionBody ::= | queryTerm ( ( <UNION> | <EXCEPT> ) ( <ALL> | <DISTINCT> )? queryTerm )* ( orderby )? ( limit )? ( option )? |
queryTerm ::= | queryPrimary ( <INTERSECT> ( <ALL> | <DISTINCT> )? queryPrimary )* |
queryPrimary ::= | ( query | ( <LPAREN> queryExpressionBody <RPAREN> ) ) |
query ::= | select ( into )? ( from ( where )? ( groupBy )? ( having )? )? |
into ::= | <INTO> ( <VARIABLE> ) |
select ::= | <SELECT> ( <ALL> | ( <DISTINCT> ) )? ( <STAR> | ( selectSymbol ( <COMMA> selectSymbol )* ) ) |
selectSymbol ::= | ( ( <ALL_IN_GROUP> ) | ( expression ) ( ( <AS> )? ( <VARIABLE> | <STRINGVAL> ) )? ) |
aggregateSymbol ::= | ( ( <COUNT> <LPAREN> <STAR> <RPAREN> ) | ( ( <COUNT> | <SUM> | <AVG> | <MIN> | <MAX> ) <LPAREN> ( <DISTINCT> )? expression <RPAREN> ) ) |
from ::= | <FROM> ( tableReference ( <COMMA> tableReference )* ) |
tableReference ::= | ( ( <LBRACE> <OJ> tableReferenceUnescaped <RBRACE> ) | tableReferenceUnescaped ) |
tableReferenceUnescaped ::= | ( joinedTable | tablePrimary ) |
joinedTable ::= | tablePrimary ( ( crossJoin | qualifiedJoin ) )+ |
crossJoin ::= | ( ( <CROSS> | <UNION> ) <JOIN> tablePrimary ) |
qualifiedJoin ::= | ( ( ( <RIGHT> ( <OUTER> )? ) | ( <LEFT> ( <OUTER> )? ) | ( <FULL> ( <OUTER> )? ) | <INNER> )? <JOIN> tableReference <ON> criteria ) |
tablePrimary ::= | ( unaryFromClause | subqueryFromClause | ( <LPAREN> joinedTable <RPAREN> ) ) ( ( <MAKEDEP> ) | ( <MAKENOTDEP> ) )? |
subqueryFromClause ::= | <LPAREN> ( queryExpression | storedProcedure ) <RPAREN> ( <AS> )? <VARIABLE> |
unaryFromClause ::= | ( <VARIABLE> ( ( <AS> )? <VARIABLE> )? ) |
where ::= | <WHERE> criteria |
criteria ::= | compoundCritOr |
compoundCritOr ::= | compoundCritAnd ( <OR> compoundCritAnd )* |
compoundCritAnd ::= | notCrit ( <AND> notCrit )* |
notCrit ::= | ( <NOT> )? primary |
primary ::= | ( predicate | ( <LPAREN> criteria <RPAREN> ) ) |
predicate ::= | ( subqueryCompareCriteria | compareCrit | matchCrit | betweenCrit | setCrit | existsCriteria | hasCriteria | translateCriteria | isNullCrit ) |
compareCrit ::= | expression ( <EQ> | <NE> | <NE2> | <LT> | <LE> | <GT> | <GE> ) expression |
subquery ::= | <LPAREN> ( queryExpression | storedProcedure ) <RPAREN> |
subqueryCompareCriteria ::= | expression ( <EQ> | <NE> | <NE2> | <LT> | <LE> | <GT> | <GE> ) ( <ANY> | <SOME> | <ALL> ) subquery |
matchCrit ::= | ( expression ( <NOT> )? <LIKE> expression ( escapeChar | ( <LBRACE> escapeChar <RBRACE> ) )? ) |
escapeChar ::= | <ESCAPE> <STRINGVAL> |
betweenCrit ::= | expression ( <NOT> )? <BETWEEN> expression <AND> expression |
isNullCrit ::= | expression <IS> ( <NOT> )? <NULL> |
setCrit ::= | expression ( <NOT> )? <IN> ( ( subquery ) | ( <LPAREN> expression ( <COMMA> expression )* <RPAREN> ) ) |
existsCriteria ::= | <EXISTS> subquery |
groupBy ::= | <GROUP> <BY> ( groupByItem ( <COMMA> groupByItem )* ) |
groupByItem ::= | expression |
having ::= | <HAVING> criteria |
orderby ::= | <ORDER> <BY> ( <VARIABLE> | <STRINGVAL> | <INTEGERVAL> ) ( <ASC> | <DESC> )? ( <COMMA> ( <VARIABLE> | <STRINGVAL> | <INTEGERVAL> ) ( <ASC> | <DESC> )? )* |
limit ::= | <LIMIT> ( <INTEGERVAL> | <QMARK> ) ( <COMMA> ( <INTEGERVAL> | <QMARK> ) )? |
option ::= | <OPTION> ( <SHOWPLAN> | <PLANONLY> | <DEBUG> | <MAKEDEP> <VARIABLE> ( <COMMA> <VARIABLE> )* | <MAKENOTDEP> <VARIABLE> ( <COMMA> <VARIABLE> )* | <NOCACHE> ( <VARIABLE> ( <COMMA> <VARIABLE> )* )? )* |
expression ::= | concatExpression |
concatExpression ::= | ( plusExpression ( <CONCAT_OP> plusExpression )* ) |
plusExpression ::= | ( timesExpression ( plusOperator timesExpression )* ) |
plusOperator ::= | ( <PLUS> | <MINUS> ) |
timesExpression ::= | ( basicExpression ( timesOperator basicExpression )* ) |
timesOperator ::= | ( <STAR> | <SLASH> ) |
basicExpression ::= | ( <QMARK> | literal | ( <LBRACE> <FN> function <RBRACE> ) | ( aggregateSymbol ) | ( function ) | ( <VARIABLE> ) | ( <LPAREN> expression <RPAREN> ) | subquery | caseExpression | searchedCaseExpression ) |
caseExpression ::= | <CASE> expression ( <WHEN> expression <THEN> expression )+ ( <ELSE> expression )? <END> |
searchedCaseExpression ::= | <CASE> ( <WHEN> criteria <THEN> expression )+ ( <ELSE> expression )? <END> |
function ::= | ( ( <CONVERT> <LPAREN> expression <COMMA> dataType <RPAREN> ) | ( <CAST> <LPAREN> expression <AS> dataType <RPAREN> ) | ( ( <TIMESTAMPADD> | <TIMESTAMPDIFF> ) <LPAREN> intervalType <COMMA> expression <COMMA> expression <RPAREN> ) | ( ( <LEFT> | <RIGHT> | <CHAR> ) <LPAREN> ( expression ( <COMMA> expression )* )? <RPAREN> ) | ( ( <INSERT> ) <LPAREN> ( expression ( <COMMA> expression )* )? <RPAREN> ) | ( ( <TRANSLATE> ) <LPAREN> ( expression ( <COMMA> expression )* )? <RPAREN> ) | ( <VARIABLE> <LPAREN> ( expression ( <COMMA> expression )* )? <RPAREN> ) ) |
dataType ::= | ( <STRING> | <BOOLEAN> | <BYTE> | <SHORT> | <CHAR> | <INTEGER> | <LONG> | <BIGINTEGER> | <FLOAT> | <DOUBLE> | <BIGDECIMAL> | <DATE> | <TIME> | <TIMESTAMP> | <OBJECT> | <BLOB> | <CLOB> | <XML> ) |
intervalType ::= | ( <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> ) |
literal ::= | ( <STRINGVAL> | <INTEGERVAL> | <FLOATVAL> | <FALSE> | <TRUE> | <NULL> | ( <BOOLEANTYPE> <STRINGVAL> <RBRACE> ) | ( <TIMESTAMPTYPE> <STRINGVAL> <RBRACE> ) | ( <DATETYPE> <STRINGVAL> <RBRACE> ) | ( <TIMETYPE> <STRINGVAL> <RBRACE> ) ) |