| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| OracleDatabase |
|
| 2.5;2.5 |
| 1 | package liquibase.database.core; | |
| 2 | ||
| 3 | import java.lang.reflect.Method; | |
| 4 | import java.sql.Connection; | |
| 5 | import java.util.Arrays; | |
| 6 | import java.util.List; | |
| 7 | import java.util.regex.Pattern; | |
| 8 | ||
| 9 | import liquibase.database.AbstractDatabase; | |
| 10 | import liquibase.database.DatabaseConnection; | |
| 11 | import liquibase.exception.DatabaseException; | |
| 12 | import liquibase.logging.LogFactory; | |
| 13 | import liquibase.statement.DatabaseFunction; | |
| 14 | ||
| 15 | /** | |
| 16 | * Encapsulates Oracle database support. | |
| 17 | */ | |
| 18 | public class OracleDatabase extends AbstractDatabase { | |
| 19 | public static final String PRODUCT_NAME = "oracle"; | |
| 20 | ||
| 21 | 14 | public OracleDatabase() { |
| 22 | // Setting list of Oracle's native functions | |
| 23 | 14 | databaseFunctions.add(new DatabaseFunction("SYSDATE")); |
| 24 | 14 | databaseFunctions.add(new DatabaseFunction("SYSTIMESTAMP")); |
| 25 | 14 | databaseFunctions.add(new DatabaseFunction("CURRENT_TIMESTAMP")); |
| 26 | 14 | } |
| 27 | ||
| 28 | @Override | |
| 29 | public int getPriority() { | |
| 30 | 0 | return PRIORITY_DEFAULT; |
| 31 | } | |
| 32 | ||
| 33 | @Override | |
| 34 | public void setConnection(DatabaseConnection conn) { | |
| 35 | try { | |
| 36 | 0 | Method wrappedConn = conn.getClass().getMethod("getWrappedConnection"); |
| 37 | 0 | wrappedConn.setAccessible(true); |
| 38 | 0 | Connection sqlConn = (Connection) wrappedConn.invoke(conn); |
| 39 | 0 | Method method = sqlConn.getClass().getMethod("setRemarksReporting", Boolean.TYPE); |
| 40 | 0 | method.setAccessible(true); |
| 41 | 0 | method.invoke(sqlConn, true); |
| 42 | 0 | } catch (Exception e) { |
| 43 | 0 | LogFactory.getLogger().info("Could not set remarks reporting on OracleDatabase: " + e.getMessage()); |
| 44 | ; // cannot set it. That is OK | |
| 45 | 0 | } |
| 46 | 0 | super.setConnection(conn); |
| 47 | 0 | } |
| 48 | ||
| 49 | @Override | |
| 50 | public String getTypeName() { | |
| 51 | 56 | return "oracle"; |
| 52 | } | |
| 53 | ||
| 54 | @Override | |
| 55 | public String generatePrimaryKeyName(String tableName) { | |
| 56 | 0 | if (tableName.length() > 27) { |
| 57 | 0 | return "PK_" + tableName.toUpperCase().substring(0, 27); |
| 58 | } else { | |
| 59 | 0 | return "PK_" + tableName.toUpperCase(); |
| 60 | } | |
| 61 | } | |
| 62 | ||
| 63 | @Override | |
| 64 | public boolean supportsInitiallyDeferrableColumns() { | |
| 65 | 1 | return true; |
| 66 | } | |
| 67 | ||
| 68 | @Override | |
| 69 | public String escapeDatabaseObject(String objectName) { | |
| 70 | // escape the object name if it contains any non-word characters | |
| 71 | 26 | if (objectName != null && (Pattern.compile("\\W").matcher(objectName).find() || isReservedWord(objectName))) { |
| 72 | 0 | return "\"" + objectName.trim().toUpperCase() + "\""; |
| 73 | } else { | |
| 74 | 26 | return objectName; |
| 75 | } | |
| 76 | } | |
| 77 | ||
| 78 | @Override | |
| 79 | public boolean isReservedWord(String objectName) { | |
| 80 | 20 | return reservedWords.contains(objectName.toUpperCase()); |
| 81 | } | |
| 82 | ||
| 83 | @Override | |
| 84 | public boolean supportsSequences() { | |
| 85 | 18 | return true; |
| 86 | } | |
| 87 | ||
| 88 | @Override | |
| 89 | public boolean isCorrectDatabaseImplementation(DatabaseConnection conn) throws DatabaseException { | |
| 90 | 1 | return PRODUCT_NAME.equalsIgnoreCase(conn.getDatabaseProductName()); |
| 91 | } | |
| 92 | ||
| 93 | @Override | |
| 94 | public String getDefaultDriver(String url) { | |
| 95 | 0 | if (url.startsWith("jdbc:oracle")) { |
| 96 | 0 | return "oracle.jdbc.OracleDriver"; |
| 97 | } | |
| 98 | 0 | return null; |
| 99 | } | |
| 100 | ||
| 101 | @Override | |
| 102 | public String getCurrentDateTimeFunction() { | |
| 103 | 5 | if (currentDateTimeFunction != null) { |
| 104 | 0 | return currentDateTimeFunction; |
| 105 | } | |
| 106 | 5 | return "SYSTIMESTAMP"; |
| 107 | } | |
| 108 | ||
| 109 | @Override | |
| 110 | protected String getDefaultDatabaseSchemaName() throws DatabaseException { // NOPMD | |
| 111 | 0 | return super.getDefaultDatabaseSchemaName().toUpperCase(); |
| 112 | } | |
| 113 | ||
| 114 | @Override | |
| 115 | public String escapeIndexName(String schemaName, String indexName) { | |
| 116 | 0 | String escapedIndexName = indexName; |
| 117 | 0 | if (schemaName != null) { |
| 118 | 0 | escapedIndexName = schemaName + "." + escapedIndexName; |
| 119 | } | |
| 120 | 0 | return escapedIndexName; |
| 121 | } | |
| 122 | ||
| 123 | /** | |
| 124 | * Return an Oracle date literal with the same value as a string formatted using ISO 8601. | |
| 125 | * <p/> | |
| 126 | * Convert an ISO8601 date string to one of the following results: to_date('1995-05-23', 'YYYY-MM-DD') | |
| 127 | * to_date('1995-05-23 09:23:59', 'YYYY-MM-DD HH24:MI:SS') | |
| 128 | * <p/> | |
| 129 | * Implementation restriction: Currently, only the following subsets of ISO8601 are supported: YYYY-MM-DD | |
| 130 | * YYYY-MM-DDThh:mm:ss | |
| 131 | */ | |
| 132 | @Override | |
| 133 | public String getDateLiteral(String isoDate) { | |
| 134 | 0 | String normalLiteral = super.getDateLiteral(isoDate); |
| 135 | ||
| 136 | 0 | if (isDateOnly(isoDate)) { |
| 137 | 0 | StringBuffer val = new StringBuffer(); |
| 138 | 0 | val.append("to_date("); |
| 139 | 0 | val.append(normalLiteral); |
| 140 | 0 | val.append(", 'YYYY-MM-DD')"); |
| 141 | 0 | return val.toString(); |
| 142 | 0 | } else if (isTimeOnly(isoDate)) { |
| 143 | 0 | StringBuffer val = new StringBuffer(); |
| 144 | 0 | val.append("to_date("); |
| 145 | 0 | val.append(normalLiteral); |
| 146 | 0 | val.append(", 'HH24:MI:SS')"); |
| 147 | 0 | return val.toString(); |
| 148 | 0 | } else if (isDateTime(isoDate)) { |
| 149 | 0 | normalLiteral = normalLiteral.substring(0, normalLiteral.lastIndexOf('.')) + "'"; |
| 150 | ||
| 151 | 0 | StringBuffer val = new StringBuffer(26); |
| 152 | 0 | val.append("to_date("); |
| 153 | 0 | val.append(normalLiteral); |
| 154 | 0 | val.append(", 'YYYY-MM-DD HH24:MI:SS')"); |
| 155 | 0 | return val.toString(); |
| 156 | } else { | |
| 157 | 0 | return "UNSUPPORTED:" + isoDate; |
| 158 | } | |
| 159 | } | |
| 160 | ||
| 161 | @Override | |
| 162 | public boolean isSystemTable(String catalogName, String schemaName, String tableName) { | |
| 163 | 0 | if (super.isSystemTable(catalogName, schemaName, tableName)) { |
| 164 | 0 | return true; |
| 165 | 0 | } else if (tableName.startsWith("BIN$")) { // oracle deleted table |
| 166 | 0 | return true; |
| 167 | 0 | } else if (tableName.startsWith("AQ$")) { // oracle AQ tables |
| 168 | 0 | return true; |
| 169 | 0 | } else if (tableName.startsWith("DR$")) { // oracle index tables |
| 170 | 0 | return true; |
| 171 | 0 | } else if (tableName.startsWith("SYS_IOT_OVER")) { // oracle system table |
| 172 | 0 | return true; |
| 173 | } | |
| 174 | 0 | return false; |
| 175 | } | |
| 176 | ||
| 177 | @Override | |
| 178 | public boolean shouldQuoteValue(String value) { | |
| 179 | 4 | return super.shouldQuoteValue(value) && !value.startsWith("to_date(") |
| 180 | && !value.equalsIgnoreCase(getCurrentDateTimeFunction()); | |
| 181 | } | |
| 182 | ||
| 183 | @Override | |
| 184 | public boolean supportsTablespaces() { | |
| 185 | 0 | return true; |
| 186 | } | |
| 187 | ||
| 188 | @Override | |
| 189 | public boolean supportsAutoIncrement() { | |
| 190 | 6 | return false; |
| 191 | } | |
| 192 | ||
| 193 | // public Set<UniqueConstraint> findUniqueConstraints(String schema) throws DatabaseException { | |
| 194 | // Set<UniqueConstraint> returnSet = new HashSet<UniqueConstraint>(); | |
| 195 | // | |
| 196 | // List<Map> maps = new Executor(this).queryForList(new | |
| 197 | // RawSqlStatement("SELECT UC.CONSTRAINT_NAME, UCC.TABLE_NAME, UCC.COLUMN_NAME FROM USER_CONSTRAINTS UC, USER_CONS_COLUMNS UCC WHERE UC.CONSTRAINT_NAME=UCC.CONSTRAINT_NAME AND CONSTRAINT_TYPE='U' ORDER BY UC.CONSTRAINT_NAME")); | |
| 198 | // | |
| 199 | // UniqueConstraint constraint = null; | |
| 200 | // for (Map map : maps) { | |
| 201 | // if (constraint == null || !constraint.getName().equals(constraint.getName())) { | |
| 202 | // returnSet.add(constraint); | |
| 203 | // Table table = new Table((String) map.get("TABLE_NAME")); | |
| 204 | // constraint = new UniqueConstraint(map.get("CONSTRAINT_NAME").toString(), table); | |
| 205 | // } | |
| 206 | // } | |
| 207 | // if (constraint != null) { | |
| 208 | // returnSet.add(constraint); | |
| 209 | // } | |
| 210 | // | |
| 211 | // return returnSet; | |
| 212 | // } | |
| 213 | ||
| 214 | @Override | |
| 215 | public boolean supportsRestrictForeignKeys() { | |
| 216 | 0 | return false; |
| 217 | } | |
| 218 | ||
| 219 | 14 | private List<String> reservedWords = Arrays.asList( |
| 220 | // "ACCESS", | |
| 221 | // "ACCOUNT", | |
| 222 | // "ACTIVATE", | |
| 223 | // "ADD", | |
| 224 | // "ADMIN", | |
| 225 | // "ADVISE", | |
| 226 | // "AFTER", | |
| 227 | // "ALL", | |
| 228 | // "ALL_ROWS", | |
| 229 | // "ALLOCATE", | |
| 230 | // "ALTER", | |
| 231 | // "ANALYZE", | |
| 232 | // "AND", | |
| 233 | // "ANY", | |
| 234 | // "ARCHIVE", | |
| 235 | // "ARCHIVELOG", | |
| 236 | // "ARRAY", | |
| 237 | // "AS", | |
| 238 | // "ASC", | |
| 239 | // "AT", | |
| 240 | // "AUDIT", | |
| 241 | // "AUTHENTICATED", | |
| 242 | // "AUTHORIZATION", | |
| 243 | // "AUTOEXTEND", | |
| 244 | // "AUTOMATIC", | |
| 245 | // "BACKUP", | |
| 246 | // "BECOME", | |
| 247 | // "BEFORE", | |
| 248 | // "BEGIN", | |
| 249 | // "BETWEEN", | |
| 250 | // "BFILE", | |
| 251 | // "BITMAP", | |
| 252 | // "BLOB", | |
| 253 | // "BLOCK", | |
| 254 | // "BODY", | |
| 255 | // "BY", | |
| 256 | // "CACHE", | |
| 257 | // "CACHE_INSTANCES", | |
| 258 | // "CANCEL", | |
| 259 | // "CASCADE", | |
| 260 | // "CAST", | |
| 261 | // "CFILE", | |
| 262 | // "CHAINED", | |
| 263 | // "CHANGE", | |
| 264 | // "CHAR", | |
| 265 | // "CHAR_CS", | |
| 266 | // "CHARACTER", | |
| 267 | // "CHECK", | |
| 268 | // "CHECKPOINT", | |
| 269 | // "CHOOSE", | |
| 270 | // "CHUNK", | |
| 271 | // "CLEAR", | |
| 272 | // "CLOB", | |
| 273 | // "CLONE", | |
| 274 | // "CLOSE", | |
| 275 | // "CLOSE_CACHED_OPEN_CURSORS", | |
| 276 | // "CLUSTER", | |
| 277 | // "COALESCE", | |
| 278 | // "COLUMN", | |
| 279 | // "COLUMNS", | |
| 280 | // "COMMENT", | |
| 281 | // "COMMIT", | |
| 282 | // "COMMITTED", | |
| 283 | // "COMPATIBILITY", | |
| 284 | // "COMPILE", | |
| 285 | // "COMPLETE", | |
| 286 | // "COMPOSITE_LIMIT", | |
| 287 | // "COMPRESS", | |
| 288 | // "COMPUTE", | |
| 289 | // "CONNECT", | |
| 290 | // "CONNECT_TIME", | |
| 291 | // "CONSTRAINT", | |
| 292 | // "CONSTRAINTS", | |
| 293 | // "CONTENTS", | |
| 294 | // "CONTINUE", | |
| 295 | // "CONTROLFILE", | |
| 296 | // "CONVERT", | |
| 297 | // "COST", | |
| 298 | // "CPU_PER_CALL", | |
| 299 | // "CPU_PER_SESSION", | |
| 300 | // "CREATE", | |
| 301 | // "CURRENT", | |
| 302 | // "CURRENT_SCHEMA", | |
| 303 | // "CURREN_USER", | |
| 304 | // "CURSOR", | |
| 305 | // "CYCLE", | |
| 306 | // "DANGLING", | |
| 307 | // "DATABASE", | |
| 308 | // "DATAFILE", | |
| 309 | // "DATAFILES", | |
| 310 | // "DATAOBJNO", | |
| 311 | // "DATE", | |
| 312 | // "DBA", | |
| 313 | // "DBHIGH", | |
| 314 | // "DBLOW", | |
| 315 | // "DBMAC", | |
| 316 | // "DEALLOCATE", | |
| 317 | // "DEBUG", | |
| 318 | // "DEC", | |
| 319 | // "DECIMAL", | |
| 320 | // "DECLARE", | |
| 321 | // "DEFAULT", | |
| 322 | // "DEFERRABLE", | |
| 323 | // "DEFERRED", | |
| 324 | // "DEGREE", | |
| 325 | // "DELETE", | |
| 326 | // "DEREF", | |
| 327 | // "DESC", | |
| 328 | // "DIRECTORY", | |
| 329 | // "DISABLE", | |
| 330 | // "DISCONNECT", | |
| 331 | // "DISMOUNT", | |
| 332 | // "DISTINCT", | |
| 333 | // "DISTRIBUTED", | |
| 334 | // "DML", | |
| 335 | // "DOUBLE", | |
| 336 | // "DROP", | |
| 337 | // "DUMP", | |
| 338 | // "EACH", | |
| 339 | // "ELSE", | |
| 340 | // "ENABLE", | |
| 341 | // "END", | |
| 342 | // "ENFORCE", | |
| 343 | // "ENTRY", | |
| 344 | // "ESCAPE", | |
| 345 | // "EXCEPT", | |
| 346 | // "EXCEPTIONS", | |
| 347 | // "EXCHANGE", | |
| 348 | // "EXCLUDING", | |
| 349 | // "EXCLUSIVE", | |
| 350 | // "EXECUTE", | |
| 351 | // "EXISTS", | |
| 352 | // "EXPIRE", | |
| 353 | // "EXPLAIN", | |
| 354 | // "EXTENT", | |
| 355 | // "EXTENTS", | |
| 356 | // "EXTERNALLY", | |
| 357 | // "FAILED_LOGIN_ATTEMPTS", | |
| 358 | // "FALSE", | |
| 359 | // "FAST", | |
| 360 | // "FILE", | |
| 361 | // "FIRST_ROWS", | |
| 362 | // "FLAGGER", | |
| 363 | // "FLOAT", | |
| 364 | // "FLOB", | |
| 365 | // "FLUSH", | |
| 366 | // "FOR", | |
| 367 | // "FORCE", | |
| 368 | // "FOREIGN", | |
| 369 | // "FREELIST", | |
| 370 | // "FREELISTS", | |
| 371 | // "FROM", | |
| 372 | // "FULL", | |
| 373 | // "FUNCTION", | |
| 374 | // "GLOBAL", | |
| 375 | // "GLOBALLY", | |
| 376 | // "GLOBAL_NAME", | |
| 377 | // "GRANT", | |
| 378 | // "GROUP", | |
| 379 | // "GROUPS", | |
| 380 | // "HASH", | |
| 381 | // "HASHKEYS", | |
| 382 | // "HAVING", | |
| 383 | // "HEADER", | |
| 384 | // "HEAP", | |
| 385 | // "IDENTIFIED", | |
| 386 | // "IDGENERATORS", | |
| 387 | // "IDLE_TIME", | |
| 388 | // "IF", | |
| 389 | // "IMMEDIATE", | |
| 390 | // "IN", | |
| 391 | // "INCLUDING", | |
| 392 | // "INCREMENT", | |
| 393 | // "INDEX", | |
| 394 | // "INDEXED", | |
| 395 | // "INDEXES", | |
| 396 | // "INDICATOR", | |
| 397 | // "IND_PARTITION", | |
| 398 | // "INITIAL", | |
| 399 | // "INITIALLY", | |
| 400 | // "INITRANS", | |
| 401 | // "INSERT", | |
| 402 | // "INSTANCE", | |
| 403 | // "INSTANCES", | |
| 404 | // "INSTEAD", | |
| 405 | // "INT", | |
| 406 | // "INTEGER", | |
| 407 | // "INTERMEDIATE", | |
| 408 | // "INTERSECT", | |
| 409 | // "INTO", | |
| 410 | // "IS", | |
| 411 | // "ISOLATION", | |
| 412 | // "ISOLATION_LEVEL", | |
| 413 | // "KEEP", | |
| 414 | // "KEY", | |
| 415 | // "KILL", | |
| 416 | // "LABEL", | |
| 417 | // "LAYER", | |
| 418 | // "LESS", | |
| 419 | // "LEVEL", | |
| 420 | // "LIBRARY", | |
| 421 | // "LIKE", | |
| 422 | // "LIMIT", | |
| 423 | // "LINK", | |
| 424 | // "LIST", | |
| 425 | // "LOB", | |
| 426 | // "LOCAL", | |
| 427 | // "LOCK", | |
| 428 | // "LOCKED", | |
| 429 | // "LOG", | |
| 430 | // "LOGFILE", | |
| 431 | // "LOGGING", | |
| 432 | // "LOGICAL_READS_PER_CALL", | |
| 433 | // "LOGICAL_READS_PER_SESSION", | |
| 434 | // "LONG", | |
| 435 | // "MANAGE", | |
| 436 | // "MASTER", | |
| 437 | // "MAX", | |
| 438 | // "MAXARCHLOGS", | |
| 439 | // "MAXDATAFILES", | |
| 440 | // "MAXEXTENTS", | |
| 441 | // "MAXINSTANCES", | |
| 442 | // "MAXLOGFILES", | |
| 443 | // "MAXLOGHISTORY", | |
| 444 | // "MAXLOGMEMBERS", | |
| 445 | // "MAXSIZE", | |
| 446 | // "MAXTRANS", | |
| 447 | // "MAXVALUE", | |
| 448 | // "MIN", | |
| 449 | // "MEMBER", | |
| 450 | // "MINIMUM", | |
| 451 | // "MINEXTENTS", | |
| 452 | // "MINUS", | |
| 453 | // "MINVALUE", | |
| 454 | // "MLSLABEL", | |
| 455 | // "MLS_LABEL_FORMAT", | |
| 456 | // "MODE", | |
| 457 | // "MODIFY", | |
| 458 | // "MOUNT", | |
| 459 | // "MOVE", | |
| 460 | // "MTS_DISPATCHERS", | |
| 461 | // "MULTISET", | |
| 462 | // "NATIONAL", | |
| 463 | // "NCHAR", | |
| 464 | // "NCHAR_CS", | |
| 465 | // "NCLOB", | |
| 466 | // "NEEDED", | |
| 467 | // "NESTED", | |
| 468 | // "NETWORK", | |
| 469 | // "NEW", | |
| 470 | // "NEXT", | |
| 471 | // "NOARCHIVELOG", | |
| 472 | // "NOAUDIT", | |
| 473 | // "NOCACHE", | |
| 474 | // "NOCOMPRESS", | |
| 475 | // "NOCYCLE", | |
| 476 | // "NOFORCE", | |
| 477 | // "NOLOGGING", | |
| 478 | // "NOMAXVALUE", | |
| 479 | // "NOMINVALUE", | |
| 480 | // "NONE", | |
| 481 | // "NOORDER", | |
| 482 | // "NOOVERRIDE", | |
| 483 | // "NOPARALLEL", | |
| 484 | // "NOPARALLEL", | |
| 485 | // "NOREVERSE", | |
| 486 | // "NORMAL", | |
| 487 | // "NOSORT", | |
| 488 | // "NOT", | |
| 489 | // "NOTHING", | |
| 490 | // "NOWAIT", | |
| 491 | // "NULL", | |
| 492 | // "NUMBER", | |
| 493 | // "NUMERIC", | |
| 494 | // "NVARCHAR2", | |
| 495 | // "OBJECT", | |
| 496 | // "OBJNO", | |
| 497 | // "OBJNO_REUSE", | |
| 498 | // "OF", | |
| 499 | // "OFF", | |
| 500 | // "OFFLINE", | |
| 501 | // "OID", | |
| 502 | // "OIDINDEX", | |
| 503 | // "OLD", | |
| 504 | // "ON", | |
| 505 | // "ONLINE", | |
| 506 | // "ONLY", | |
| 507 | // "OPCODE", | |
| 508 | // "OPEN", | |
| 509 | // "OPTIMAL", | |
| 510 | // "OPTIMIZER_GOAL", | |
| 511 | // "OPTION", | |
| 512 | // "OR", | |
| 513 | // "ORDER", | |
| 514 | // "ORGANIZATION", | |
| 515 | // "OSLABEL", | |
| 516 | // "OVERFLOW", | |
| 517 | // "OWN", | |
| 518 | // "PACKAGE", | |
| 519 | // "PARALLEL", | |
| 520 | // "PARTITION", | |
| 521 | // "PASSWORD", | |
| 522 | // "PASSWORD_GRACE_TIME", | |
| 523 | // "PASSWORD_LIFE_TIME", | |
| 524 | // "PASSWORD_LOCK_TIME", | |
| 525 | // "PASSWORD_REUSE_MAX", | |
| 526 | // "PASSWORD_REUSE_TIME", | |
| 527 | // "PASSWORD_VERIFY_FUNCTION", | |
| 528 | // "PCTFREE", | |
| 529 | // "PCTINCREASE", | |
| 530 | // "PCTTHRESHOLD", | |
| 531 | // "PCTUSED", | |
| 532 | // "PCTVERSION", | |
| 533 | // "PERCENT", | |
| 534 | // "PERMANENT", | |
| 535 | // "PLAN", | |
| 536 | // "PLSQL_DEBUG", | |
| 537 | // "POST_TRANSACTION", | |
| 538 | // "PRECISION", | |
| 539 | // "PRESERVE", | |
| 540 | // "PRIMARY", | |
| 541 | // "PRIOR", | |
| 542 | // "PRIVATE", | |
| 543 | // "PRIVATE_SGA", | |
| 544 | // "PRIVILEGE", | |
| 545 | // "PRIVILEGES", | |
| 546 | // "PROCEDURE", | |
| 547 | // "PROFILE", | |
| 548 | // "PUBLIC", | |
| 549 | // "PURGE", | |
| 550 | // "QUEUE", | |
| 551 | // "QUOTA", | |
| 552 | // "RANGE", | |
| 553 | // "RAW", | |
| 554 | // "RBA", | |
| 555 | // "READ", | |
| 556 | // "READUP", | |
| 557 | // "REAL", | |
| 558 | // "REBUILD", | |
| 559 | // "RECOVER", | |
| 560 | // "RECOVERABLE", | |
| 561 | // "RECOVERY", | |
| 562 | // "REF", | |
| 563 | // "REFERENCES", | |
| 564 | // "REFERENCING", | |
| 565 | // "REFRESH", | |
| 566 | // "RENAME", | |
| 567 | // "REPLACE", | |
| 568 | // "RESET", | |
| 569 | // "RESETLOGS", | |
| 570 | // "RESIZE", | |
| 571 | // "RESOURCE", | |
| 572 | // "RESTRICTED", | |
| 573 | // "RETURN", | |
| 574 | // "RETURNING", | |
| 575 | // "REUSE", | |
| 576 | // "REVERSE", | |
| 577 | // "REVOKE", | |
| 578 | // "ROLE", | |
| 579 | // "ROLES", | |
| 580 | // "ROLLBACK", | |
| 581 | // "ROW", | |
| 582 | // "ROWID", | |
| 583 | // "ROWNUM", | |
| 584 | // "ROWS", | |
| 585 | // "RULE", | |
| 586 | // "SAMPLE", | |
| 587 | // "SAVEPOINT", | |
| 588 | // "SB4", | |
| 589 | // "SCAN_INSTANCES", | |
| 590 | // "SCHEMA", | |
| 591 | // "SCN", | |
| 592 | // "SCOPE", | |
| 593 | // "SD_ALL", | |
| 594 | // "SD_INHIBIT", | |
| 595 | // "SD_SHOW", | |
| 596 | // "SEGMENT", | |
| 597 | // "SEG_BLOCK", | |
| 598 | // "SEG_FILE", | |
| 599 | // "SELECT", | |
| 600 | // "SEQUENCE", | |
| 601 | // "SERIALIZABLE", | |
| 602 | "SESSION", | |
| 603 | // "SESSION_CACHED_CURSORS", | |
| 604 | // "SESSIONS_PER_USER", | |
| 605 | // "SET", | |
| 606 | // "SHARE", | |
| 607 | // "SHARED", | |
| 608 | // "SHARED_POOL", | |
| 609 | // "SHRINK", | |
| 610 | // "SIZE", | |
| 611 | // "SKIP", | |
| 612 | // "SKIP_UNUSABLE_INDEXES", | |
| 613 | // "SMALLINT", | |
| 614 | // "SNAPSHOT", | |
| 615 | // "SOME", | |
| 616 | // "SORT", | |
| 617 | // "SPECIFICATION", | |
| 618 | // "SPLIT", | |
| 619 | // "SQL_TRACE", | |
| 620 | // "STANDBY", | |
| 621 | // "START", | |
| 622 | // "STATEMENT_ID", | |
| 623 | // "STATISTICS", | |
| 624 | // "STOP", | |
| 625 | // "STORAGE", | |
| 626 | // "STORE", | |
| 627 | // "STRUCTURE", | |
| 628 | // "SUCCESSFUL", | |
| 629 | // "SWITCH", | |
| 630 | // "SYS_OP_ENFORCE_NOT_NULL", | |
| 631 | // "SYS_OP_NTCIMG", | |
| 632 | // "SYNONYM", | |
| 633 | // "SYSDATE", | |
| 634 | // "SYSDBA", | |
| 635 | // "SYSOPER", | |
| 636 | // "SYSTEM", | |
| 637 | // "TABLE", | |
| 638 | // "TABLES", | |
| 639 | // "TABNO", | |
| 640 | // "TEMPORARY", | |
| 641 | // "THAN", | |
| 642 | // "THE", | |
| 643 | // "THEN", | |
| 644 | // "THREAD", | |
| 645 | // "TIMESTAMP", | |
| 646 | // "TIME", | |
| 647 | // "TO", | |
| 648 | // "TOPLEVEL", | |
| 649 | // "TRACE", | |
| 650 | // "TRACING", | |
| 651 | // "TRANSACTION", | |
| 652 | // "TRANSITIONAL", | |
| 653 | // "TRIGGER", | |
| 654 | // "TRIGGERS", | |
| 655 | // "TRUE", | |
| 656 | // "TRUNCATE", | |
| 657 | // "TX", | |
| 658 | // "TYPE", | |
| 659 | // "UB2", | |
| 660 | // "UBA", | |
| 661 | // "UID", | |
| 662 | // "UNARCHIVED", | |
| 663 | // "UNDO", | |
| 664 | // "UNION", | |
| 665 | // "UNIQUE", | |
| 666 | // "UNLIMITED", | |
| 667 | // "UNLOCK", | |
| 668 | // "UNRECOVERABLE", | |
| 669 | // "UNTIL", | |
| 670 | // "UNUSABLE", | |
| 671 | // "UNUSED", | |
| 672 | // "UPDATABLE", | |
| 673 | // "UPDATE", | |
| 674 | // "USAGE", | |
| 675 | // "USE", | |
| 676 | "USER" | |
| 677 | // "USING", | |
| 678 | // "VALIDATE", | |
| 679 | // "VALIDATION", | |
| 680 | // "VALUE", | |
| 681 | // "VALUES", | |
| 682 | // "VARCHAR", | |
| 683 | // "VARCHAR2", | |
| 684 | // "VARYING", | |
| 685 | // "VIEW", | |
| 686 | // "WHEN", | |
| 687 | // "WHENEVER", | |
| 688 | // "WHERE", | |
| 689 | // "WITH", | |
| 690 | // "WITHOUT", | |
| 691 | // "WORK", | |
| 692 | // "WRITE", | |
| 693 | // "WRITEDOWN", | |
| 694 | // "WRITEUP", | |
| 695 | // "XID", | |
| 696 | // "YEAR" | |
| 697 | ); | |
| 698 | } |