001package gudusoft.gsqlparser.nodes.vertica; 002 003import gudusoft.gsqlparser.nodes.TBaseTablePartition; 004import gudusoft.gsqlparser.nodes.TConstant; 005import gudusoft.gsqlparser.nodes.TExpression; 006import gudusoft.gsqlparser.nodes.TGroupBy; 007import gudusoft.gsqlparser.ETablePartitionType; 008import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 009 010public class TVerticaPartition extends TBaseTablePartition { 011 012 private TExpression partitionExpression; // The main partition expression 013 private TGroupBy groupByExpression; // Optional GROUP BY expression 014 private TExpression activePartitionCount; // Optional ACTIVEPARTITIONCOUNT value 015 016 public TExpression getPartitionExpression() { 017 return partitionExpression; 018 } 019 020 public TGroupBy getGroupByExpression() { 021 return groupByExpression; 022 } 023 024 public TExpression getActivePartitionCount() { 025 return activePartitionCount; 026 } 027 028 public void init(Object arg1) { 029 this.tablePartitionType = ETablePartitionType.vertica; // Need to add this to ETablePartitionType enum 030 if (arg1 instanceof TExpression) { 031 this.partitionExpression = (TExpression) arg1; 032 } 033 } 034 035 public void init(Object arg1, Object arg2) { 036 init(arg1); 037 if (arg2 instanceof TGroupBy) { 038 this.groupByExpression = (TGroupBy) arg2; 039 } 040 } 041 042 public void init(Object arg1, Object arg2, Object arg3) { 043 init(arg1, arg2); 044 if (arg3 instanceof TExpression) { 045 this.activePartitionCount = (TExpression) arg3; 046 } 047 } 048 049 public void accept(TParseTreeVisitor v) { 050 v.preVisit(this); 051 if (partitionExpression != null) { 052 partitionExpression.accept(v); 053 } 054 if (groupByExpression != null) { 055 groupByExpression.accept(v); 056 } 057 v.postVisit(this); 058 } 059 060 public void acceptChildren(TParseTreeVisitor v) { 061 v.preVisit(this); 062 if (partitionExpression != null) { 063 partitionExpression.acceptChildren(v); 064 } 065 if (groupByExpression != null) { 066 groupByExpression.acceptChildren(v); 067 } 068 v.postVisit(this); 069 } 070}