2121public class TableOption implements Serializable {
2222
2323 public enum Kind {
24- ENGINE , CHARACTER_SET , COLLATE , COMMENT , AUTO_INCREMENT , STATS_AUTO_RECALC , STATS_PERSISTENT , STATS_SAMPLE_PAGES , UNION , ENCRYPTION , PASSWORD , DATA_DIRECTORY , INDEX_DIRECTORY , SECONDARY_ENGINE , AUTOEXTEND_SIZE , INSERT_METHOD , PACK_KEYS , DELAY_KEY_WRITE , CHECKSUM , CONNECTION , COMPRESSION , STORAGE_PARAMETERS , WITHOUT_OIDS , ENGINE_ATTRIBUTE , SECONDARY_ENGINE_ATTRIBUTE , ROW_FORMAT , FOREIGN_SERVER , OTHER
24+ ENGINE , CHARACTER_SET , COLLATE , COMMENT , AUTO_INCREMENT , STATS_AUTO_RECALC , STATS_PERSISTENT , STATS_SAMPLE_PAGES , UNION , ENCRYPTION , PASSWORD , DATA_DIRECTORY , INDEX_DIRECTORY , SECONDARY_ENGINE , AUTOEXTEND_SIZE , INSERT_METHOD , PACK_KEYS , DELAY_KEY_WRITE , CHECKSUM , CONNECTION , COMPRESSION , STORAGE_PARAMETERS , WITHOUT_OIDS , ENGINE_ATTRIBUTE , SECONDARY_ENGINE_ATTRIBUTE , ROW_FORMAT , AVG_ROW_LENGTH , MAX_ROWS , MIN_ROWS , KEY_BLOCK_SIZE , TABLESPACE , FOREIGN_SERVER , OTHER
2525 }
2626
2727 private ForeignTableOptions foreignTableOptions ;
@@ -43,6 +43,19 @@ public static TableOption foreignServer(ForeignTableOptions options) {
4343 private List <String > tokens ;
4444 private List <Table > unionTables ;
4545 private List <Index .Option > storageParameters ;
46+ private ColumnOption .Storage tablespaceStorage ;
47+
48+ public ColumnOption .Storage getTablespaceStorage () {
49+ return tablespaceStorage ;
50+ }
51+
52+ public void setTablespaceStorage (ColumnOption .Storage storage ) {
53+ if (storage != null && storage != ColumnOption .Storage .DISK
54+ && storage != ColumnOption .Storage .MEMORY ) {
55+ throw new IllegalArgumentException ("TABLESPACE storage must be DISK or MEMORY" );
56+ }
57+ tablespaceStorage = storage ;
58+ }
4659
4760 public List <Index .Option > getStorageParameters () {
4861 return storageParameters ;
@@ -51,6 +64,7 @@ public List<Index.Option> getStorageParameters() {
5164 public void setStorageParameters (List <Index .Option > storageParameters ) {
5265 this .storageParameters = storageParameters ;
5366 foreignTableOptions = null ;
67+ tablespaceStorage = null ;
5468 kind = Kind .STORAGE_PARAMETERS ;
5569 name = "WITH" ;
5670 value = null ;
@@ -96,6 +110,9 @@ public Kind getKind() {
96110
97111 public void setKind (Kind kind ) {
98112 this .kind = kind ;
113+ if (kind != Kind .TABLESPACE ) {
114+ tablespaceStorage = null ;
115+ }
99116 if (kind != Kind .FOREIGN_SERVER ) {
100117 foreignTableOptions = null ;
101118 }
@@ -141,6 +158,7 @@ public List<Table> getUnionTables() {
141158 public void setUnionTables (List <Table > unionTables ) {
142159 this .unionTables = unionTables ;
143160 foreignTableOptions = null ;
161+ tablespaceStorage = null ;
144162 kind = Kind .UNION ;
145163 name = "UNION" ;
146164 value = null ;
@@ -177,12 +195,17 @@ public List<String> getTokens() {
177195 if (renderedValue != null ) {
178196 result .add (renderedValue );
179197 }
198+ if (kind == Kind .TABLESPACE && tablespaceStorage != null ) {
199+ result .add ("STORAGE" );
200+ result .add (tablespaceStorage .name ());
201+ }
180202 return Collections .unmodifiableList (result );
181203 }
182204
183205 public void setTokens (List <String > tokens ) {
184206 this .tokens = tokens ;
185207 if (tokens != null ) {
208+ tablespaceStorage = null ;
186209 foreignTableOptions = null ;
187210 unionTables = null ;
188211 storageParameters = null ;
@@ -218,6 +241,9 @@ public String toString() {
218241 return PlainSelect .getStringList (tokens , false , false );
219242 }
220243 String renderedValue = getValue ();
221- return name + (renderedValue != null ? (useEquals ? " = " : " " ) + renderedValue : "" );
244+ return name + (renderedValue != null ? (useEquals ? " = " : " " ) + renderedValue : "" )
245+ + (kind == Kind .TABLESPACE && tablespaceStorage != null
246+ ? " STORAGE " + tablespaceStorage
247+ : "" );
222248 }
223249}
0 commit comments