/* * ModeShape (http://www.modeshape.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.modeshape.sequencer.ddl.dialect.oracle; import java.util.Arrays; import java.util.List; import org.modeshape.sequencer.ddl.DdlConstants; import org.modeshape.sequencer.ddl.StandardDdlLexicon; /** * Oracle-specific constants including key words and statement start phrases. * * @author blafond */ public interface OracleDdlConstants extends DdlConstants { public static final String[] CUSTOM_KEYWORDS = {"ANALYZE", "ASSOCIATE", "TRUNCATE", "MATERIALIZED", "SAVEPOINT", "PURGE", "LOCK", "TRIGGER", "EXPLAIN", "PLAN", "DIMENSION", "DIRECTORY", "DATABASE", "CONTROLFILE", "DISKGROUP", "INDEXTYPE", "SYNONYM", "SEQUENCE", "LIBRARY", "CLUSTER", "OUTLINE", "PACKAGE", "SPFILE", "PFILE", "AUDIT", "COMMIT", "PURGE", "MERGE", "RENAME", "FLASHBACK", "NOAUDIT", "DISASSOCIATE", "NESTED", "REVOKE", "COMMENT", INDEX, "VARCHAR2", "NVARCHAR2", "NUMBER", "BINARY_FLOAT", "BINARY_DOUBLE", "LONG", "RAW", "BLOB", "CLOB", "NCLOB", "BFILE", "INTERVAL", "UNUSABLE"}; public static final String[] INLINE_COLUMN_PROPERTY_START = {"CONSTRAINT", "NOT", "NULL", "UNIQUE", "PRIMARY", "CHECK", "DEFAULT", "REFERENCES"}; interface OracleStatementStartPhrases { static final String[] STMT_ALTER_CLUSTER = {ALTER, "CLUSTER"}; static final String[] STMT_ALTER_DATABASE = {ALTER, "DATABASE"}; static final String[] STMT_ALTER_DIMENSION = {ALTER, "DIMENSION"}; static final String[] STMT_ALTER_DISKGROUP = {ALTER, "DISKGROUP"}; static final String[] STMT_ALTER_FUNCTION = {ALTER, "FUNCTION"}; static final String[] STMT_ALTER_INDEX = {ALTER, INDEX}; static final String[] STMT_ALTER_INDEXTYPE = {ALTER, "INDEXTYPE"}; static final String[] STMT_ALTER_JAVA = {ALTER, "JAVA"}; static final String[] STMT_ALTER_MATERIALIZED = {ALTER, "MATERIALIZED"}; static final String[] STMT_ALTER_OPERATOR = {ALTER, "OPERATOR"}; static final String[] STMT_ALTER_OUTLINE = {ALTER, "OUTLINE"}; static final String[] STMT_ALTER_PACKAGE = {ALTER, "PACKAGE"}; static final String[] STMT_ALTER_PROCEDURE = {ALTER, "PROCEDURE"}; static final String[] STMT_ALTER_PROFILE = {ALTER, "PROFILE"}; static final String[] STMT_ALTER_RESOURCE = {ALTER, "RESOURCE"}; static final String[] STMT_ALTER_ROLE = {ALTER, "ROLE"}; static final String[] STMT_ALTER_ROLLBACK = {ALTER, "ROLLBACK"}; static final String[] STMT_ALTER_SEQUENCE = {ALTER, "SEQUENCE"}; static final String[] STMT_ALTER_SESSION = {ALTER, "SESSION"}; static final String[] STMT_ALTER_SYSTEM = {ALTER, "SYSTEM"}; static final String[] STMT_ALTER_TABLESPACE = {ALTER, "TABLESPACE"}; static final String[] STMT_ALTER_TRIGGER = {ALTER, "TRIGGER"}; static final String[] STMT_ALTER_TYPE = {ALTER, "TYPE"}; static final String[] STMT_ALTER_USER = {ALTER, "USER"}; static final String[] STMT_ALTER_VIEW = {ALTER, "VIEW"}; static final String[][] ALTER_PHRASES = {STMT_ALTER_CLUSTER, STMT_ALTER_DATABASE, STMT_ALTER_DIMENSION, STMT_ALTER_DISKGROUP, STMT_ALTER_FUNCTION, STMT_ALTER_INDEX, STMT_ALTER_INDEXTYPE, STMT_ALTER_JAVA, STMT_ALTER_MATERIALIZED, STMT_ALTER_OPERATOR, STMT_ALTER_OUTLINE, STMT_ALTER_PACKAGE, STMT_ALTER_PROCEDURE, STMT_ALTER_PROFILE, STMT_ALTER_RESOURCE, STMT_ALTER_ROLE, STMT_ALTER_ROLLBACK, STMT_ALTER_SEQUENCE, STMT_ALTER_SESSION, STMT_ALTER_SYSTEM, STMT_ALTER_TABLESPACE, STMT_ALTER_TRIGGER, STMT_ALTER_TYPE, STMT_ALTER_USER, STMT_ALTER_VIEW}; static final String[] STMT_ANALYZE = {"ANALYZE"}; static final String[] STMT_ASSOCIATE_STATISTICS = {"ASSOCIATE", "STATISTICS"}; static final String[] STMT_AUDIT = {"AUDIT"}; /* COMMIT [ WORK ] [ [ COMMENT string ] | [ WRITE [ IMMEDIATE | BATCH ] [ WAIT | NOWAIT ] ] | FORCE string [, integer ] ] ; COMMIT WORK COMMENT "some comment" COMMIT COMMENT "some comment" COMMIT WORK WRITE [ IMMEDIATE | BATCH ] [ WAIT | NOWAIT ] COMMIT WRITE IMMEDIATE NOWAIT; COMMIT WORK WRITE IMMEDIATE NOWAIT; COMMIT FORCE "some string", 10; */ static final String[] STMT_COMMIT_WORK = {"COMMIT", "WORK"}; static final String[] STMT_COMMIT_WRITE = {"COMMIT", "WRITE"}; static final String[] STMT_COMMIT_FORCE = {"COMMIT", "FORCE"}; static final String[] STMT_COMMIT = {"COMMIT"}; // DON"T REGISTER THIS STMT static final String[] STMT_COMMENT_ON = {"COMMENT", "ON"}; static final String[] STMT_CREATE_CLUSTER = {CREATE, "CLUSTER"}; static final String[] STMT_CREATE_CONTEXT = {CREATE, "CONTEXT"}; static final String[] STMT_CREATE_CONTROLFILE = {CREATE, "CONTROLFILE"}; static final String[] STMT_CREATE_DATABASE = {CREATE, "DATABASE"}; static final String[] STMT_CREATE_DIMENSION = {CREATE, "DIMENSION"}; static final String[] STMT_CREATE_DIRECTORY = {CREATE, "DIRECTORY"}; static final String[] STMT_CREATE_DISKGROUP = {CREATE, "DISKGROUP"}; static final String[] STMT_CREATE_FUNCTION = {CREATE, "FUNCTION"}; // PARSE UNTIL '/' static final String[] STMT_CREATE_INDEX = {CREATE, "INDEX"}; static final String[] STMT_CREATE_INDEXTYPE = {CREATE, "INDEXTYPE"}; static final String[] STMT_CREATE_JAVA = {CREATE, "JAVA"}; static final String[] STMT_CREATE_LIBRARY = {CREATE, "LIBRARY"}; // PARSE UNTIL '/' static final String[] STMT_CREATE_MATERIALIZED_VIEW = {CREATE, "MATERIALIZED", "VIEW"}; static final String[] STMT_CREATE_MATERIALIZED_VEIW_LOG = {CREATE, "MATERIALIZED", "VIEW", "LOG"}; static final String[] STMT_CREATE_OPERATOR = {CREATE, "OPERATOR"}; static final String[] STMT_CREATE_OR_REPLACE_DIRECTORY = {CREATE, "OR", "REPLACE", "DIRECTORY"}; // PARSE UNTIL '/' static final String[] STMT_CREATE_OR_REPLACE_FUNCTION = {CREATE, "OR", "REPLACE", "FUNCTION"}; // PARSE UNTIL '/' static final String[] STMT_CREATE_OR_REPLACE_LIBRARY = {CREATE, "OR", "REPLACE", "LIBRARY"}; // PARSE UNTIL '/' static final String[] STMT_CREATE_OR_REPLACE_OUTLINE = {CREATE, "OR", "REPLACE", "OUTLINE"}; static final String[] STMT_CREATE_OR_REPLACE_PUBLIC_OUTLINE = {CREATE, "OR", "REPLACE", "PUBLIC", "OUTLINE"}; // TODO: BML static final String[] STMT_CREATE_OR_REPLACE_PRIVATE_OUTLINE = {CREATE, "OR", "REPLACE", "PRIVATE", "OUTLINE"}; // TODO: // BML static final String[] STMT_CREATE_OR_REPLACE_PACKAGE = {CREATE, "OR", "REPLACE", "PACKAGE"}; static final String[] STMT_CREATE_OR_REPLACE_PROCEDURE = {CREATE, "OR", "REPLACE", "PROCEDURE"}; // PARSE UNTIL '/' static final String[] STMT_CREATE_OR_REPLACE_PUBLIC_SYNONYM = {CREATE, "OR", "REPLACE", "PUBLIC", "SYNONYM"}; static final String[] STMT_CREATE_OR_REPLACE_SYNONYM = {CREATE, "OR", "REPLACE", "SYNONYM"}; static final String[] STMT_CREATE_OR_REPLACE_TRIGGER = {CREATE, "OR", "REPLACE", "TRIGGER"}; // PARSE UNTIL '/ static final String[] STMT_CREATE_OR_REPLACE_TYPE = {CREATE, "OR", "REPLACE", "TYPE"}; static final String[] STMT_CREATE_OUTLINE = {CREATE, "OUTLINE"}; static final String[] STMT_CREATE_PACKAGE = {CREATE, "PACKAGE"}; // PARSE UNTIL '/' static final String[] STMT_CREATE_PFILE = {CREATE, "PFILE"}; static final String[] STMT_CREATE_PROCEDURE = {CREATE, "PROCEDURE"}; // PARSE UNTIL '/' static final String[] STMT_CREATE_PROFILE = {CREATE, "PROFILE"}; static final String[] STMT_CREATE_PUBLIC_DATABASE = {CREATE, "PUBLIC", "DATABASE"}; static final String[] STMT_CREATE_PUBLIC_ROLLBACK = {CREATE, "PUBLIC", "ROLLBACK"}; static final String[] STMT_CREATE_PUBLIC_SYNONYM = {CREATE, "PUBLIC", "SYNONYM"}; static final String[] STMT_CREATE_ROLE = {CREATE, "ROLE"}; static final String[] STMT_CREATE_ROLLBACK = {CREATE, "ROLLBACK"}; static final String[] STMT_CREATE_SEQUENCE = {CREATE, "SEQUENCE"}; static final String[] STMT_CREATE_SPFILE = {CREATE, "SPFILE"}; static final String[] STMT_CREATE_SYNONYM = {CREATE, "SYNONYM"}; static final String[] STMT_CREATE_TABLESPACE = {CREATE, "TABLESPACE"}; static final String[] STMT_CREATE_TRIGGER = {CREATE, "TRIGGER"}; static final String[] STMT_CREATE_TYPE = {CREATE, "TYPE"}; static final String[] STMT_CREATE_USER = {CREATE, "USER"}; static final String[] STMT_CREATE_UNIQUE_INDEX = {CREATE, "UNIQUE", "INDEX"}; static final String[] STMT_CREATE_BITMAP_INDEX = {CREATE, "BITMAP", "INDEX"}; public static final String[][] CREATE_PHRASES = {STMT_CREATE_CLUSTER, STMT_CREATE_CONTEXT, STMT_CREATE_CONTROLFILE, STMT_CREATE_DATABASE, STMT_CREATE_DIMENSION, STMT_CREATE_DIRECTORY, STMT_CREATE_DISKGROUP, STMT_CREATE_FUNCTION, STMT_CREATE_INDEX, STMT_CREATE_INDEXTYPE, STMT_CREATE_JAVA, STMT_CREATE_MATERIALIZED_VIEW, STMT_CREATE_MATERIALIZED_VEIW_LOG, STMT_CREATE_OPERATOR, STMT_CREATE_OR_REPLACE_DIRECTORY, STMT_CREATE_OR_REPLACE_FUNCTION, STMT_CREATE_LIBRARY, STMT_CREATE_OR_REPLACE_LIBRARY, STMT_CREATE_OR_REPLACE_OUTLINE, STMT_CREATE_OR_REPLACE_PROCEDURE, STMT_CREATE_OR_REPLACE_PUBLIC_SYNONYM, STMT_CREATE_OR_REPLACE_SYNONYM, STMT_CREATE_OR_REPLACE_PACKAGE, STMT_CREATE_OR_REPLACE_TRIGGER, STMT_CREATE_OR_REPLACE_TYPE, STMT_CREATE_OUTLINE, STMT_CREATE_PACKAGE, STMT_CREATE_PFILE, STMT_CREATE_PROCEDURE, STMT_CREATE_PROFILE, STMT_CREATE_PUBLIC_DATABASE, STMT_CREATE_PUBLIC_ROLLBACK, STMT_CREATE_PUBLIC_SYNONYM, STMT_CREATE_ROLE, STMT_CREATE_ROLLBACK, STMT_CREATE_SEQUENCE, STMT_CREATE_SPFILE, STMT_CREATE_SYNONYM, STMT_CREATE_TABLESPACE, STMT_CREATE_TRIGGER, STMT_CREATE_TYPE, STMT_CREATE_USER, STMT_CREATE_UNIQUE_INDEX, STMT_CREATE_BITMAP_INDEX, STMT_CREATE_TABLESPACE, STMT_CREATE_PROCEDURE}; static final String[][] SLASHED_STMT_PHRASES = {STMT_CREATE_FUNCTION, STMT_CREATE_LIBRARY, STMT_CREATE_OR_REPLACE_DIRECTORY, STMT_CREATE_OR_REPLACE_FUNCTION, STMT_CREATE_OR_REPLACE_LIBRARY, STMT_CREATE_OR_REPLACE_PROCEDURE, STMT_CREATE_OR_REPLACE_TRIGGER, STMT_CREATE_PACKAGE, STMT_CREATE_PROCEDURE}; static final String[] STMT_DISASSOCIATE_STATISTICS = {"DISASSOCIATE", "STATISTICS"}; static final String[] STMT_DROP_CLUSTER = {DROP, "CLUSTER"}; static final String[] STMT_DROP_CONTEXT = {DROP, "CONTEXT"}; static final String[] STMT_DROP_DATABASE = {DROP, "DATABASE"}; static final String[] STMT_DROP_DIMENSION = {DROP, "DIMENSION"}; static final String[] STMT_DROP_DIRECTORY = {DROP, "DIRECTORY"}; static final String[] STMT_DROP_DISKGROUP = {DROP, "DISKGROUP"}; static final String[] STMT_DROP_FUNCTION = {DROP, "FUNCTION"}; static final String[] STMT_DROP_INDEX = {DROP, "INDEX"}; static final String[] STMT_DROP_INDEXTYPE = {DROP, "INDEXTYPE"}; static final String[] STMT_DROP_JAVA = {DROP, "JAVA"}; static final String[] STMT_DROP_LIBRARY = {DROP, "LIBRARY"}; static final String[] STMT_DROP_MATERIALIZED = {DROP, "MATERIALIZED"}; static final String[] STMT_DROP_OPERATOR = {DROP, "OPERATOR"}; static final String[] STMT_DROP_OUTLINE = {DROP, "OUTLINE"}; static final String[] STMT_DROP_PACKAGE = {DROP, "PACKAGE"}; static final String[] STMT_DROP_PROCEDURE = {DROP, "PROCEDURE"}; static final String[] STMT_DROP_PROFILE = {DROP, "PROFILE"}; static final String[] STMT_DROP_ROLE = {DROP, "ROLE"}; static final String[] STMT_DROP_ROLLBACK = {DROP, "ROLLBACK"}; static final String[] STMT_DROP_SEQUENCE = {DROP, "SEQUENCE"}; static final String[] STMT_DROP_SYNONYM = {DROP, "SYNONYM"}; static final String[] STMT_DROP_TABLESPACE = {DROP, "TABLESPACE"}; static final String[] STMT_DROP_TRIGGER = {DROP, "TRIGGER"}; static final String[] STMT_DROP_TYPE = {DROP, "TYPE"}; static final String[] STMT_DROP_USER = {DROP, "USER"}; static final String[] STMT_DROP_PUBLIC_DATABASE = {DROP, "PUBLIC", "DATABASE"}; static final String[] STMT_DROP_PUBLIC_SYNONYM = {DROP, "PUBLIC", "SYNONYM"}; static final String[][] DROP_PHRASES = {STMT_DROP_CLUSTER, STMT_DROP_CONTEXT, STMT_DROP_DATABASE, STMT_DROP_DIMENSION, STMT_DROP_DIRECTORY, STMT_DROP_DISKGROUP, STMT_DROP_FUNCTION, STMT_DROP_INDEX, STMT_DROP_INDEXTYPE, STMT_DROP_JAVA, STMT_DROP_LIBRARY, STMT_DROP_MATERIALIZED, STMT_DROP_OPERATOR, STMT_DROP_OUTLINE, STMT_DROP_PACKAGE, STMT_DROP_PROCEDURE, STMT_DROP_PROFILE, STMT_DROP_ROLE, STMT_DROP_ROLLBACK, STMT_DROP_SEQUENCE, STMT_DROP_SYNONYM, STMT_DROP_TABLESPACE, STMT_DROP_TRIGGER, STMT_DROP_TYPE, STMT_DROP_USER, STMT_DROP_PUBLIC_DATABASE, STMT_DROP_PUBLIC_SYNONYM}; static final String[] STMT_EXPLAIN_PLAN = {"EXPLAIN", "PLAN"}; static final String[] STMT_FLASHBACK = {"FLASHBACK"}; static final String[] STMT_LOCK_TABLE = {"LOCK", "TABLE"}; static final String[] STMT_MERGE = {"MERGE"}; static final String[] STMT_NOAUDIT = {"NOAUDIT"}; static final String[] STMT_PURGE = {"PURGE"}; static final String[] STMT_RENAME = {"RENAME"}; static final String[] STMT_ROLLBACK_TO_SAVEPOINT = {"ROLLBACK", "TO", "SAVEPOINT"}; static final String[] STMT_ROLLBACK_WORK = {"ROLLBACK", "WORK"}; static final String[] STMT_ROLLBACK = {"ROLLBACK"}; static final String[] STMT_SAVEPOINT = {"SAVEPOINT"}; static final String[] STMT_SET_CONSTRAINT = {SET, "CONSTRAINT"}; static final String[] STMT_SET_CONSTRAINTS = {SET, "CONSTRAINTS"}; static final String[] STMT_SET_ROLE = {SET, "ROLE"}; static final String[] STMT_SET_TRANSACTION = {SET, "TRANSACTION"}; static final String[] STMT_TRUNCATE = {"TRUNCATE"}; static final String[][] SET_PHRASES = {STMT_SET_CONSTRAINT, STMT_SET_CONSTRAINTS, STMT_SET_ROLE, STMT_SET_TRANSACTION}; static final String[][] MISC_PHRASES = {STMT_ANALYZE, STMT_ASSOCIATE_STATISTICS, STMT_AUDIT, STMT_COMMIT_WORK, STMT_COMMIT_WRITE, STMT_COMMIT_FORCE, STMT_COMMENT_ON, STMT_DISASSOCIATE_STATISTICS, STMT_EXPLAIN_PLAN, STMT_FLASHBACK, STMT_LOCK_TABLE, STMT_MERGE, STMT_NOAUDIT, STMT_PURGE, STMT_RENAME, STMT_ROLLBACK_TO_SAVEPOINT, STMT_ROLLBACK_WORK, STMT_ROLLBACK, STMT_SAVEPOINT, STMT_TRUNCATE}; // CREATE TABLE, CREATE VIEW, and GRANT statements. public final static String[] VALID_SCHEMA_CHILD_STMTS = {StandardDdlLexicon.TYPE_CREATE_TABLE_STATEMENT, StandardDdlLexicon.TYPE_CREATE_VIEW_STATEMENT, StandardDdlLexicon.TYPE_GRANT_STATEMENT}; public final static String[] COMPLEX_STMT_TYPES = {OracleDdlLexicon.TYPE_CREATE_FUNCTION_STATEMENT}; } interface OracleDataTypes { static final String[] DTYPE_CHAR_ORACLE = {"CHAR"}; // CHAR(size [BYTE | CHAR]) static final String[] DTYPE_VARCHAR2 = {"VARCHAR2"}; // VARCHAR2(size [BYTE | CHAR]) static final String[] DTYPE_NVARCHAR2 = {"NVARCHAR2"}; // NVARCHAR2(size) static final String[] DTYPE_NUMBER = {"NUMBER"}; // NUMBER(p,s) static final String[] DTYPE_BINARY_FLOAT = {"BINARY_FLOAT "}; static final String[] DTYPE_BINARY_DOUBLE = {"BINARY_DOUBLE"}; static final String[] DTYPE_LONG = {"LONG"}; static final String[] DTYPE_LONG_RAW = {"LONG", "RAW"}; static final String[] DTYPE_RAW = {"RAW"}; // RAW(size) static final String[] DTYPE_BLOB = {"BLOB"}; static final String[] DTYPE_CLOB = {"CLOB"}; static final String[] DTYPE_NCLOB = {"NCLOB"}; static final String[] DTYPE_BFILE = {"BFILE"}; static final String[] DTYPE_INTERVAL_YEAR = {"INTERVAL", "YEAR"}; // INTERVAL YEAR (year_precision) TO MONTH static final String[] DTYPE_INTERVAL_DAY = {"INTERVAL", "DAY"}; // INTERVAL DAY (day_precision) TO SECOND // (fractional_seconds_precision) static final List<String[]> CUSTOM_DATATYPE_START_PHRASES = Arrays.asList(DTYPE_CHAR_ORACLE, DTYPE_VARCHAR2, DTYPE_NVARCHAR2, DTYPE_NUMBER, DTYPE_BINARY_FLOAT, DTYPE_BINARY_DOUBLE, DTYPE_LONG, DTYPE_LONG_RAW, DTYPE_RAW, DTYPE_BLOB, DTYPE_CLOB, DTYPE_NCLOB, DTYPE_BFILE, DTYPE_INTERVAL_YEAR, DTYPE_INTERVAL_DAY); static final List<String> CUSTOM_DATATYPE_START_WORDS = Arrays.asList("VARCHAR2", "NVARCHAR2", "NUMBER", "BINARY_FLOAT", "BINARY_DOUBLE", "LONG", "RAW", "BLOB", "CLOB", "NCLOB", "BFILE", "INTERVAL"); } interface IndexTypes { String BITMAP_JOIN = "BITMAP"; String CLUSTER = "CLUSTER"; String TABLE = "TABLE"; } }