use of com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.ReferenceModelClause in project druid by alibaba.
the class OracleOutputVisitor method visit.
@Override
public boolean visit(ModelClause x) {
print0(ucase ? "MODEL" : "model");
incrementIndent();
for (CellReferenceOption opt : x.getCellReferenceOptions()) {
print(' ');
print0(opt.name);
}
if (x.getReturnRowsClause() != null) {
print(' ');
x.getReturnRowsClause().accept(this);
}
for (ReferenceModelClause item : x.getReferenceModelClauses()) {
print(' ');
item.accept(this);
}
x.getMainModel().accept(this);
decrementIndent();
return false;
}
use of com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.ReferenceModelClause in project druid by alibaba.
the class OracleSelectParser method parseModelClause.
private void parseModelClause(OracleSelectQueryBlock queryBlock) {
if (lexer.token() != Token.MODEL) {
return;
}
lexer.nextToken();
ModelClause model = new ModelClause();
parseCellReferenceOptions(model.getCellReferenceOptions());
if (identifierEquals("RETURN")) {
lexer.nextToken();
ReturnRowsClause returnRowsClause = new ReturnRowsClause();
if (lexer.token() == Token.ALL) {
lexer.nextToken();
returnRowsClause.setAll(true);
} else {
acceptIdentifier("UPDATED");
}
acceptIdentifier("ROWS");
model.setReturnRowsClause(returnRowsClause);
}
while (identifierEquals("REFERENCE")) {
ReferenceModelClause referenceModelClause = new ReferenceModelClause();
lexer.nextToken();
SQLExpr name = expr();
referenceModelClause.setName(name);
accept(Token.ON);
accept(Token.LPAREN);
OracleSelect subQuery = this.select();
accept(Token.RPAREN);
referenceModelClause.setSubQuery(subQuery);
parseModelColumnClause(referenceModelClause);
parseCellReferenceOptions(referenceModelClause.getCellReferenceOptions());
model.getReferenceModelClauses().add(referenceModelClause);
}
parseMainModelClause(model);
queryBlock.setModelClause(model);
}
Aggregations