001package gudusoft.gsqlparser.stmt.mssql; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.nodes.TExpressionList; 007import gudusoft.gsqlparser.nodes.TObjectName; 008import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 009import gudusoft.gsqlparser.nodes.TTypeName; 010import gudusoft.gsqlparser.nodes.mssql.TCreatePartitionFunctionSqlNode; 011import gudusoft.gsqlparser.EDbObjectType; 012 013 014public class TCreatePartitionFunctionStmt extends TCustomSqlStatement { 015 016 public enum PartitionRangeType { 017 LEFT, 018 RIGHT 019 } 020 021 private TObjectName functionName; 022 private TTypeName dataType; 023 private PartitionRangeType rangeType; 024 private TExpressionList boundaryValues; 025 026 public TCreatePartitionFunctionStmt (EDbVendor dbvendor){ 027 super(dbvendor); 028 sqlstatementtype = ESqlStatementType.sstmssqlCreatePartitionFunction ; 029 } 030 031 public TObjectName getFunctionName() { 032 return functionName; 033 } 034 035 public TTypeName getDataType() { 036 return dataType; 037 } 038 039 public PartitionRangeType getRangeType() { 040 return rangeType; 041 } 042 043 public TExpressionList getBoundaryValues() { 044 return boundaryValues; 045 } 046 047 public int doParseStatement(TCustomSqlStatement psql) { 048 if (rootNode == null) return -1; 049 super.doParseStatement(psql); 050 TCreatePartitionFunctionSqlNode createPartitionFunctionSqlNode = (TCreatePartitionFunctionSqlNode) rootNode; 051 functionName = createPartitionFunctionSqlNode.getFunctionName(); 052 functionName.setDbObjectType(EDbObjectType.function); 053 dataType = createPartitionFunctionSqlNode.getDataType(); 054 rangeType = createPartitionFunctionSqlNode.getRangeType(); 055 boundaryValues = createPartitionFunctionSqlNode.getBoundaryValues(); 056 057 return 0; 058 } 059 060 public void accept(TParseTreeVisitor v){ 061 v.preVisit(this); 062 v.postVisit(this); 063 } 064 065 public void acceptChildren(TParseTreeVisitor v){ 066 v.preVisit(this); 067 v.postVisit(this); 068 } 069}