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; 017 018import java.util.Arrays; 019import java.util.List; 020 021public interface DdlConstants { 022 023 public static final long KILO = 1024; 024 public static final long MEGA = KILO * 1024; 025 public static final long GIGA = MEGA * 1024; 026 027 public static final String DEFAULT_TERMINATOR = ";"; 028 029 /* 030 * Character Strings 031 */ 032 public static final String SPACE = " "; 033 public static final String PERIOD = "."; 034 public static final String COMMA = ","; 035 public static final String SEMICOLON = ";"; 036 public static final String L_PAREN = "("; 037 public static final String R_PAREN = ")"; 038 public static final String L_SQUOTE = "’"; 039 public static final String LS_BRACE = "["; 040 public static final String RS_BRACE = "]"; 041 042 /* 043 * Table Constraint ID's 044 */ 045 public static final int CONSTRAINT_UC = 0; 046 public static final int CONSTRAINT_FK = 1; 047 public static final int CONSTRAINT_PK = 2; 048 public static final int CONSTRAINT_C = 3; 049 050 public static final String PRIMARY_KEY = "PRIMARY KEY"; 051 public static final String FOREIGN_KEY = "FOREIGN KEY"; 052 053 String UNNAMED_CHECK_NODE_NAME = "CHECK_1"; 054 /* 055 * Common DDL Keywords 056 */ 057 public static final String ALTER = "ALTER"; 058 public static final String CHECK = "CHECK"; 059 public static final String COLUMN = "COLUMN"; 060 public static final String CONSTRAINT = "CONSTRAINT"; 061 public static final String CREATE = "CREATE"; 062 public static final String DECLARE = "DECLARE"; 063 public static final String DROP = "DROP"; 064 public static final String FOREIGN = "FOREIGN"; 065 public static final String GRANT = "GRANT"; 066 public static final String REVOKE = "REVOKE"; 067 public static final String INDEX = "INDEX"; 068 public static final String INSERT = "INSERT"; 069 public static final String UPDATE = "UPDATE"; 070 public static final String DELETE = "DELETE"; 071 public static final String SELECT = "SELECT"; 072 public static final String KEY = "KEY"; 073 public static final String OFF = "OFF"; 074 public static final String ON = "ON"; 075 public static final String PRIMARY = "PRIMARY"; 076 public static final String SCHEMA = "SCHEMA"; 077 public static final String SET = "SET"; 078 public static final String TABLE = "TABLE"; 079 public static final String UNIQUE = "UNIQUE"; 080 public static final String VIEW = "VIEW"; 081 public static final String NOT = "NOT"; 082 public static final String NULL = "NULL"; 083 084 public static final String MISSING_TERMINATOR_NODE_LITERAL = "missingTerminator"; 085 086 interface DropBehavior { 087 public static final String CASCADE = "CASCADE"; 088 public static final String RESTRICT = "RESTRICT"; 089 } 090 091 interface MatchType { 092 public static final String FULL = "FULL"; 093 public static final String PARTIAL = "PARTIAL"; 094 } 095 096 interface ReferencialAction { 097 public static final String CASCADE = "CASCADE"; 098 public static final String SET_NULL = "SET NULL"; 099 public static final String SET_DEFAULT = "SET DEFAULT"; 100 public static final String NO_ACTION = "NO ACTION"; 101 } 102 103 // Basic SQL 92 statement start phrases 104 interface StatementStartPhrases { 105 public static final String[] STMT_CREATE_SCHEMA = {CREATE, SCHEMA}; 106 public static final String[] STMT_CREATE_TABLE = {CREATE, TABLE}; // { GLOBAL | LOCAL } TEMPORARY ] TABLE 107 public static final String[] STMT_CREATE_GLOBAL_TEMPORARY_TABLE = {CREATE, "GLOBAL", "TEMPORARY", TABLE}; 108 public static final String[] STMT_CREATE_LOCAL_TEMPORARY_TABLE = {CREATE, "LOCAL", "TEMPORARY", TABLE}; 109 public static final String[] STMT_CREATE_VIEW = {CREATE, VIEW}; 110 public static final String[] STMT_CREATE_OR_REPLACE_VIEW = {CREATE, "OR", "REPLACE", VIEW}; 111 public static final String[] STMT_CREATE_ASSERTION = {CREATE, "ASSERTION"}; 112 public static final String[] STMT_CREATE_CHARACTER_SET = {CREATE, "CHARACTER", SET}; 113 public static final String[] STMT_CREATE_COLLATION = {CREATE, "COLLATION"}; 114 public static final String[] STMT_CREATE_DOMAIN = {CREATE, "DOMAIN"}; 115 public static final String[] STMT_CREATE_TRANSLATION = {CREATE, "TRANSLATION"}; 116 public static final String[] STMT_ALTER_TABLE = {ALTER, TABLE}; 117 public static final String[] STMT_ALTER_DOMAIN = {ALTER, "DOMAIN"}; 118 public static final String[] STMT_GRANT = {GRANT}; 119 public static final String[] STMT_REVOKE = {REVOKE}; 120 public static final String[] STMT_DROP_SCHEMA = {DROP, SCHEMA}; 121 public static final String[] STMT_DROP_TABLE = {DROP, TABLE}; 122 public static final String[] STMT_DROP_VIEW = {DROP, VIEW}; 123 public static final String[] STMT_DROP_DOMAIN = {DROP, "DOMAIN"}; 124 public static final String[] STMT_DROP_CHARACTER_SET = {DROP, "CHARACTER", SET}; 125 public static final String[] STMT_DROP_COLLATION = {DROP, "COLLATION"}; 126 public static final String[] STMT_DROP_TRANSLATION = {DROP, "TRANSLATION"}; 127 public static final String[] STMT_DROP_ASSERTION = {DROP, "ASSERTION"}; 128 public static final String[] STMT_INSERT_INTO = {"INSERT", "INTO"}; 129 public static final String[] STMT_SET_DEFINE = {"SET", "DEFINE"}; 130 131 public final static String[][] SQL_92_ALL_PHRASES = {STMT_CREATE_SCHEMA, STMT_CREATE_TABLE, 132 STMT_CREATE_GLOBAL_TEMPORARY_TABLE, STMT_CREATE_LOCAL_TEMPORARY_TABLE, STMT_CREATE_VIEW, STMT_CREATE_OR_REPLACE_VIEW, 133 STMT_CREATE_ASSERTION, STMT_CREATE_CHARACTER_SET, STMT_CREATE_COLLATION, STMT_CREATE_TRANSLATION, STMT_CREATE_DOMAIN, 134 STMT_ALTER_TABLE, STMT_ALTER_DOMAIN, STMT_GRANT, STMT_REVOKE, STMT_DROP_SCHEMA, STMT_DROP_TABLE, STMT_DROP_VIEW, 135 STMT_DROP_DOMAIN, STMT_DROP_CHARACTER_SET, STMT_DROP_COLLATION, STMT_DROP_TRANSLATION, STMT_DROP_ASSERTION, 136 STMT_INSERT_INTO, STMT_SET_DEFINE}; 137 138 // <schema definition> 139 // | <table definition> 140 // | <view definition> 141 // | <grant statement> 142 // | <domain definition> 143 // | <character set definition> 144 // | <collation definition> 145 // | <translation definition> 146 // | <assertion definition> 147 public final static String[] VALID_SCHEMA_CHILD_TYPES = {StandardDdlLexicon.TYPE_CREATE_TABLE_STATEMENT, 148 StandardDdlLexicon.TYPE_CREATE_VIEW_STATEMENT, StandardDdlLexicon.TYPE_GRANT_ON_TABLE_STATEMENT, 149 StandardDdlLexicon.TYPE_GRANT_ON_DOMAIN_STATEMENT, StandardDdlLexicon.TYPE_GRANT_ON_TRANSLATION_STATEMENT, 150 StandardDdlLexicon.TYPE_GRANT_ON_COLLATION_STATEMENT, StandardDdlLexicon.TYPE_GRANT_ON_CHARACTER_SET_STATEMENT, 151 StandardDdlLexicon.TYPE_CREATE_DOMAIN_STATEMENT, StandardDdlLexicon.TYPE_CREATE_CHARACTER_SET_STATEMENT, 152 StandardDdlLexicon.TYPE_CREATE_COLLATION_STATEMENT, StandardDdlLexicon.TYPE_CREATE_TRANSLATION_STATEMENT, 153 StandardDdlLexicon.TYPE_CREATE_ASSERTION_STATEMENT}; 154 } 155 156 /** 157 * Constants related to Data Types 158 */ 159 interface DataTypes { 160 public static final int DTYPE_CODE_ANY = -1; 161 public static final int DTYPE_CODE_CHAR_STRING = 0; 162 public static final int DTYPE_CODE_NCHAR_STRING = 1; 163 public static final int DTYPE_CODE_BIT_STRING = 2; 164 public static final int DTYPE_CODE_EXACT_NUMERIC = 3; 165 public static final int DTYPE_CODE_APROX_NUMERIC = 4; 166 public static final int DTYPE_CODE_DATE_TIME = 5; 167 public static final int DTYPE_CODE_MISC = 6; 168 public static final int DTYPE_CODE_CUSTOM = 7; 169 170 // CHAR 171 public static final String[] DTYPE_CHARACTER = {"CHARACTER"}; 172 public static final String[] DTYPE_CHAR = {"CHAR"}; 173 public static final String[] DTYPE_CHARACTER_VARYING = {"CHARACTER", "VARYING"}; 174 public static final String[] DTYPE_CHAR_VARYING = {"CHAR", "VARYING"}; 175 public static final String[] DTYPE_VARCHAR = {"VARCHAR"}; 176 // NATIONAL CHAR 177 public static final String[] DTYPE_NATIONAL_CHARACTER = {"NATIONAL", "CHARACTER"}; 178 public static final String[] DTYPE_NATIONAL_CHAR = {"NATIONAL", "CHAR"}; 179 public static final String[] DTYPE_NATIONAL_CHARACTER_VARYING = {"NATIONAL", "CHARACTER", "VARYING"}; 180 public static final String[] DTYPE_NATIONAL_CHAR_VARYING = {"NATIONAL", "CHAR", "VARYING"}; 181 public static final String[] DTYPE_NCHAR_VARYING = {"NCHAR", "VARYING"}; 182 public static final String[] DTYPE_NCHAR = {"NCHAR"}; 183 // BIT STRING 184 public static final String[] DTYPE_BIT = {"BIT"}; 185 public static final String[] DTYPE_BIT_VARYING = {"BIT", "VARYING"}; 186 // EXACT NUMERIC 187 public static final String[] DTYPE_NUMERIC = {"NUMERIC"}; 188 public static final String[] DTYPE_DEC = {"DEC"}; 189 public static final String[] DTYPE_DECIMAL = {"DECIMAL"}; 190 public static final String[] DTYPE_INTEGER = {"INTEGER"}; 191 public static final String[] DTYPE_INT = {"INT"}; 192 public static final String[] DTYPE_SMALLINT = {"SMALLINT"}; 193 // APPROXIMATE NUMERIC 194 public static final String[] DTYPE_FLOAT = {"FLOAT"}; 195 public static final String[] DTYPE_REAL = {"REAL"}; 196 public static final String[] DTYPE_DOUBLE_PRECISION = {"DOUBLE", "PRECISION"}; 197 // DATE-TIME 198 public static final String[] DTYPE_DATE = {"DATE"}; 199 public static final String[] DTYPE_TIME = {"TIME"}; 200 public static final String[] DTYPE_TIMESTAMP = {"TIMESTAMP"}; 201 // INTERVAL 202 public static final String[] DTYPE_INTERVAL = {"INTERVAL"}; 203 204 public final static List<String> DATATYPE_START_WORDS = Arrays.asList(new String[] {"CHAR", "CHARACTER", "VARCHAR", 205 "NATIONAL", "NCHAR", "BIT", "NUMERIC", "DEC", "DECIMAL", "INT", "INTEGER", "SMALLINT", "FLOAT", "REAL", "DOUBLE", 206 "DATE", "TIME", "TIMESTAMP", "INTERVAL"}); 207 } 208 209 @SuppressWarnings( "nls" ) 210 public final static String[] SQL_92_RESERVED_WORDS = {"ABSOLUTE", "ACTION", "ADD", "ALL", "ALLOCATE", ALTER, "AND", "ANY", 211 "ARE", "AS", "ASC", "ASSERTION", "AT", "AUTHORIZATION", "AVG", "BEGIN", "BETWEEN", "BIT", "BIT_LENGTH", "BOTH", "BY", 212 "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG", "CHAR", "CHARACTER", "CHAR_LENGTH", "CHARACTER_LENGTH", CHECK, "CLOSE", 213 "COALESCE", "COLLATE", "COLLATION", COLUMN, "COMMIT", "CONNECT", "CONNECTION", CONSTRAINT, "CONSTRAINTS", "CONTINUE", 214 "CONVERT", "CORRESPONDING", "COUNT", CREATE, "CROSS", "CURRENT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", 215 "CURRENT_USER", "CURSOR", "DATE", "DAY", "DEALLOCATE", "DEC", "DECIMAL", DECLARE, "DEFAULT", "DEFERRABLE", "DEFERRED", 216 "DELETE", "DESC", "DESCRIBE", "DESCRIPTOR", "DIAGNOSTICS", "DISCONNECT", "DISTINCT", "DOMAIN", "DOUBLE", DROP, "ELSE", 217 "END", "END_EXEC", "ESCAPE", "EXCEPT", "EXCEPTION", "EXEC", "EXECUTE", "EXISTS", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", 218 "FIRST", "FLOAT", "FOR", FOREIGN, "FOUND", "FROM", "FULL", "GET", "GLOBAL", "GO", "GOTO", GRANT, "GROUP", "HAVING", 219 "HOUR", "IDENTITY", "IMMEDIATE", "IN", "INDICATOR", "INITIALLY", "INNER", "INPUT", "INSENSITIVE", INSERT, "INT", 220 "INTEGER", "INTERSECT", "INTERVAL", "INTO", "IS", "ISOLATION", "JOIN", KEY, "LANGUAGE", "LAST", "LEADING", "LEFT", 221 "LEVEL", "LIKE", "LOCAL", "LOWER", "MATCH", "MAX", "MIN", "MINUTE", "MODULE", "MONTH", "NAMES", "NATIONAL", "NATURAL", 222 "NCHAR", "NEXT", "NO", "NOT", "NULL", "NULLIF", "NUMERIC", "OCTET_LENGTH", "OF", ON, "ONLY", "OPEN", "OPTION", "OR", 223 "ORDER", "OUTER", "OUTPUT", "OVERLAPS", "PAD", "PARTIAL", "POSITION", "PRECISION", "PREPARE", "PRESERVE", PRIMARY, 224 "PRIOR", "PRIVILEGES", "PROCEDURE", "PUBLIC", "READ", "REAL", "REFERENCES", "RELATIVE", "RESTRICT", "REVOKE", "RIGHT", 225 "ROLLBACK", "ROWS", SCHEMA, "SCROLL", "SECOND", "SECTION", "SELECT", "SESSION", "SESSION_USER", SET, "SIZE", "SMALLINT", 226 "SOME", "SPACE", "SQL", "SQLCODE", "SQLERROR", "SQLSTATE", "SUBSTRING", "SUM", "SYSTEM_USER", TABLE, "TEMPORARY", "THEN", 227 "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TO", "TRAILING", "TRANSACTION", "TRANSLATE", "TRANSLATION", 228 "TRIM", "TRUE", "UNION", UNIQUE, "UNKNOWN", "UPDATE", "UPPER", "USAGE", "USER", "USING", "VALUE", "VALUES", "VARCHAR", 229 "VARYING", VIEW, "WHEN", "WHENEVER", "WHERE", "WITH", "WORK", "WRITE", "YEAR", "ZONE"}; 230 231 interface Problems { 232 public static final int OK = 0; 233 public static final int WARNING = 1; 234 public static final int ERROR = 2; 235 } 236 237 interface AstNodeNames { 238 public static final String TABLE_DEFINITION = "TABLE_DEFINITION"; 239 public static final String ALTER_TABLE_DEFINITION = "ALTER_TABLE_DEFINITION"; 240 public static final String COLUMN_DEFINITION = "COLUMN_DEFINITION"; 241 public static final String COLUMN_REFERENCE = "COLUMN_REFERENCE"; 242 public static final String TABLE_CONSTRAINT = "TABLE_CONSTRAINT"; 243 // public static final String TABLE_OPTION = "TABLE_OPTION"; 244 public static final String ADD_COLUMN_DEFINITION = "ADD_COLUMN_DEFINITION"; 245 public static final String ADD_TABLE_CONSTRAINT = "ADD_TABLE_CONSTRAINT"; 246 public static final String DROP_COLUMN_DEFINITION = "DROP_COLUMN_DEFINITION"; 247 public static final String DROP_TABLE_CONSTRAINT = "DROP_TABLE_CONSTRAINT"; 248 public static final String ALTER_COLUMN_DEFINITION = "ALTER_COLUMN_DEFINITION"; 249 250 } 251}