001package gudusoft.gsqlparser.stmt.snowflake;
002
003import gudusoft.gsqlparser.EDbObjectType;
004import gudusoft.gsqlparser.EDbVendor;
005import gudusoft.gsqlparser.ESqlStatementType;
006import gudusoft.gsqlparser.TCustomSqlStatement;
007import gudusoft.gsqlparser.nodes.TDummy;
008import gudusoft.gsqlparser.nodes.TObjectName;
009import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
010
011/**
012 * Snowflake use schema
013 */
014public class TUseSchema extends TCustomSqlStatement {
015
016    private TObjectName schemaName;
017
018    public TObjectName getSchemaName() {
019        return schemaName;
020    }
021
022    public TUseSchema(EDbVendor dbvendor) {
023        super(dbvendor);
024        sqlstatementtype = ESqlStatementType.sstUseSchema;
025    }
026
027    public int doParseStatement(TCustomSqlStatement psql) {
028        if (rootNode == null) return -1;
029        super.doParseStatement(psql);
030        TDummy dummySqlNode = (TDummy)rootNode;
031
032        super.doParseStatement(psql);
033        this.schemaName = (TObjectName)dummySqlNode.node1;
034        this.schemaName.setDbObjectType(EDbObjectType.schema);
035        if (getSqlEnv() != null) {
036            getSqlEnv().setDefaultSchemaName(this.schemaName.getSchemaString());
037            if (this.schemaName.getDatabaseString().length() > 0){
038                getSqlEnv().setDefaultCatalogName(this.schemaName.getDatabaseString());
039            }
040        }
041        return 0;
042    }
043
044    public void accept(TParseTreeVisitor v){
045        v.preVisit(this);
046        v.postVisit(this);
047    }
048
049    public void acceptChildren(TParseTreeVisitor v){
050        v.preVisit(this);
051        v.postVisit(this);
052    }
053
054}