001package gudusoft.gsqlparser.nodes; 002 003public class TCreateTypeSqlNode extends TParseTreeNode{ 004 005 public enum ECreateTypeKind { 006 composite, // CREATE TYPE name AS (col type, ...) 007 enumType, // CREATE TYPE name AS ENUM ('val', ...) 008 rangeType, // CREATE TYPE name AS RANGE (subtype = ..., ...) 009 baseType, // CREATE TYPE name (INPUT = ..., OUTPUT = ..., ...) 010 shellType, // CREATE TYPE name (no body) 011 structType, // CREATE TYPE name AS STRUCT(col type, ...) 012 unionType, // CREATE TYPE name AS UNION(col type, ...) 013 aliasType // CREATE TYPE name AS typename 014 } 015 016 private TObjectName typeName; 017 private TColumnDefinitionList attributeList; 018 private ECreateTypeKind createTypeKind = ECreateTypeKind.composite; 019 private TTypeName targetTypeName; 020 021 public TObjectName getTypeName() { 022 return typeName; 023 } 024 025 public TColumnDefinitionList getAttributeList() { 026 return attributeList; 027 } 028 029 public ECreateTypeKind getCreateTypeKind() { 030 return createTypeKind; 031 } 032 033 public TTypeName getTargetTypeName() { 034 return targetTypeName; 035 } 036 037 public void init(Object arg1){ 038 this.typeName = (TObjectName)arg1; 039 } 040 041 public void init(Object arg1, Object arg2){ 042 this.typeName = (TObjectName)arg1; 043 this.attributeList = (TColumnDefinitionList)arg2; 044 } 045 046 public void init(Object arg1, Object arg2, Object arg3){ 047 this.typeName = (TObjectName)arg1; 048 this.createTypeKind = (ECreateTypeKind)arg2; 049 if (arg3 instanceof TColumnDefinitionList) { 050 this.attributeList = (TColumnDefinitionList)arg3; 051 } else if (arg3 instanceof TTypeName) { 052 this.targetTypeName = (TTypeName)arg3; 053 } 054 } 055}