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}