accept(Token.BY);
if (identifierEquals("RANGE")) {
lexer.nextToken();
accept(Token.LPAREN);
OraclePartitionByRangeClause clause = new OraclePartitionByRangeClause();
for (;;) {
SQLName column = this.exprParser.name();
clause.getColumns().add(column);
if (lexer.token() == Token.COMMA) {
lexer.nextToken();
continue;
}
break;
}
accept(Token.RPAREN);
if (identifierEquals("INTERVAL")) {
lexer.nextToken();
clause.setInterval(this.exprParser.expr());
}
if (lexer.token() == Token.STORE) {
lexer.nextToken();
accept(Token.IN);
accept(Token.LPAREN);
for (;;) {
SQLName tablespace = this.exprParser.name();
clause.getStoreIn().add(tablespace);
if (lexer.token() == Token.COMMA) {
lexer.nextToken();
continue;
}
break;
}
accept(Token.RPAREN);
}
accept(Token.LPAREN);
for (;;) {
acceptIdentifier("PARTITION");
OracleRangeValuesClause range = new OracleRangeValuesClause();
range.setName(this.exprParser.name());
accept(Token.VALUES);
acceptIdentifier("LESS");
acceptIdentifier("THAN");
accept(Token.LPAREN);
for (;;) {
SQLExpr rangeValue = this.exprParser.expr();
range.getValues().add(rangeValue);
if (lexer.token() == Token.COMMA) {
lexer.nextToken();
continue;
}
break;
}
accept(Token.RPAREN);
clause.getRanges().add(range);
if (lexer.token() == Token.COMMA) {
lexer.nextToken();
continue;
}