001package gudusoft.gsqlparser.stmt; 002 003 004import gudusoft.gsqlparser.*; 005import gudusoft.gsqlparser.nodes.*; 006 007public class TSetDatabaseObjectStmt extends TCustomSqlStatement { 008 private TObjectName databaseObjectName; 009 private EDbObjectType objectType = EDbObjectType.table; 010 011 public TSetDatabaseObjectStmt(EDbVendor dbvendor) { 012 super(dbvendor); 013 sqlstatementtype = ESqlStatementType.sstSetDatabaseObject; 014 } 015 016 public TObjectName getDatabaseObjectName() { 017 return databaseObjectName; 018 } 019 020 public EDbObjectType getObjectType() { 021 return objectType; 022 } 023 024 private TPTNodeList<TSetAssignment> assignments; 025 026 public TPTNodeList<TSetAssignment> getAssignments() { 027 return assignments; 028 } 029 030 public int doParseStatement(TCustomSqlStatement psql) { 031 if (rootNode == null) return -1; 032 super.doParseStatement(psql); 033 if (rootNode instanceof TDummy){ 034 databaseObjectName = (TObjectName)(((TDummy)rootNode).node1); 035 if (databaseObjectName != null){ 036 databaseObjectName.setDbObjectType(EDbObjectType.schema); 037 } 038 objectType = ((TDummy)rootNode).objectType; 039 }else if (rootNode instanceof TSetSqlNode){ 040 TSetSqlNode setSqlNode = (TSetSqlNode)rootNode; 041 assignments = setSqlNode.getAssignments(); 042 if (assignments != null){ 043 if (assignments.size() == 1){ 044 TSetAssignment setAssignment = assignments.getElement(0); 045 if (setAssignment.getParameterValue().getExpressionType() == EExpressionType.simple_comparison_t){ 046 //SET CURRENT SCHEMA = "ALGODB5 "; 047 TExpression left = setAssignment.getParameterValue().getLeftOperand(); 048 if (left.getExpressionType() == EExpressionType.simple_constant_t){ 049 TConstant constant = left.getConstantOperand(); 050 if (constant.getLiteralType() == ELiteralType.current_schema){ 051 objectType = EDbObjectType.schema; 052 databaseObjectName = setAssignment.getParameterValue().getRightOperand().getObjectOperand(); 053 if (databaseObjectName != null) { 054 databaseObjectName.setDbObjectType(EDbObjectType.schema); 055 } 056 } 057 } 058 059 } 060 } 061 } 062 063 } 064 return 0; 065 } 066 public void accept(TParseTreeVisitor v){ 067 v.preVisit(this); 068 v.postVisit(this); 069 } 070 public void acceptChildren(TParseTreeVisitor v){ 071 v.preVisit(this); 072 v.postVisit(this); 073 } 074 075}