001package gudusoft.gsqlparser.stmt.redshift; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.nodes.*; 007import gudusoft.gsqlparser.stmt.*; 008 009 010public class TRedshiftPrepare extends TCustomSqlStatement { 011 012 private TTypeNameList datatypeList; 013 private TObjectName planName; 014 private TCustomSqlStatement statement; 015 016 public TRedshiftPrepare(EDbVendor dbvendor) { 017 super(dbvendor); 018 sqlstatementtype = ESqlStatementType.sstredshiftPrepare; 019 } 020 021 public int doParseStatement(TCustomSqlStatement psql) { 022 if (rootNode == null) return -1; 023 super.doParseStatement(psql); 024 TDummy dummy = (TDummy)rootNode; 025 026 planName = (TObjectName)dummy.node1; 027 if (dummy.node3 != null){ 028 datatypeList = (TTypeNameList)dummy.node3; 029 } 030 switch (dummy.node2.getNodeType()){ 031 case TStatementSqlNode.select: 032 statement = new TSelectSqlStatement(dbvendor); 033 break; 034 case TStatementSqlNode.delete: 035 statement = new TDeleteSqlStatement(dbvendor); 036 break; 037 case TStatementSqlNode.insert: 038 statement = new TInsertSqlStatement(dbvendor); 039 break; 040 case TStatementSqlNode.update: 041 statement = new TUpdateSqlStatement(dbvendor); 042 break; 043 default: 044 break; 045 } 046 statement.rootNode = dummy.node2; 047 statement.doParseStatement(this); 048 049 050 return 0; 051 } 052 053 public TTypeNameList getDatatypeList() { 054 return datatypeList; 055 } 056 057 public TObjectName getPlanName() { 058 return planName; 059 } 060 061 public TCustomSqlStatement getStatement() { 062 return statement; 063 } 064 065 public void accept(TParseTreeVisitor v){ 066 v.preVisit(this); 067 068 v.postVisit(this); 069 } 070 public void acceptChildren(TParseTreeVisitor v){ 071 v.preVisit(this); 072 statement.accept(v); 073 v.postVisit(this); 074 } 075 076 public void setDatatypeList(TTypeNameList datatypeList) { 077 this.datatypeList = datatypeList; 078 } 079 080 public void setPlanName(TObjectName planName) { 081 this.planName = planName; 082 } 083 084 public void setStatement(TCustomSqlStatement statement) { 085 this.statement = statement; 086 } 087}