001package gudusoft.gsqlparser.nodes; 002 003import gudusoft.gsqlparser.ETablePartitionType; 004 005/** 006 * Partition definition in syntax like: 007 * <pre> 008 * <code> 009 partition_definition: 010 PARTITION partition_name 011 [VALUES 012 {LESS THAN {(expr | value_list) | MAXVALUE} 013 | 014 IN (value_list)}] 015 * </code> 016 * </pre> 017 * ref: https://dev.mysql.com/doc/refman/8.3/en/create-table.html 018 * 019 * @see {@link TTablePartitionItem} 020 */ 021public class TPartitionDefinition extends TParseTreeNode{ 022 023 private ETablePartitionType tablePartitionType; 024 025 public ETablePartitionType getTablePartitionType() { 026 return tablePartitionType; 027 } 028 029 public TObjectName getPartitionName() { 030 return partitionName; 031 } 032 033 public TExpressionList getLessThanValueList() { 034 return lessThanValueList; 035 } 036 037 public TExpressionList getInValueList() { 038 return inValueList; 039 } 040 041 private TObjectName partitionName; 042 private TExpressionList lessThanValueList; 043 private TExpressionList inValueList; 044 045 public void accept(TParseTreeVisitor v){ 046 v.preVisit(this); 047 v.postVisit(this); 048 } 049 050 public void acceptChildren(TParseTreeVisitor v){ 051 v.preVisit(this); 052 v.postVisit(this); 053 } 054 055 public void init(Object arg1, Object arg2, Object arg3){ 056 this.tablePartitionType = (ETablePartitionType) arg1; 057 this.partitionName = (TObjectName)arg2; 058 switch (tablePartitionType){ 059 case range: 060 this.lessThanValueList = (TExpressionList) arg3; 061 break; 062 case list: 063 this.inValueList = (TExpressionList) arg3; 064 break; 065 } 066 } 067}