001/*
002 * ModeShape (http://www.modeshape.org)
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *       http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.modeshape.sequencer.ddl.dialect.oracle;
017
018import java.util.Arrays;
019import java.util.List;
020import org.modeshape.sequencer.ddl.DdlConstants;
021import org.modeshape.sequencer.ddl.StandardDdlLexicon;
022
023/**
024 * Oracle-specific constants including key words and statement start phrases.
025 * 
026 * @author blafond
027 */
028public interface OracleDdlConstants extends DdlConstants {
029
030    public static final String[] CUSTOM_KEYWORDS = {"ANALYZE", "ASSOCIATE", "TRUNCATE", "MATERIALIZED", "SAVEPOINT", "PURGE",
031        "LOCK", "TRIGGER", "EXPLAIN", "PLAN", "DIMENSION", "DIRECTORY", "DATABASE", "CONTROLFILE", "DISKGROUP", "INDEXTYPE",
032        "SYNONYM", "SEQUENCE", "LIBRARY", "CLUSTER", "OUTLINE", "PACKAGE", "SPFILE", "PFILE", "AUDIT", "COMMIT", "PURGE",
033        "MERGE", "RENAME", "FLASHBACK", "NOAUDIT", "DISASSOCIATE", "NESTED", "REVOKE", "COMMENT", INDEX, "VARCHAR2", "NVARCHAR2",
034        "NUMBER", "BINARY_FLOAT", "BINARY_DOUBLE", "LONG", "RAW", "BLOB", "CLOB", "NCLOB", "BFILE", "INTERVAL", "UNUSABLE"};
035
036    public static final String[] INLINE_COLUMN_PROPERTY_START = {"CONSTRAINT", "NOT", "NULL", "UNIQUE", "PRIMARY", "CHECK", 
037        "DEFAULT", "REFERENCES"};
038    
039    interface OracleStatementStartPhrases {
040        static final String[] STMT_ALTER_CLUSTER = {ALTER, "CLUSTER"};
041        static final String[] STMT_ALTER_DATABASE = {ALTER, "DATABASE"};
042        static final String[] STMT_ALTER_DIMENSION = {ALTER, "DIMENSION"};
043        static final String[] STMT_ALTER_DISKGROUP = {ALTER, "DISKGROUP"};
044        static final String[] STMT_ALTER_FUNCTION = {ALTER, "FUNCTION"};
045        static final String[] STMT_ALTER_INDEX = {ALTER, INDEX};
046        static final String[] STMT_ALTER_INDEXTYPE = {ALTER, "INDEXTYPE"};
047        static final String[] STMT_ALTER_JAVA = {ALTER, "JAVA"};
048        static final String[] STMT_ALTER_MATERIALIZED = {ALTER, "MATERIALIZED"};
049        static final String[] STMT_ALTER_OPERATOR = {ALTER, "OPERATOR"};
050        static final String[] STMT_ALTER_OUTLINE = {ALTER, "OUTLINE"};
051        static final String[] STMT_ALTER_PACKAGE = {ALTER, "PACKAGE"};
052        static final String[] STMT_ALTER_PROCEDURE = {ALTER, "PROCEDURE"};
053        static final String[] STMT_ALTER_PROFILE = {ALTER, "PROFILE"};
054        static final String[] STMT_ALTER_RESOURCE = {ALTER, "RESOURCE"};
055        static final String[] STMT_ALTER_ROLE = {ALTER, "ROLE"};
056        static final String[] STMT_ALTER_ROLLBACK = {ALTER, "ROLLBACK"};
057        static final String[] STMT_ALTER_SEQUENCE = {ALTER, "SEQUENCE"};
058        static final String[] STMT_ALTER_SESSION = {ALTER, "SESSION"};
059        static final String[] STMT_ALTER_SYSTEM = {ALTER, "SYSTEM"};
060        static final String[] STMT_ALTER_TABLESPACE = {ALTER, "TABLESPACE"};
061        static final String[] STMT_ALTER_TRIGGER = {ALTER, "TRIGGER"};
062        static final String[] STMT_ALTER_TYPE = {ALTER, "TYPE"};
063        static final String[] STMT_ALTER_USER = {ALTER, "USER"};
064        static final String[] STMT_ALTER_VIEW = {ALTER, "VIEW"};
065
066        static final String[][] ALTER_PHRASES = {STMT_ALTER_CLUSTER, STMT_ALTER_DATABASE, STMT_ALTER_DIMENSION,
067            STMT_ALTER_DISKGROUP, STMT_ALTER_FUNCTION, STMT_ALTER_INDEX, STMT_ALTER_INDEXTYPE, STMT_ALTER_JAVA,
068            STMT_ALTER_MATERIALIZED, STMT_ALTER_OPERATOR, STMT_ALTER_OUTLINE, STMT_ALTER_PACKAGE, STMT_ALTER_PROCEDURE,
069            STMT_ALTER_PROFILE, STMT_ALTER_RESOURCE, STMT_ALTER_ROLE, STMT_ALTER_ROLLBACK, STMT_ALTER_SEQUENCE,
070            STMT_ALTER_SESSION, STMT_ALTER_SYSTEM, STMT_ALTER_TABLESPACE, STMT_ALTER_TRIGGER, STMT_ALTER_TYPE, STMT_ALTER_USER,
071            STMT_ALTER_VIEW};
072
073        static final String[] STMT_ANALYZE = {"ANALYZE"};
074        static final String[] STMT_ASSOCIATE_STATISTICS = {"ASSOCIATE", "STATISTICS"};
075        static final String[] STMT_AUDIT = {"AUDIT"};
076
077        /*
078                COMMIT [ WORK ] [ [ COMMENT string ]
079                    | [ WRITE [ IMMEDIATE | BATCH ] [ WAIT | NOWAIT ] ]
080                    | FORCE string [, integer ] ] ;
081                
082                COMMIT WORK COMMENT "some comment"
083                
084                COMMIT COMMENT "some comment"
085                
086                COMMIT WORK WRITE [ IMMEDIATE | BATCH ] [ WAIT | NOWAIT ]
087                
088                COMMIT WRITE IMMEDIATE NOWAIT;
089                
090                COMMIT WORK WRITE IMMEDIATE NOWAIT;
091                
092                COMMIT FORCE "some string", 10;
093         */
094        static final String[] STMT_COMMIT_WORK = {"COMMIT", "WORK"};
095        static final String[] STMT_COMMIT_WRITE = {"COMMIT", "WRITE"};
096        static final String[] STMT_COMMIT_FORCE = {"COMMIT", "FORCE"};
097        static final String[] STMT_COMMIT = {"COMMIT"}; // DON"T REGISTER THIS STMT
098        static final String[] STMT_COMMENT_ON = {"COMMENT", "ON"};
099
100        static final String[] STMT_CREATE_CLUSTER = {CREATE, "CLUSTER"};
101        static final String[] STMT_CREATE_CONTEXT = {CREATE, "CONTEXT"};
102        static final String[] STMT_CREATE_CONTROLFILE = {CREATE, "CONTROLFILE"};
103        static final String[] STMT_CREATE_DATABASE = {CREATE, "DATABASE"};
104        static final String[] STMT_CREATE_DIMENSION = {CREATE, "DIMENSION"};
105        static final String[] STMT_CREATE_DIRECTORY = {CREATE, "DIRECTORY"};
106        static final String[] STMT_CREATE_DISKGROUP = {CREATE, "DISKGROUP"};
107        static final String[] STMT_CREATE_FUNCTION = {CREATE, "FUNCTION"}; // PARSE UNTIL '/'
108        static final String[] STMT_CREATE_INDEX = {CREATE, "INDEX"};
109        static final String[] STMT_CREATE_INDEXTYPE = {CREATE, "INDEXTYPE"};
110        static final String[] STMT_CREATE_JAVA = {CREATE, "JAVA"};
111        static final String[] STMT_CREATE_LIBRARY = {CREATE, "LIBRARY"}; // PARSE UNTIL '/'
112        static final String[] STMT_CREATE_MATERIALIZED_VIEW = {CREATE, "MATERIALIZED", "VIEW"};
113        static final String[] STMT_CREATE_MATERIALIZED_VEIW_LOG = {CREATE, "MATERIALIZED", "VIEW", "LOG"};
114        static final String[] STMT_CREATE_OPERATOR = {CREATE, "OPERATOR"};
115        static final String[] STMT_CREATE_OR_REPLACE_DIRECTORY = {CREATE, "OR", "REPLACE", "DIRECTORY"}; // PARSE UNTIL '/'
116        static final String[] STMT_CREATE_OR_REPLACE_FUNCTION = {CREATE, "OR", "REPLACE", "FUNCTION"}; // PARSE UNTIL '/'
117        static final String[] STMT_CREATE_OR_REPLACE_LIBRARY = {CREATE, "OR", "REPLACE", "LIBRARY"}; // PARSE UNTIL '/'
118        static final String[] STMT_CREATE_OR_REPLACE_OUTLINE = {CREATE, "OR", "REPLACE", "OUTLINE"};
119        static final String[] STMT_CREATE_OR_REPLACE_PUBLIC_OUTLINE = {CREATE, "OR", "REPLACE", "PUBLIC", "OUTLINE"}; // TODO: BML
120        static final String[] STMT_CREATE_OR_REPLACE_PRIVATE_OUTLINE = {CREATE, "OR", "REPLACE", "PRIVATE", "OUTLINE"}; // TODO:
121                                                                                                                        // BML
122        static final String[] STMT_CREATE_OR_REPLACE_PACKAGE = {CREATE, "OR", "REPLACE", "PACKAGE"};
123        static final String[] STMT_CREATE_OR_REPLACE_PROCEDURE = {CREATE, "OR", "REPLACE", "PROCEDURE"}; // PARSE UNTIL '/'
124        static final String[] STMT_CREATE_OR_REPLACE_PUBLIC_SYNONYM = {CREATE, "OR", "REPLACE", "PUBLIC", "SYNONYM"};
125        static final String[] STMT_CREATE_OR_REPLACE_SYNONYM = {CREATE, "OR", "REPLACE", "SYNONYM"};
126        static final String[] STMT_CREATE_OR_REPLACE_TRIGGER = {CREATE, "OR", "REPLACE", "TRIGGER"}; // PARSE UNTIL '/
127        static final String[] STMT_CREATE_OR_REPLACE_TYPE = {CREATE, "OR", "REPLACE", "TYPE"};
128        static final String[] STMT_CREATE_OUTLINE = {CREATE, "OUTLINE"};
129        static final String[] STMT_CREATE_PACKAGE = {CREATE, "PACKAGE"}; // PARSE UNTIL '/'
130        static final String[] STMT_CREATE_PFILE = {CREATE, "PFILE"};
131        static final String[] STMT_CREATE_PROCEDURE = {CREATE, "PROCEDURE"}; // PARSE UNTIL '/'
132        static final String[] STMT_CREATE_PROFILE = {CREATE, "PROFILE"};
133        static final String[] STMT_CREATE_PUBLIC_DATABASE = {CREATE, "PUBLIC", "DATABASE"};
134        static final String[] STMT_CREATE_PUBLIC_ROLLBACK = {CREATE, "PUBLIC", "ROLLBACK"};
135        static final String[] STMT_CREATE_PUBLIC_SYNONYM = {CREATE, "PUBLIC", "SYNONYM"};
136        static final String[] STMT_CREATE_ROLE = {CREATE, "ROLE"};
137        static final String[] STMT_CREATE_ROLLBACK = {CREATE, "ROLLBACK"};
138        static final String[] STMT_CREATE_SEQUENCE = {CREATE, "SEQUENCE"};
139        static final String[] STMT_CREATE_SPFILE = {CREATE, "SPFILE"};
140        static final String[] STMT_CREATE_SYNONYM = {CREATE, "SYNONYM"};
141        static final String[] STMT_CREATE_TABLESPACE = {CREATE, "TABLESPACE"};
142        static final String[] STMT_CREATE_TRIGGER = {CREATE, "TRIGGER"};
143        static final String[] STMT_CREATE_TYPE = {CREATE, "TYPE"};
144        static final String[] STMT_CREATE_USER = {CREATE, "USER"};
145        static final String[] STMT_CREATE_UNIQUE_INDEX = {CREATE, "UNIQUE", "INDEX"};
146        static final String[] STMT_CREATE_BITMAP_INDEX = {CREATE, "BITMAP", "INDEX"};
147
148        public static final String[][] CREATE_PHRASES = {STMT_CREATE_CLUSTER, STMT_CREATE_CONTEXT, STMT_CREATE_CONTROLFILE,
149            STMT_CREATE_DATABASE, STMT_CREATE_DIMENSION, STMT_CREATE_DIRECTORY, STMT_CREATE_DISKGROUP, STMT_CREATE_FUNCTION,
150            STMT_CREATE_INDEX, STMT_CREATE_INDEXTYPE, STMT_CREATE_JAVA, STMT_CREATE_MATERIALIZED_VIEW,
151            STMT_CREATE_MATERIALIZED_VEIW_LOG, STMT_CREATE_OPERATOR, STMT_CREATE_OR_REPLACE_DIRECTORY,
152            STMT_CREATE_OR_REPLACE_FUNCTION, STMT_CREATE_LIBRARY, STMT_CREATE_OR_REPLACE_LIBRARY, STMT_CREATE_OR_REPLACE_OUTLINE,
153            STMT_CREATE_OR_REPLACE_PROCEDURE, STMT_CREATE_OR_REPLACE_PUBLIC_SYNONYM, STMT_CREATE_OR_REPLACE_SYNONYM,
154            STMT_CREATE_OR_REPLACE_PACKAGE, STMT_CREATE_OR_REPLACE_TRIGGER, STMT_CREATE_OR_REPLACE_TYPE, STMT_CREATE_OUTLINE,
155            STMT_CREATE_PACKAGE, STMT_CREATE_PFILE, STMT_CREATE_PROCEDURE, STMT_CREATE_PROFILE, STMT_CREATE_PUBLIC_DATABASE,
156            STMT_CREATE_PUBLIC_ROLLBACK, STMT_CREATE_PUBLIC_SYNONYM, STMT_CREATE_ROLE, STMT_CREATE_ROLLBACK,
157            STMT_CREATE_SEQUENCE, STMT_CREATE_SPFILE, STMT_CREATE_SYNONYM, STMT_CREATE_TABLESPACE, STMT_CREATE_TRIGGER,
158            STMT_CREATE_TYPE, STMT_CREATE_USER, STMT_CREATE_UNIQUE_INDEX, STMT_CREATE_BITMAP_INDEX, STMT_CREATE_TABLESPACE,
159            STMT_CREATE_PROCEDURE};
160
161        static final String[][] SLASHED_STMT_PHRASES = {STMT_CREATE_FUNCTION, STMT_CREATE_LIBRARY,
162            STMT_CREATE_OR_REPLACE_DIRECTORY, STMT_CREATE_OR_REPLACE_FUNCTION, STMT_CREATE_OR_REPLACE_LIBRARY,
163            STMT_CREATE_OR_REPLACE_PROCEDURE, STMT_CREATE_OR_REPLACE_TRIGGER, STMT_CREATE_PACKAGE, STMT_CREATE_PROCEDURE};
164
165        static final String[] STMT_DISASSOCIATE_STATISTICS = {"DISASSOCIATE", "STATISTICS"};
166
167        static final String[] STMT_DROP_CLUSTER = {DROP, "CLUSTER"};
168        static final String[] STMT_DROP_CONTEXT = {DROP, "CONTEXT"};
169        static final String[] STMT_DROP_DATABASE = {DROP, "DATABASE"};
170        static final String[] STMT_DROP_DIMENSION = {DROP, "DIMENSION"};
171        static final String[] STMT_DROP_DIRECTORY = {DROP, "DIRECTORY"};
172        static final String[] STMT_DROP_DISKGROUP = {DROP, "DISKGROUP"};
173        static final String[] STMT_DROP_FUNCTION = {DROP, "FUNCTION"};
174        static final String[] STMT_DROP_INDEX = {DROP, "INDEX"};
175        static final String[] STMT_DROP_INDEXTYPE = {DROP, "INDEXTYPE"};
176        static final String[] STMT_DROP_JAVA = {DROP, "JAVA"};
177        static final String[] STMT_DROP_LIBRARY = {DROP, "LIBRARY"};
178        static final String[] STMT_DROP_MATERIALIZED = {DROP, "MATERIALIZED"};
179        static final String[] STMT_DROP_OPERATOR = {DROP, "OPERATOR"};
180        static final String[] STMT_DROP_OUTLINE = {DROP, "OUTLINE"};
181        static final String[] STMT_DROP_PACKAGE = {DROP, "PACKAGE"};
182        static final String[] STMT_DROP_PROCEDURE = {DROP, "PROCEDURE"};
183        static final String[] STMT_DROP_PROFILE = {DROP, "PROFILE"};
184        static final String[] STMT_DROP_ROLE = {DROP, "ROLE"};
185        static final String[] STMT_DROP_ROLLBACK = {DROP, "ROLLBACK"};
186        static final String[] STMT_DROP_SEQUENCE = {DROP, "SEQUENCE"};
187        static final String[] STMT_DROP_SYNONYM = {DROP, "SYNONYM"};
188        static final String[] STMT_DROP_TABLESPACE = {DROP, "TABLESPACE"};
189        static final String[] STMT_DROP_TRIGGER = {DROP, "TRIGGER"};
190        static final String[] STMT_DROP_TYPE = {DROP, "TYPE"};
191        static final String[] STMT_DROP_USER = {DROP, "USER"};
192
193        static final String[] STMT_DROP_PUBLIC_DATABASE = {DROP, "PUBLIC", "DATABASE"};
194        static final String[] STMT_DROP_PUBLIC_SYNONYM = {DROP, "PUBLIC", "SYNONYM"};
195
196        static final String[][] DROP_PHRASES = {STMT_DROP_CLUSTER, STMT_DROP_CONTEXT, STMT_DROP_DATABASE, STMT_DROP_DIMENSION,
197            STMT_DROP_DIRECTORY, STMT_DROP_DISKGROUP, STMT_DROP_FUNCTION, STMT_DROP_INDEX, STMT_DROP_INDEXTYPE, STMT_DROP_JAVA,
198            STMT_DROP_LIBRARY, STMT_DROP_MATERIALIZED, STMT_DROP_OPERATOR, STMT_DROP_OUTLINE, STMT_DROP_PACKAGE,
199            STMT_DROP_PROCEDURE, STMT_DROP_PROFILE, STMT_DROP_ROLE, STMT_DROP_ROLLBACK, STMT_DROP_SEQUENCE, STMT_DROP_SYNONYM,
200            STMT_DROP_TABLESPACE, STMT_DROP_TRIGGER, STMT_DROP_TYPE, STMT_DROP_USER, STMT_DROP_PUBLIC_DATABASE,
201            STMT_DROP_PUBLIC_SYNONYM};
202
203        static final String[] STMT_EXPLAIN_PLAN = {"EXPLAIN", "PLAN"};
204        static final String[] STMT_FLASHBACK = {"FLASHBACK"};
205        static final String[] STMT_LOCK_TABLE = {"LOCK", "TABLE"};
206        static final String[] STMT_MERGE = {"MERGE"};
207        static final String[] STMT_NOAUDIT = {"NOAUDIT"};
208        static final String[] STMT_PURGE = {"PURGE"};
209        static final String[] STMT_RENAME = {"RENAME"};
210        static final String[] STMT_ROLLBACK_TO_SAVEPOINT = {"ROLLBACK", "TO", "SAVEPOINT"};
211        static final String[] STMT_ROLLBACK_WORK = {"ROLLBACK", "WORK"};
212        static final String[] STMT_ROLLBACK = {"ROLLBACK"};
213        static final String[] STMT_SAVEPOINT = {"SAVEPOINT"};
214        static final String[] STMT_SET_CONSTRAINT = {SET, "CONSTRAINT"};
215        static final String[] STMT_SET_CONSTRAINTS = {SET, "CONSTRAINTS"};
216        static final String[] STMT_SET_ROLE = {SET, "ROLE"};
217        static final String[] STMT_SET_TRANSACTION = {SET, "TRANSACTION"};
218        static final String[] STMT_TRUNCATE = {"TRUNCATE"};
219
220        static final String[][] SET_PHRASES = {STMT_SET_CONSTRAINT, STMT_SET_CONSTRAINTS, STMT_SET_ROLE, STMT_SET_TRANSACTION};
221
222        static final String[][] MISC_PHRASES = {STMT_ANALYZE, STMT_ASSOCIATE_STATISTICS, STMT_AUDIT, STMT_COMMIT_WORK,
223            STMT_COMMIT_WRITE, STMT_COMMIT_FORCE, STMT_COMMENT_ON, STMT_DISASSOCIATE_STATISTICS, STMT_EXPLAIN_PLAN,
224            STMT_FLASHBACK, STMT_LOCK_TABLE, STMT_MERGE, STMT_NOAUDIT, STMT_PURGE, STMT_RENAME, STMT_ROLLBACK_TO_SAVEPOINT,
225            STMT_ROLLBACK_WORK, STMT_ROLLBACK, STMT_SAVEPOINT, STMT_TRUNCATE};
226
227        // CREATE TABLE, CREATE VIEW, and GRANT statements.
228        public final static String[] VALID_SCHEMA_CHILD_STMTS = {StandardDdlLexicon.TYPE_CREATE_TABLE_STATEMENT,
229            StandardDdlLexicon.TYPE_CREATE_VIEW_STATEMENT, StandardDdlLexicon.TYPE_GRANT_STATEMENT};
230
231        public final static String[] COMPLEX_STMT_TYPES = {OracleDdlLexicon.TYPE_CREATE_FUNCTION_STATEMENT};
232    }
233
234    interface OracleDataTypes {
235        static final String[] DTYPE_CHAR_ORACLE = {"CHAR"}; // CHAR(size [BYTE | CHAR])
236        static final String[] DTYPE_VARCHAR2 = {"VARCHAR2"}; // VARCHAR2(size [BYTE | CHAR])
237        static final String[] DTYPE_NVARCHAR2 = {"NVARCHAR2"}; // NVARCHAR2(size)
238        static final String[] DTYPE_NUMBER = {"NUMBER"}; // NUMBER(p,s)
239        static final String[] DTYPE_BINARY_FLOAT = {"BINARY_FLOAT "};
240        static final String[] DTYPE_BINARY_DOUBLE = {"BINARY_DOUBLE"};
241        static final String[] DTYPE_LONG = {"LONG"};
242        static final String[] DTYPE_LONG_RAW = {"LONG", "RAW"};
243        static final String[] DTYPE_RAW = {"RAW"}; // RAW(size)
244        static final String[] DTYPE_BLOB = {"BLOB"};
245        static final String[] DTYPE_CLOB = {"CLOB"};
246        static final String[] DTYPE_NCLOB = {"NCLOB"};
247        static final String[] DTYPE_BFILE = {"BFILE"};
248        static final String[] DTYPE_INTERVAL_YEAR = {"INTERVAL", "YEAR"}; // INTERVAL YEAR (year_precision) TO MONTH
249        static final String[] DTYPE_INTERVAL_DAY = {"INTERVAL", "DAY"}; // INTERVAL DAY (day_precision) TO SECOND
250                                                                        // (fractional_seconds_precision)
251
252        static final List<String[]> CUSTOM_DATATYPE_START_PHRASES = Arrays.asList(DTYPE_CHAR_ORACLE,
253                                                                                  DTYPE_VARCHAR2,
254                                                                                  DTYPE_NVARCHAR2,
255                                                                                  DTYPE_NUMBER,
256                                                                                  DTYPE_BINARY_FLOAT,
257                                                                                  DTYPE_BINARY_DOUBLE,
258                                                                                  DTYPE_LONG,
259                                                                                  DTYPE_LONG_RAW,
260                                                                                  DTYPE_RAW,
261                                                                                  DTYPE_BLOB,
262                                                                                  DTYPE_CLOB,
263                                                                                  DTYPE_NCLOB,
264                                                                                  DTYPE_BFILE,
265                                                                                  DTYPE_INTERVAL_YEAR,
266                                                                                  DTYPE_INTERVAL_DAY);
267
268        static final List<String> CUSTOM_DATATYPE_START_WORDS = Arrays.asList("VARCHAR2",
269                                                                              "NVARCHAR2",
270                                                                              "NUMBER",
271                                                                              "BINARY_FLOAT",
272                                                                              "BINARY_DOUBLE",
273                                                                              "LONG",
274                                                                              "RAW",
275                                                                              "BLOB",
276                                                                              "CLOB",
277                                                                              "NCLOB",
278                                                                              "BFILE",
279                                                                              "INTERVAL");
280    }
281
282    interface IndexTypes {
283        String BITMAP_JOIN = "BITMAP";
284        String CLUSTER = "CLUSTER";
285        String TABLE = "TABLE";
286    }
287}