Search in sources :

Example 1 with OracleAlterSynonymStatement

use of com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement in project druid by alibaba.

the class OracleStatementParser method parserAlter.

public SQLStatement parserAlter() {
    accept(Token.ALTER);
    if (lexer.token() == Token.SESSION) {
        lexer.nextToken();
        OracleAlterSessionStatement stmt = new OracleAlterSessionStatement();
        if (lexer.token() == Token.SET) {
            lexer.nextToken();
            parseAssignItems(stmt.getItems(), stmt);
        } else {
            throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal());
        }
        return stmt;
    } else if (lexer.token() == Token.PROCEDURE) {
        lexer.nextToken();
        OracleAlterProcedureStatement stmt = new OracleAlterProcedureStatement();
        stmt.setName(this.exprParser.name());
        if (identifierEquals("COMPILE")) {
            lexer.nextToken();
            stmt.setCompile(true);
        }
        if (identifierEquals("REUSE")) {
            lexer.nextToken();
            acceptIdentifier("SETTINGS");
            stmt.setReuseSettings(true);
        }
        return stmt;
    } else if (lexer.token() == Token.TABLE) {
        return parseAlterTable();
    } else if (lexer.token() == Token.INDEX) {
        lexer.nextToken();
        OracleAlterIndexStatement stmt = new OracleAlterIndexStatement();
        stmt.setName(this.exprParser.name());
        if (identifierEquals("RENAME")) {
            lexer.nextToken();
            accept(Token.TO);
            stmt.setRenameTo(this.exprParser.name());
        }
        for (; ; ) {
            if (identifierEquals("rebuild")) {
                lexer.nextToken();
                OracleAlterIndexStatement.Rebuild rebuild = new OracleAlterIndexStatement.Rebuild();
                stmt.setRebuild(rebuild);
                continue;
            } else if (identifierEquals("MONITORING")) {
                lexer.nextToken();
                acceptIdentifier("USAGE");
                stmt.setMonitoringUsage(Boolean.TRUE);
                continue;
            } else if (identifierEquals("PARALLEL")) {
                lexer.nextToken();
                stmt.setParallel(this.exprParser.expr());
            }
            break;
        }
        return stmt;
    } else if (lexer.token() == Token.TRIGGER) {
        lexer.nextToken();
        OracleAlterTriggerStatement stmt = new OracleAlterTriggerStatement();
        stmt.setName(this.exprParser.name());
        for (; ; ) {
            if (lexer.token() == Token.ENABLE) {
                lexer.nextToken();
                stmt.setEnable(Boolean.TRUE);
                continue;
            } else if (lexer.token() == Token.DISABLE) {
                lexer.nextToken();
                stmt.setEnable(Boolean.FALSE);
                continue;
            } else if (identifierEquals("COMPILE")) {
                lexer.nextToken();
                stmt.setCompile(true);
                continue;
            }
            break;
        }
        return stmt;
    } else if (identifierEquals("SYNONYM")) {
        lexer.nextToken();
        OracleAlterSynonymStatement stmt = new OracleAlterSynonymStatement();
        stmt.setName(this.exprParser.name());
        for (; ; ) {
            if (lexer.token() == Token.ENABLE) {
                lexer.nextToken();
                stmt.setEnable(Boolean.TRUE);
                continue;
            } else if (lexer.token() == Token.DISABLE) {
                lexer.nextToken();
                stmt.setEnable(Boolean.FALSE);
                continue;
            } else if (identifierEquals("COMPILE")) {
                lexer.nextToken();
                stmt.setCompile(true);
                continue;
            }
            break;
        }
        return stmt;
    } else if (lexer.token() == Token.VIEW) {
        lexer.nextToken();
        OracleAlterViewStatement stmt = new OracleAlterViewStatement();
        stmt.setName(this.exprParser.name());
        for (; ; ) {
            if (lexer.token() == Token.ENABLE) {
                lexer.nextToken();
                stmt.setEnable(Boolean.TRUE);
                continue;
            } else if (lexer.token() == Token.DISABLE) {
                lexer.nextToken();
                stmt.setEnable(Boolean.FALSE);
                continue;
            } else if (identifierEquals("COMPILE")) {
                lexer.nextToken();
                stmt.setCompile(true);
                continue;
            }
            break;
        }
        return stmt;
    } else if (lexer.token() == Token.TABLESPACE) {
        lexer.nextToken();
        OracleAlterTablespaceStatement stmt = new OracleAlterTablespaceStatement();
        stmt.setName(this.exprParser.name());
        if (identifierEquals("ADD")) {
            lexer.nextToken();
            if (identifierEquals("DATAFILE")) {
                lexer.nextToken();
                OracleAlterTablespaceAddDataFile item = new OracleAlterTablespaceAddDataFile();
                for (; ; ) {
                    OracleFileSpecification file = new OracleFileSpecification();
                    for (; ; ) {
                        SQLExpr fileName = this.exprParser.expr();
                        file.getFileNames().add(fileName);
                        if (lexer.token() == Token.COMMA) {
                            lexer.nextToken();
                            continue;
                        }
                        break;
                    }
                    if (identifierEquals("SIZE")) {
                        lexer.nextToken();
                        file.setSize(this.exprParser.expr());
                    }
                    if (identifierEquals("AUTOEXTEND")) {
                        lexer.nextToken();
                        if (identifierEquals("OFF")) {
                            lexer.nextToken();
                            file.setAutoExtendOff(true);
                        } else if (identifierEquals("ON")) {
                            lexer.nextToken();
                            file.setAutoExtendOn(this.exprParser.expr());
                        } else {
                            throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal());
                        }
                    }
                    item.getFiles().add(file);
                    if (lexer.token() == Token.COMMA) {
                        lexer.nextToken();
                        continue;
                    }
                    break;
                }
                stmt.setItem(item);
            } else {
                throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal());
            }
        } else {
            throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal());
        }
        return stmt;
    }
    throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal());
}
Also used : ParserException(com.alibaba.druid.sql.parser.ParserException) OracleAlterProcedureStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterProcedureStatement) OracleAlterTablespaceAddDataFile(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTablespaceAddDataFile) OracleAlterSessionStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSessionStatement) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr) OracleAlterSynonymStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement) OracleAlterIndexStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement) OracleAlterTriggerStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTriggerStatement) OracleAlterTablespaceStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTablespaceStatement) OracleAlterViewStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterViewStatement) OracleFileSpecification(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleFileSpecification)

Aggregations

SQLExpr (com.alibaba.druid.sql.ast.SQLExpr)1 OracleAlterIndexStatement (com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement)1 OracleAlterProcedureStatement (com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterProcedureStatement)1 OracleAlterSessionStatement (com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSessionStatement)1 OracleAlterSynonymStatement (com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement)1 OracleAlterTablespaceAddDataFile (com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTablespaceAddDataFile)1 OracleAlterTablespaceStatement (com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTablespaceStatement)1 OracleAlterTriggerStatement (com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTriggerStatement)1 OracleAlterViewStatement (com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterViewStatement)1 OracleFileSpecification (com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleFileSpecification)1 ParserException (com.alibaba.druid.sql.parser.ParserException)1