diff --git a/sql/plsql/.trgen-ignore b/sql/plsql/.trgen-ignore index b23ed01da9..69a09336fb 100644 --- a/sql/plsql/.trgen-ignore +++ b/sql/plsql/.trgen-ignore @@ -1,2 +1,2 @@ examples/ -examples-sql-script/ +more/ diff --git a/sql/plsql/Antlr4ng/PlSqlLexerBase.ts b/sql/plsql/Antlr4ng/PlSqlLexerBase.ts new file mode 100644 index 0000000000..ce696f0e54 --- /dev/null +++ b/sql/plsql/Antlr4ng/PlSqlLexerBase.ts @@ -0,0 +1,11 @@ +import { CommonToken, Lexer, CharStream, Token, CommonTokenStream } from "antlr4ng"; + +export abstract class PlSqlLexerBase extends Lexer { + self : PlSqlLexerBase; + + IsNewlineAtPos(pos: number): boolean { + const la = this.inputStream.LA(pos); + return la == -1 || String.fromCharCode(la) == '\n'; + } + +} \ No newline at end of file diff --git a/sql/plsql/Antlr4ng/PlSqlParserBase.ts b/sql/plsql/Antlr4ng/PlSqlParserBase.ts new file mode 100644 index 0000000000..9ddf1c4068 --- /dev/null +++ b/sql/plsql/Antlr4ng/PlSqlParserBase.ts @@ -0,0 +1,30 @@ +import { Parser, TokenStream, CommonTokenStream, Recognizer } from 'antlr4ng'; + +export abstract class PlSqlParserBase extends Parser { + + _isVersion10: boolean; + _isVersion12: boolean; + + constructor(input: TokenStream) { + super(input); + this._isVersion10 = true; + this._isVersion12 = true; + } + + isVersion10(): boolean { + return this._isVersion10; + } + + isVersion12(): boolean { + return this._isVersion12; + } + + setVersion10(value: boolean): void { + this._isVersion10 = value; + } + + setVersion12(value: boolean): void { + this._isVersion12 = value; + } + +} \ No newline at end of file diff --git a/sql/plsql/Antlr4ng/transformGrammar.py b/sql/plsql/Antlr4ng/transformGrammar.py new file mode 100644 index 0000000000..e273b4220c --- /dev/null +++ b/sql/plsql/Antlr4ng/transformGrammar.py @@ -0,0 +1,33 @@ +"""The script transforms the grammar to fit for the c++ target """ +import sys +import re +import shutil +from glob import glob +from pathlib import Path + +def main(): + """Executes the script.""" + for file in glob("./*.g4"): + transform_grammar(file) + +def transform_grammar(file_path): + """Transforms the grammar to fit for the target""" + print("Altering " + file_path) + if not Path(file_path).is_file: + print(f"Could not find file: {file_path}") + sys.exit(1) + + shutil.move(file_path, file_path + ".bak") + with open(file_path + ".bak",'r', encoding="utf-8") as input_file: + with open(file_path, 'w', encoding="utf-8") as output_file: + for line in input_file: + line = re.sub(r"(\/\/ Insert here @header for C\+\+ lexer\.)",\ + '@header {import { PlSqlLexerBase } from "./PlSqlLexerBase.js"}', line) + line = re.sub(r"(\/\/ Insert here @header for C\+\+ parser\.)",\ + '@header {import { PlSqlParserBase } from "./PlSqlParserBase.js"}', line) + output_file.write(line) + + print("Writing ...") + +if __name__ == '__main__': + main() diff --git a/sql/plsql/CSharp/PlSqlLexerBase.cs b/sql/plsql/CSharp/PlSqlLexerBase.cs index 556649fb93..f114c37e3f 100644 --- a/sql/plsql/CSharp/PlSqlLexerBase.cs +++ b/sql/plsql/CSharp/PlSqlLexerBase.cs @@ -7,7 +7,6 @@ public class PlSqlLexerBase : Lexer { ICharStream myinput; - public PlSqlLexerBase self; public override string[] RuleNames => throw new NotImplementedException(); @@ -19,14 +18,12 @@ protected PlSqlLexerBase(ICharStream input, TextWriter output, TextWriter errorO : base(input, output, errorOutput) { myinput = input; - self = this; } public PlSqlLexerBase(ICharStream input) : base(input) { myinput = input; - self = this; } public bool IsNewlineAtPos(int pos) diff --git a/sql/plsql/CSharp/PlSqlParserBase.cs b/sql/plsql/CSharp/PlSqlParserBase.cs index 86d558c476..2eb82140c3 100644 --- a/sql/plsql/CSharp/PlSqlParserBase.cs +++ b/sql/plsql/CSharp/PlSqlParserBase.cs @@ -8,12 +8,10 @@ public abstract class PlSqlParserBase : Parser { private bool _isVersion10 = false; private bool _isVersion12 = true; - public PlSqlParserBase self; protected PlSqlParserBase(ITokenStream input) : base(input) { - self = this; } public PlSqlParserBase(ITokenStream input, TextWriter output, TextWriter errorOutput) : this(input) diff --git a/sql/plsql/Cpp/PlSqlLexerBase.h b/sql/plsql/Cpp/PlSqlLexerBase.h index 32ed7ab1b1..3b649f4f81 100644 --- a/sql/plsql/Cpp/PlSqlLexerBase.h +++ b/sql/plsql/Cpp/PlSqlLexerBase.h @@ -1,22 +1,15 @@ -#ifndef PLSQLLEXERBASE_H -#define PLSQLLEXERBASE_H - +#pragma once #include "antlr4-runtime.h" class PlSqlLexerBase : public antlr4::Lexer { public: - PlSqlLexerBase(antlr4::CharStream *input) : Lexer(input), self(*this) { } - -public: - PlSqlLexerBase & self; + PlSqlLexerBase(antlr4::CharStream *input) : Lexer(input) { }; public: bool IsNewlineAtPos(int pos) { int la = _input->LA(pos); return la == -1 || la == '\n'; - } + }; }; - -#endif \ No newline at end of file diff --git a/sql/plsql/Cpp/PlSqlParserBase.h b/sql/plsql/Cpp/PlSqlParserBase.h index e7c044d37d..b9a27b8f12 100644 --- a/sql/plsql/Cpp/PlSqlParserBase.h +++ b/sql/plsql/Cpp/PlSqlParserBase.h @@ -7,11 +7,9 @@ class PlSqlParserBase : public antlr4::Parser { bool _isVersion12 = true; bool _isVersion10 = true; - public: - PlSqlParserBase & self; public: - PlSqlParserBase(antlr4::TokenStream *input) : Parser(input), self(*this) { } + PlSqlParserBase(antlr4::TokenStream *input) : Parser(input) { } bool isVersion12() { diff --git a/sql/plsql/Cpp/st.CMakeLists.txt b/sql/plsql/Cpp/st.CMakeLists.txt new file mode 100644 index 0000000000..a1ab69139b --- /dev/null +++ b/sql/plsql/Cpp/st.CMakeLists.txt @@ -0,0 +1,73 @@ +# Generated from trgen + +cmake_minimum_required (VERSION 3.14) +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + +set(CMAKE_CXX_STANDARD 17) +set(ANTLR4_TAG 4.13.1) +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) +#SET(GCC_COVERAGE_COMPILE_FLAGS "-g -pg") +#SET(GCC_COVERAGE_LINK_FLAGS "-g -pg") + +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT /bigobj") + +#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}") +#SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}") + +add_definitions(-DANTLR4CPP_STATIC) + +include(ExternalAntlr4Cpp) +include_directories(${ANTLR4_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/) +find_package(ANTLR REQUIRED) + + +antlr_target( + + + ) + +include_directories(${ANTLR4_INCLUDE_DIRS}) +include_directories(${ANTLR__OUTPUT_DIR}) + +add_executable(Test + Test.cpp + ErrorListener.cpp + ErrorListener.h + + } >${ANTLR__CXX_OUTPUTS} + ) + + +antlr_target( + + + LEXER + ) +antlr_target( + + + PARSER + DEPENDS_ANTLR + COMPILE_FLAGS -lib ${ANTLR__OUTPUT_DIR} + ) + +include_directories(${ANTLR__OUTPUT_DIR}) +include_directories(${ANTLR__OUTPUT_DIR}) + +add_executable(Test + Test.cpp + ErrorListener.cpp + ErrorListener.h + + } >${ANTLR__CXX_OUTPUTS} + ${ANTLR__CXX_OUTPUTS} + ) + + + + +target_compile_options(Test PUBLIC /MT /bigobj) + + +target_link_libraries(Test antlr4_static Threads::Threads) diff --git a/sql/plsql/Cpp/transformGrammar.py b/sql/plsql/Cpp/transformGrammar.py new file mode 100644 index 0000000000..23dd323a30 --- /dev/null +++ b/sql/plsql/Cpp/transformGrammar.py @@ -0,0 +1,34 @@ +import sys, os, re, shutil +from glob import glob +from pathlib import Path + +def main(argv): + for file in glob("./*.g4"): + fix(file) + +def fix(file_path): + print("Altering " + file_path) + if not os.path.exists(file_path): + print(f"Could not find file: {file_path}") + sys.exit(1) + parts = os.path.split(file_path) + file_name = parts[-1] + shutil.move(file_path, file_path + ".bak") + input_file = open(file_path + ".bak",'r') + output_file = open(file_path, 'w') + for x in input_file: + if '// Insert here @header for C++ lexer.' in x: + x = x.replace('// Insert here @header for C++ lexer.', '@header {#include "PlSqlLexerBase.h"}') + if '// Insert here @header for C++ parser.' in x: + x = x.replace('// Insert here @header for C++ parser.', '@header {#include "PlSqlParserBase.h"}') + if 'this.' in x: + x = x.replace('this.', 'this->') + output_file.write(x) + output_file.flush() + + print("Writing ...") + input_file.close() + output_file.close() + +if __name__ == '__main__': + main(sys.argv) diff --git a/sql/plsql/Dart/PlSqlLexer.g4 b/sql/plsql/Dart/PlSqlLexer.g4 deleted file mode 100644 index 7eb85c24ac..0000000000 --- a/sql/plsql/Dart/PlSqlLexer.g4 +++ /dev/null @@ -1,2385 +0,0 @@ -/** - * Oracle(c) PL/SQL 11g Parser - * - * Copyright (c) 2009-2011 Alexandre Porcelli - * Copyright (c) 2015-2019 Ivan Kochurkin (KvanTTT, kvanttt@gmail.com, Positive Technologies). - * Copyright (c) 2017 Mark Adams - * - * 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. - */ - -// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false -// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine -// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true - -lexer grammar PlSqlLexer; - -options { - superClass = PlSqlLexerBase; -} - -@lexer::header { - import 'PlSqlLexerBase.dart'; -} - -@lexer::postinclude { -#include -} - -ABORT : 'ABORT'; -ABS : 'ABS'; -ACCESS : 'ACCESS'; -ACCESSED : 'ACCESSED'; -ACCOUNT : 'ACCOUNT'; -ACL : 'ACL'; -ACOS : 'ACOS'; -ACTION : 'ACTION'; -ACTIONS : 'ACTIONS'; -ACTIVATE : 'ACTIVATE'; -ACTIVE : 'ACTIVE'; -ACTIVE_COMPONENT : 'ACTIVE_COMPONENT'; -ACTIVE_DATA : 'ACTIVE_DATA'; -ACTIVE_FUNCTION : 'ACTIVE_FUNCTION'; -ACTIVE_TAG : 'ACTIVE_TAG'; -ACTIVITY : 'ACTIVITY'; -ADAPTIVE_PLAN : 'ADAPTIVE_PLAN'; -ADD : 'ADD'; -ADD_COLUMN : 'ADD_COLUMN'; -ADD_GROUP : 'ADD_GROUP'; -ADD_MONTHS : 'ADD_MONTHS'; -ADJ_DATE : 'ADJ_DATE'; -ADMIN : 'ADMIN'; -ADMINISTER : 'ADMINISTER'; -ADMINISTRATOR : 'ADMINISTRATOR'; -ADVANCED : 'ADVANCED'; -ADVISE : 'ADVISE'; -ADVISOR : 'ADVISOR'; -AFD_DISKSTRING : 'AFD_DISKSTRING'; -AFTER : 'AFTER'; -AGENT : 'AGENT'; -AGGREGATE : 'AGGREGATE'; -A_LETTER : 'A'; -ALIAS : 'ALIAS'; -ALL : 'ALL'; -ALLOCATE : 'ALLOCATE'; -ALLOW : 'ALLOW'; -ALL_ROWS : 'ALL_ROWS'; -ALTER : 'ALTER'; -ALWAYS : 'ALWAYS'; -ANALYZE : 'ANALYZE'; -ANCILLARY : 'ANCILLARY'; -AND : 'AND'; -AND_EQUAL : 'AND_EQUAL'; -ANOMALY : 'ANOMALY'; -ANSI_REARCH : 'ANSI_REARCH'; -ANTIJOIN : 'ANTIJOIN'; -ANY : 'ANY'; -ANYSCHEMA : 'ANYSCHEMA'; -APPEND : 'APPEND'; -APPENDCHILDXML : 'APPENDCHILDXML'; -APPEND_VALUES : 'APPEND_VALUES'; -APPLICATION : 'APPLICATION'; -APPLY : 'APPLY'; -APPROX_COUNT_DISTINCT : 'APPROX_COUNT_DISTINCT'; -ARCHIVAL : 'ARCHIVAL'; -ARCHIVE : 'ARCHIVE'; -ARCHIVED : 'ARCHIVED'; -ARCHIVELOG : 'ARCHIVELOG'; -ARRAY : 'ARRAY'; -AS : 'AS'; -ASC : 'ASC'; -ASCII : 'ASCII'; -ASCIISTR : 'ASCIISTR'; -ASIN : 'ASIN'; -ASIS : 'ASIS'; -ASSEMBLY : 'ASSEMBLY'; -ASSIGN : 'ASSIGN'; -ASSOCIATE : 'ASSOCIATE'; -ASYNC : 'ASYNC'; -ASYNCHRONOUS : 'ASYNCHRONOUS'; -ATAN2 : 'ATAN2'; -ATAN : 'ATAN'; -AT : 'AT'; -ATTRIBUTE : 'ATTRIBUTE'; -ATTRIBUTES : 'ATTRIBUTES'; -AUDIT : 'AUDIT'; -AUTHENTICATED : 'AUTHENTICATED'; -AUTHENTICATION : 'AUTHENTICATION'; -AUTHID : 'AUTHID'; -AUTHORIZATION : 'AUTHORIZATION'; -AUTOALLOCATE : 'AUTOALLOCATE'; -AUTO : 'AUTO'; -AUTOBACKUP : 'AUTOBACKUP'; -AUTOEXTEND : 'AUTOEXTEND'; -AUTO_LOGIN : 'AUTO_LOGIN'; -AUTOMATIC : 'AUTOMATIC'; -AUTONOMOUS_TRANSACTION : 'AUTONOMOUS_TRANSACTION'; -AUTO_REOPTIMIZE : 'AUTO_REOPTIMIZE'; -AVAILABILITY : 'AVAILABILITY'; -AVRO : 'AVRO'; -BACKGROUND : 'BACKGROUND'; -BACKUP : 'BACKUP'; -BACKUPSET : 'BACKUPSET'; -BASIC : 'BASIC'; -BASICFILE : 'BASICFILE'; -BATCH : 'BATCH'; -BATCHSIZE : 'BATCHSIZE'; -BATCH_TABLE_ACCESS_BY_ROWID : 'BATCH_TABLE_ACCESS_BY_ROWID'; -BECOME : 'BECOME'; -BEFORE : 'BEFORE'; -BEGIN : 'BEGIN'; -BEGINNING : 'BEGINNING'; -BEGIN_OUTLINE_DATA : 'BEGIN_OUTLINE_DATA'; -BEHALF : 'BEHALF'; -BEQUEATH : 'BEQUEATH'; -BETWEEN : 'BETWEEN'; -BFILE : 'BFILE'; -BFILENAME : 'BFILENAME'; -BIGFILE : 'BIGFILE'; -BINARY : 'BINARY'; -BINARY_DOUBLE : 'BINARY_DOUBLE'; -BINARY_DOUBLE_INFINITY : 'BINARY_DOUBLE_INFINITY'; -BINARY_DOUBLE_NAN : 'BINARY_DOUBLE_NAN'; -BINARY_FLOAT : 'BINARY_FLOAT'; -BINARY_FLOAT_INFINITY : 'BINARY_FLOAT_INFINITY'; -BINARY_FLOAT_NAN : 'BINARY_FLOAT_NAN'; -BINARY_INTEGER : 'BINARY_INTEGER'; -BIND_AWARE : 'BIND_AWARE'; -BINDING : 'BINDING'; -BIN_TO_NUM : 'BIN_TO_NUM'; -BITAND : 'BITAND'; -BITMAP_AND : 'BITMAP_AND'; -BITMAP : 'BITMAP'; -BITMAPS : 'BITMAPS'; -BITMAP_TREE : 'BITMAP_TREE'; -BITS : 'BITS'; -BLOB : 'BLOB'; -BLOCK : 'BLOCK'; -BLOCK_RANGE : 'BLOCK_RANGE'; -BLOCKS : 'BLOCKS'; -BLOCKSIZE : 'BLOCKSIZE'; -BODY : 'BODY'; -BOOLEAN : 'BOOLEAN'; -BOTH : 'BOTH'; -BOUND : 'BOUND'; -BRANCH : 'BRANCH'; -BREADTH : 'BREADTH'; -BROADCAST : 'BROADCAST'; -BSON : 'BSON'; -BUFFER : 'BUFFER'; -BUFFER_CACHE : 'BUFFER_CACHE'; -BUFFER_POOL : 'BUFFER_POOL'; -BUILD : 'BUILD'; -BULK : 'BULK'; -BY : 'BY'; -BYPASS_RECURSIVE_CHECK : 'BYPASS_RECURSIVE_CHECK'; -BYPASS_UJVC : 'BYPASS_UJVC'; -BYTE : 'BYTE'; -CACHE : 'CACHE'; -CACHE_CB : 'CACHE_CB'; -CACHE_INSTANCES : 'CACHE_INSTANCES'; -CACHE_TEMP_TABLE : 'CACHE_TEMP_TABLE'; -CACHING : 'CACHING'; -CALCULATED : 'CALCULATED'; -CALLBACK : 'CALLBACK'; -CALL : 'CALL'; -CANCEL : 'CANCEL'; -CANONICAL : 'CANONICAL'; -CAPACITY : 'CAPACITY'; -CARDINALITY : 'CARDINALITY'; -CASCADE : 'CASCADE'; -CASE : 'CASE'; -CAST : 'CAST'; -CATEGORY : 'CATEGORY'; -CDBDEFAULT : 'CDB$DEFAULT'; -CEIL : 'CEIL'; -CELL_FLASH_CACHE : 'CELL_FLASH_CACHE'; -CERTIFICATE : 'CERTIFICATE'; -CFILE : 'CFILE'; -CHAINED : 'CHAINED'; -CHANGE : 'CHANGE'; -CHANGETRACKING : 'CHANGETRACKING'; -CHANGE_DUPKEY_ERROR_INDEX : 'CHANGE_DUPKEY_ERROR_INDEX'; -CHARACTER : 'CHARACTER'; -CHAR : 'CHAR'; -CHAR_CS : 'CHAR_CS'; -CHARTOROWID : 'CHARTOROWID'; -CHECK_ACL_REWRITE : 'CHECK_ACL_REWRITE'; -CHECK : 'CHECK'; -CHECKPOINT : 'CHECKPOINT'; -CHILD : 'CHILD'; -CHOOSE : 'CHOOSE'; -CHR : 'CHR'; -CHUNK : 'CHUNK'; -CLASS : 'CLASS'; -CLASSIFIER : 'CLASSIFIER'; -CLEANUP : 'CLEANUP'; -CLEAR : 'CLEAR'; -C_LETTER : 'C'; -CLIENT : 'CLIENT'; -CLOB : 'CLOB'; -CLONE : 'CLONE'; -CLOSE_CACHED_OPEN_CURSORS : 'CLOSE_CACHED_OPEN_CURSORS'; -CLOSE : 'CLOSE'; -CLUSTER_BY_ROWID : 'CLUSTER_BY_ROWID'; -CLUSTER : 'CLUSTER'; -CLUSTER_DETAILS : 'CLUSTER_DETAILS'; -CLUSTER_DISTANCE : 'CLUSTER_DISTANCE'; -CLUSTER_ID : 'CLUSTER_ID'; -CLUSTERING : 'CLUSTERING'; -CLUSTERING_FACTOR : 'CLUSTERING_FACTOR'; -CLUSTER_PROBABILITY : 'CLUSTER_PROBABILITY'; -CLUSTER_SET : 'CLUSTER_SET'; -COALESCE : 'COALESCE'; -COALESCE_SQ : 'COALESCE_SQ'; -COARSE : 'COARSE'; -CO_AUTH_IND : 'CO_AUTH_IND'; -COLD : 'COLD'; -COLLECT : 'COLLECT'; -COLUMNAR : 'COLUMNAR'; -COLUMN_AUTH_INDICATOR : 'COLUMN_AUTH_INDICATOR'; -COLUMN : 'COLUMN'; -COLUMNS : 'COLUMNS'; -COLUMN_STATS : 'COLUMN_STATS'; -COLUMN_VALUE : 'COLUMN_VALUE'; -COMMENT : 'COMMENT'; -COMMIT : 'COMMIT'; -COMMITTED : 'COMMITTED'; -COMMON_DATA : 'COMMON_DATA'; -COMPACT : 'COMPACT'; -COMPATIBILITY : 'COMPATIBILITY'; -COMPILE : 'COMPILE'; -COMPLETE : 'COMPLETE'; -COMPLIANCE : 'COMPLIANCE'; -COMPONENT : 'COMPONENT'; -COMPONENTS : 'COMPONENTS'; -COMPOSE : 'COMPOSE'; -COMPOSITE : 'COMPOSITE'; -COMPOSITE_LIMIT : 'COMPOSITE_LIMIT'; -COMPOUND : 'COMPOUND'; -COMPRESS : 'COMPRESS'; -COMPUTE : 'COMPUTE'; -CONCAT : 'CONCAT'; -CON_DBID_TO_ID : 'CON_DBID_TO_ID'; -CONDITIONAL : 'CONDITIONAL'; -CONDITION : 'CONDITION'; -CONFIRM : 'CONFIRM'; -CONFORMING : 'CONFORMING'; -CON_GUID_TO_ID : 'CON_GUID_TO_ID'; -CON_ID : 'CON_ID'; -CON_NAME_TO_ID : 'CON_NAME_TO_ID'; -CONNECT_BY_CB_WHR_ONLY : 'CONNECT_BY_CB_WHR_ONLY'; -CONNECT_BY_COMBINE_SW : 'CONNECT_BY_COMBINE_SW'; -CONNECT_BY_COST_BASED : 'CONNECT_BY_COST_BASED'; -CONNECT_BY_ELIM_DUPS : 'CONNECT_BY_ELIM_DUPS'; -CONNECT_BY_FILTERING : 'CONNECT_BY_FILTERING'; -CONNECT_BY_ISCYCLE : 'CONNECT_BY_ISCYCLE'; -CONNECT_BY_ISLEAF : 'CONNECT_BY_ISLEAF'; -CONNECT_BY_ROOT : 'CONNECT_BY_ROOT'; -CONNECT : 'CONNECT'; -CONNECT_TIME : 'CONNECT_TIME'; -CONSIDER : 'CONSIDER'; -CONSISTENT : 'CONSISTENT'; -CONSTANT : 'CONSTANT'; -CONST : 'CONST'; -CONSTRAINT : 'CONSTRAINT'; -CONSTRAINTS : 'CONSTRAINTS'; -CONSTRUCTOR : 'CONSTRUCTOR'; -CONTAINER : 'CONTAINER'; -CONTAINER_DATA : 'CONTAINER_DATA'; -CONTAINERS : 'CONTAINERS'; -CONTENT : 'CONTENT'; -CONTENTS : 'CONTENTS'; -CONTEXT : 'CONTEXT'; -CONTINUE : 'CONTINUE'; -CONTROLFILE : 'CONTROLFILE'; -CON_UID_TO_ID : 'CON_UID_TO_ID'; -CONVERT : 'CONVERT'; -COOKIE : 'COOKIE'; -COPY : 'COPY'; -CORR_K : 'CORR_K'; -CORR_S : 'CORR_S'; -CORRUPTION : 'CORRUPTION'; -CORRUPT_XID_ALL : 'CORRUPT_XID_ALL'; -CORRUPT_XID : 'CORRUPT_XID'; -COS : 'COS'; -COSH : 'COSH'; -COST : 'COST'; -COST_XML_QUERY_REWRITE : 'COST_XML_QUERY_REWRITE'; -COUNT : 'COUNT'; -COVAR_POP : 'COVAR_POP'; -COVAR_SAMP : 'COVAR_SAMP'; -CPU_COSTING : 'CPU_COSTING'; -CPU_PER_CALL : 'CPU_PER_CALL'; -CPU_PER_SESSION : 'CPU_PER_SESSION'; -CRASH : 'CRASH'; -CREATE : 'CREATE'; -CREATE_FILE_DEST : 'CREATE_FILE_DEST'; -CREATE_STORED_OUTLINES : 'CREATE_STORED_OUTLINES'; -CREATION : 'CREATION'; -CREDENTIAL : 'CREDENTIAL'; -CRITICAL : 'CRITICAL'; -CROSS : 'CROSS'; -CROSSEDITION : 'CROSSEDITION'; -CSCONVERT : 'CSCONVERT'; -CUBE_AJ : 'CUBE_AJ'; -CUBE : 'CUBE'; -CUBE_GB : 'CUBE_GB'; -CUBE_SJ : 'CUBE_SJ'; -CUME_DISTM : 'CUME_DISTM'; -CURRENT : 'CURRENT'; -CURRENT_DATE : 'CURRENT_DATE'; -CURRENT_SCHEMA : 'CURRENT_SCHEMA'; -CURRENT_TIME : 'CURRENT_TIME'; -CURRENT_TIMESTAMP : 'CURRENT_TIMESTAMP'; -CURRENT_USER : 'CURRENT_USER'; -CURRENTV : 'CURRENTV'; -CURSOR : 'CURSOR'; -CURSOR_SHARING_EXACT : 'CURSOR_SHARING_EXACT'; -CURSOR_SPECIFIC_SEGMENT : 'CURSOR_SPECIFIC_SEGMENT'; -CUSTOMDATUM : 'CUSTOMDATUM'; -CV : 'CV'; -CYCLE : 'CYCLE'; -DANGLING : 'DANGLING'; -DATABASE : 'DATABASE'; -DATA : 'DATA'; -DATAFILE : 'DATAFILE'; -DATAFILES : 'DATAFILES'; -DATAGUARDCONFIG : 'DATAGUARDCONFIG'; -DATAMOVEMENT : 'DATAMOVEMENT'; -DATAOBJNO : 'DATAOBJNO'; -DATAOBJ_TO_MAT_PARTITION : 'DATAOBJ_TO_MAT_PARTITION'; -DATAOBJ_TO_PARTITION : 'DATAOBJ_TO_PARTITION'; -DATAPUMP : 'DATAPUMP'; -DATA_SECURITY_REWRITE_LIMIT : 'DATA_SECURITY_REWRITE_LIMIT'; -DATE : 'DATE'; -DATE_MODE : 'DATE_MODE'; -DAY : 'DAY'; -DAYS : 'DAYS'; -DBA : 'DBA'; -DBA_RECYCLEBIN : 'DBA_RECYCLEBIN'; -DBMS_STATS : 'DBMS_STATS'; -DB_ROLE_CHANGE : 'DB_ROLE_CHANGE'; -DBTIMEZONE : 'DBTIMEZONE'; -DB_UNIQUE_NAME : 'DB_UNIQUE_NAME'; -DB_VERSION : 'DB_VERSION'; -DDL : 'DDL'; -DEALLOCATE : 'DEALLOCATE'; -DEBUG : 'DEBUG'; -DEBUGGER : 'DEBUGGER'; -DEC : 'DEC'; -DECIMAL : 'DECIMAL'; -DECLARE : 'DECLARE'; -DECOMPOSE : 'DECOMPOSE'; -DECORRELATE : 'DECORRELATE'; -DECR : 'DECR'; -DECREMENT : 'DECREMENT'; -DECRYPT : 'DECRYPT'; -DEDUPLICATE : 'DEDUPLICATE'; -DEFAULT : 'DEFAULT'; -DEFAULTS : 'DEFAULTS'; -DEFERRABLE : 'DEFERRABLE'; -DEFERRED : 'DEFERRED'; -DEFINED : 'DEFINED'; -DEFINE : 'DEFINE'; -DEFINER : 'DEFINER'; -DEGREE : 'DEGREE'; -DELAY : 'DELAY'; -DELEGATE : 'DELEGATE'; -DELETE_ALL : 'DELETE_ALL'; -DELETE : 'DELETE'; -DELETEXML : 'DELETEXML'; -DEMAND : 'DEMAND'; -DENSE_RANKM : 'DENSE_RANKM'; -DEPENDENT : 'DEPENDENT'; -DEPTH : 'DEPTH'; -DEQUEUE : 'DEQUEUE'; -DEREF : 'DEREF'; -DEREF_NO_REWRITE : 'DEREF_NO_REWRITE'; -DESC : 'DESC'; -DESTROY : 'DESTROY'; -DETACHED : 'DETACHED'; -DETERMINES : 'DETERMINES'; -DETERMINISTIC : 'DETERMINISTIC'; -DICTIONARY : 'DICTIONARY'; -DIMENSION : 'DIMENSION'; -DIMENSIONS : 'DIMENSIONS'; -DIRECT_LOAD : 'DIRECT_LOAD'; -DIRECTORY : 'DIRECTORY'; -DIRECT_PATH : 'DIRECT_PATH'; -DISABLE_ALL : 'DISABLE_ALL'; -DISABLE : 'DISABLE'; -DISABLE_PARALLEL_DML : 'DISABLE_PARALLEL_DML'; -DISABLE_PRESET : 'DISABLE_PRESET'; -DISABLE_RPKE : 'DISABLE_RPKE'; -DISALLOW : 'DISALLOW'; -DISASSOCIATE : 'DISASSOCIATE'; -DISCARD : 'DISCARD'; -DISCONNECT : 'DISCONNECT'; -DISK : 'DISK'; -DISKGROUP : 'DISKGROUP'; -DISKGROUP_PLUS : '\'+ DISKGROUP'; -DISKS : 'DISKS'; -DISMOUNT : 'DISMOUNT'; -DISTINCT : 'DISTINCT'; -DISTINGUISHED : 'DISTINGUISHED'; -DISTRIBUTED : 'DISTRIBUTED'; -DISTRIBUTE : 'DISTRIBUTE'; -DML : 'DML'; -DML_UPDATE : 'DML_UPDATE'; -DOCFIDELITY : 'DOCFIDELITY'; -DOCUMENT : 'DOCUMENT'; -DOMAIN_INDEX_FILTER : 'DOMAIN_INDEX_FILTER'; -DOMAIN_INDEX_NO_SORT : 'DOMAIN_INDEX_NO_SORT'; -DOMAIN_INDEX_SORT : 'DOMAIN_INDEX_SORT'; -DOUBLE : 'DOUBLE'; -DOWNGRADE : 'DOWNGRADE'; -DRIVING_SITE : 'DRIVING_SITE'; -DROP_COLUMN : 'DROP_COLUMN'; -DROP : 'DROP'; -DROP_GROUP : 'DROP_GROUP'; -DSINTERVAL_UNCONSTRAINED : 'DSINTERVAL_UNCONSTRAINED'; -DST_UPGRADE_INSERT_CONV : 'DST_UPGRADE_INSERT_CONV'; -DUMP : 'DUMP'; -DUMPSET : 'DUMPSET'; -DUPLICATE : 'DUPLICATE'; -DV : 'DV'; -DYNAMIC : 'DYNAMIC'; -DYNAMIC_SAMPLING : 'DYNAMIC_SAMPLING'; -DYNAMIC_SAMPLING_EST_CDN : 'DYNAMIC_SAMPLING_EST_CDN'; -EACH : 'EACH'; -EDITIONABLE : 'EDITIONABLE'; -EDITION : 'EDITION'; -EDITIONING : 'EDITIONING'; -EDITIONS : 'EDITIONS'; -ELEMENT : 'ELEMENT'; -ELIM_GROUPBY : 'ELIM_GROUPBY'; -ELIMINATE_JOIN : 'ELIMINATE_JOIN'; -ELIMINATE_OBY : 'ELIMINATE_OBY'; -ELIMINATE_OUTER_JOIN : 'ELIMINATE_OUTER_JOIN'; -ELSE : 'ELSE'; -ELSIF : 'ELSIF'; -EM : 'EM'; -EMPTY_BLOB : 'EMPTY_BLOB'; -EMPTY_CLOB : 'EMPTY_CLOB'; -EMPTY : 'EMPTY'; -ENABLE_ALL : 'ENABLE_ALL'; -ENABLE : 'ENABLE'; -ENABLE_PARALLEL_DML : 'ENABLE_PARALLEL_DML'; -ENABLE_PRESET : 'ENABLE_PRESET'; -ENCODING : 'ENCODING'; -ENCRYPT : 'ENCRYPT'; -ENCRYPTION : 'ENCRYPTION'; -END : 'END'; -END_OUTLINE_DATA : 'END_OUTLINE_DATA'; -ENFORCED : 'ENFORCED'; -ENFORCE : 'ENFORCE'; -ENQUEUE : 'ENQUEUE'; -ENTERPRISE : 'ENTERPRISE'; -ENTITYESCAPING : 'ENTITYESCAPING'; -ENTRY : 'ENTRY'; -EQUIPART : 'EQUIPART'; -ERR : 'ERR'; -ERROR_ARGUMENT : 'ERROR_ARGUMENT'; -ERROR : 'ERROR'; -ERROR_ON_OVERLAP_TIME : 'ERROR_ON_OVERLAP_TIME'; -ERRORS : 'ERRORS'; -ESCAPE : 'ESCAPE'; -ESTIMATE : 'ESTIMATE'; -EVAL : 'EVAL'; -EVALNAME : 'EVALNAME'; -EVALUATE : 'EVALUATE'; -EVALUATION : 'EVALUATION'; -EVENTS : 'EVENTS'; -EVERY : 'EVERY'; -EXCEPT : 'EXCEPT'; -EXCEPTION : 'EXCEPTION'; -EXCEPTION_INIT : 'EXCEPTION_INIT'; -EXCEPTIONS : 'EXCEPTIONS'; -EXCHANGE : 'EXCHANGE'; -EXCLUDE : 'EXCLUDE'; -EXCLUDING : 'EXCLUDING'; -EXCLUSIVE : 'EXCLUSIVE'; -EXECUTE : 'EXECUTE'; -EXEMPT : 'EXEMPT'; -EXISTING : 'EXISTING'; -EXISTS : 'EXISTS'; -EXISTSNODE : 'EXISTSNODE'; -EXIT : 'EXIT'; -EXPAND_GSET_TO_UNION : 'EXPAND_GSET_TO_UNION'; -EXPAND_TABLE : 'EXPAND_TABLE'; -EXP : 'EXP'; -EXPIRE : 'EXPIRE'; -EXPLAIN : 'EXPLAIN'; -EXPLOSION : 'EXPLOSION'; -EXPORT : 'EXPORT'; -EXPR_CORR_CHECK : 'EXPR_CORR_CHECK'; -EXPRESS : 'EXPRESS'; -EXTENDS : 'EXTENDS'; -EXTENT : 'EXTENT'; -EXTENTS : 'EXTENTS'; -EXTERNAL : 'EXTERNAL'; -EXTERNALLY : 'EXTERNALLY'; -EXTRACTCLOBXML : 'EXTRACTCLOBXML'; -EXTRACT : 'EXTRACT'; -EXTRACTVALUE : 'EXTRACTVALUE'; -EXTRA : 'EXTRA'; -FACILITY : 'FACILITY'; -FACT : 'FACT'; -FACTOR : 'FACTOR'; -FACTORIZE_JOIN : 'FACTORIZE_JOIN'; -FAILED : 'FAILED'; -FAILED_LOGIN_ATTEMPTS : 'FAILED_LOGIN_ATTEMPTS'; -FAILGROUP : 'FAILGROUP'; -FAILOVER : 'FAILOVER'; -FAILURE : 'FAILURE'; -FALSE : 'FALSE'; -FAMILY : 'FAMILY'; -FAR : 'FAR'; -FAST : 'FAST'; -FASTSTART : 'FASTSTART'; -FBTSCAN : 'FBTSCAN'; -FEATURE_DETAILS : 'FEATURE_DETAILS'; -FEATURE_ID : 'FEATURE_ID'; -FEATURE_SET : 'FEATURE_SET'; -FEATURE_VALUE : 'FEATURE_VALUE'; -FETCH : 'FETCH'; -FILE : 'FILE'; -FILE_NAME_CONVERT : 'FILE_NAME_CONVERT'; -FILESYSTEM_LIKE_LOGGING : 'FILESYSTEM_LIKE_LOGGING'; -FILTER : 'FILTER'; -FINAL : 'FINAL'; -FINE : 'FINE'; -FINISH : 'FINISH'; -FIRST : 'FIRST'; -FIRSTM : 'FIRSTM'; -FIRST_ROWS : 'FIRST_ROWS'; -FIRST_VALUE : 'FIRST_VALUE'; -FIXED_VIEW_DATA : 'FIXED_VIEW_DATA'; -FLAGGER : 'FLAGGER'; -FLASHBACK : 'FLASHBACK'; -FLASH_CACHE : 'FLASH_CACHE'; -FLOAT : 'FLOAT'; -FLOB : 'FLOB'; -FLOOR : 'FLOOR'; -FLUSH : 'FLUSH'; -FOLDER : 'FOLDER'; -FOLLOWING : 'FOLLOWING'; -FOLLOWS : 'FOLLOWS'; -FORALL : 'FORALL'; -FORCE : 'FORCE'; -FORCE_XML_QUERY_REWRITE : 'FORCE_XML_QUERY_REWRITE'; -FOREIGN : 'FOREIGN'; -FOREVER : 'FOREVER'; -FOR : 'FOR'; -FORMAT : 'FORMAT'; -FORWARD : 'FORWARD'; -FRAGMENT_NUMBER : 'FRAGMENT_NUMBER'; -FREELIST : 'FREELIST'; -FREELISTS : 'FREELISTS'; -FREEPOOLS : 'FREEPOOLS'; -FRESH : 'FRESH'; -FROM : 'FROM'; -FROM_TZ : 'FROM_TZ'; -FULL : 'FULL'; -FULL_OUTER_JOIN_TO_OUTER : 'FULL_OUTER_JOIN_TO_OUTER'; -FUNCTION : 'FUNCTION'; -FUNCTIONS : 'FUNCTIONS'; -GATHER_OPTIMIZER_STATISTICS : 'GATHER_OPTIMIZER_STATISTICS'; -GATHER_PLAN_STATISTICS : 'GATHER_PLAN_STATISTICS'; -GBY_CONC_ROLLUP : 'GBY_CONC_ROLLUP'; -GBY_PUSHDOWN : 'GBY_PUSHDOWN'; -GENERATED : 'GENERATED'; -GET : 'GET'; -GLOBAL : 'GLOBAL'; -GLOBALLY : 'GLOBALLY'; -GLOBAL_NAME : 'GLOBAL_NAME'; -GLOBAL_TOPIC_ENABLED : 'GLOBAL_TOPIC_ENABLED'; -GOTO : 'GOTO'; -GRANT : 'GRANT'; -GROUP_BY : 'GROUP_BY'; -GROUP : 'GROUP'; -GROUP_ID : 'GROUP_ID'; -GROUPING : 'GROUPING'; -GROUPING_ID : 'GROUPING_ID'; -GROUPS : 'GROUPS'; -GUARANTEED : 'GUARANTEED'; -GUARANTEE : 'GUARANTEE'; -GUARD : 'GUARD'; -HASH_AJ : 'HASH_AJ'; -HASH : 'HASH'; -HASHKEYS : 'HASHKEYS'; -HASH_SJ : 'HASH_SJ'; -HAVING : 'HAVING'; -HEADER : 'HEADER'; -HEAP : 'HEAP'; -HELP : 'HELP'; -HEXTORAW : 'HEXTORAW'; -HEXTOREF : 'HEXTOREF'; -HIDDEN_KEYWORD : 'HIDDEN'; -HIDE : 'HIDE'; -HIERARCHY : 'HIERARCHY'; -HIGH : 'HIGH'; -HINTSET_BEGIN : 'HINTSET_BEGIN'; -HINTSET_END : 'HINTSET_END'; -HOT : 'HOT'; -HOUR : 'HOUR'; -HWM_BROKERED : 'HWM_BROKERED'; -HYBRID : 'HYBRID'; -IDENTIFIED : 'IDENTIFIED'; -IDENTIFIER : 'IDENTIFIER'; -IDENTITY : 'IDENTITY'; -IDGENERATORS : 'IDGENERATORS'; -ID : 'ID'; -IDLE_TIME : 'IDLE_TIME'; -IF : 'IF'; -IGNORE : 'IGNORE'; -IGNORE_OPTIM_EMBEDDED_HINTS : 'IGNORE_OPTIM_EMBEDDED_HINTS'; -IGNORE_ROW_ON_DUPKEY_INDEX : 'IGNORE_ROW_ON_DUPKEY_INDEX'; -IGNORE_WHERE_CLAUSE : 'IGNORE_WHERE_CLAUSE'; -ILM : 'ILM'; -IMMEDIATE : 'IMMEDIATE'; -IMPACT : 'IMPACT'; -IMPORT : 'IMPORT'; -INACTIVE : 'INACTIVE'; -INCLUDE : 'INCLUDE'; -INCLUDE_VERSION : 'INCLUDE_VERSION'; -INCLUDING : 'INCLUDING'; -INCREMENTAL : 'INCREMENTAL'; -INCREMENT : 'INCREMENT'; -INCR : 'INCR'; -INDENT : 'INDENT'; -INDEX_ASC : 'INDEX_ASC'; -INDEX_COMBINE : 'INDEX_COMBINE'; -INDEX_DESC : 'INDEX_DESC'; -INDEXED : 'INDEXED'; -INDEXES : 'INDEXES'; -INDEX_FFS : 'INDEX_FFS'; -INDEX_FILTER : 'INDEX_FILTER'; -INDEX : 'INDEX'; -INDEXING : 'INDEXING'; -INDEX_JOIN : 'INDEX_JOIN'; -INDEX_ROWS : 'INDEX_ROWS'; -INDEX_RRS : 'INDEX_RRS'; -INDEX_RS_ASC : 'INDEX_RS_ASC'; -INDEX_RS_DESC : 'INDEX_RS_DESC'; -INDEX_RS : 'INDEX_RS'; -INDEX_SCAN : 'INDEX_SCAN'; -INDEX_SKIP_SCAN : 'INDEX_SKIP_SCAN'; -INDEX_SS_ASC : 'INDEX_SS_ASC'; -INDEX_SS_DESC : 'INDEX_SS_DESC'; -INDEX_SS : 'INDEX_SS'; -INDEX_STATS : 'INDEX_STATS'; -INDEXTYPE : 'INDEXTYPE'; -INDEXTYPES : 'INDEXTYPES'; -INDICATOR : 'INDICATOR'; -INDICES : 'INDICES'; -INFINITE : 'INFINITE'; -INFORMATIONAL : 'INFORMATIONAL'; -INHERIT : 'INHERIT'; -IN : 'IN'; -INITCAP : 'INITCAP'; -INITIAL : 'INITIAL'; -INITIALIZED : 'INITIALIZED'; -INITIALLY : 'INITIALLY'; -INITRANS : 'INITRANS'; -INLINE : 'INLINE'; -INLINE_XMLTYPE_NT : 'INLINE_XMLTYPE_NT'; -INMEMORY : 'INMEMORY'; -IN_MEMORY_METADATA : 'IN_MEMORY_METADATA'; -INMEMORY_PRUNING : 'INMEMORY_PRUNING'; -INNER : 'INNER'; -INOUT : 'INOUT'; -INPLACE : 'INPLACE'; -INSERTCHILDXMLAFTER : 'INSERTCHILDXMLAFTER'; -INSERTCHILDXMLBEFORE : 'INSERTCHILDXMLBEFORE'; -INSERTCHILDXML : 'INSERTCHILDXML'; -INSERT : 'INSERT'; -INSERTXMLAFTER : 'INSERTXMLAFTER'; -INSERTXMLBEFORE : 'INSERTXMLBEFORE'; -INSTANCE : 'INSTANCE'; -INSTANCES : 'INSTANCES'; -INSTANTIABLE : 'INSTANTIABLE'; -INSTANTLY : 'INSTANTLY'; -INSTEAD : 'INSTEAD'; -INSTR2 : 'INSTR2'; -INSTR4 : 'INSTR4'; -INSTRB : 'INSTRB'; -INSTRC : 'INSTRC'; -INSTR : 'INSTR'; -INTEGER : 'INTEGER'; -INTERLEAVED : 'INTERLEAVED'; -INTERMEDIATE : 'INTERMEDIATE'; -INTERNAL_CONVERT : 'INTERNAL_CONVERT'; -INTERNAL_USE : 'INTERNAL_USE'; -INTERPRETED : 'INTERPRETED'; -INTERSECT : 'INTERSECT'; -INTERVAL : 'INTERVAL'; -INT : 'INT'; -INTO : 'INTO'; -INVALIDATE : 'INVALIDATE'; -INVISIBLE : 'INVISIBLE'; -IN_XQUERY : 'IN_XQUERY'; -IS : 'IS'; -ISOLATION : 'ISOLATION'; -ISOLATION_LEVEL : 'ISOLATION_LEVEL'; -ITERATE : 'ITERATE'; -ITERATION_NUMBER : 'ITERATION_NUMBER'; -JAVA : 'JAVA'; -JOB : 'JOB'; -JOIN : 'JOIN'; -JSON_ARRAYAGG : 'JSON_ARRAYAGG'; -JSON_ARRAY : 'JSON_ARRAY'; -JSON_EQUAL : 'JSON_EQUAL'; -JSON_EXISTS2 : 'JSON_EXISTS2'; -JSON_EXISTS : 'JSON_EXISTS'; -JSONGET : 'JSONGET'; -JSON : 'JSON'; -JSON_OBJECTAGG : 'JSON_OBJECTAGG'; -JSON_OBJECT : 'JSON_OBJECT'; -JSONPARSE : 'JSONPARSE'; -JSON_QUERY : 'JSON_QUERY'; -JSON_SERIALIZE : 'JSON_SERIALIZE'; -JSON_TABLE : 'JSON_TABLE'; -JSON_TEXTCONTAINS2 : 'JSON_TEXTCONTAINS2'; -JSON_TEXTCONTAINS : 'JSON_TEXTCONTAINS'; -JSON_VALUE : 'JSON_VALUE'; -KEEP_DUPLICATES : 'KEEP_DUPLICATES'; -KEEP : 'KEEP'; -KERBEROS : 'KERBEROS'; -KEY : 'KEY'; -KEY_LENGTH : 'KEY_LENGTH'; -KEYSIZE : 'KEYSIZE'; -KEYS : 'KEYS'; -KEYSTORE : 'KEYSTORE'; -KILL : 'KILL'; -LABEL : 'LABEL'; -LANGUAGE : 'LANGUAGE'; -LAST_DAY : 'LAST_DAY'; -LAST : 'LAST'; -LAST_VALUE : 'LAST_VALUE'; -LATERAL : 'LATERAL'; -LAX : 'LAX'; -LAYER : 'LAYER'; -LDAP_REGISTRATION_ENABLED : 'LDAP_REGISTRATION_ENABLED'; -LDAP_REGISTRATION : 'LDAP_REGISTRATION'; -LDAP_REG_SYNC_INTERVAL : 'LDAP_REG_SYNC_INTERVAL'; -LEADING : 'LEADING'; -LEFT : 'LEFT'; -LENGTH2 : 'LENGTH2'; -LENGTH4 : 'LENGTH4'; -LENGTHB : 'LENGTHB'; -LENGTHC : 'LENGTHC'; -LENGTH : 'LENGTH'; -LESS : 'LESS'; -LEVEL : 'LEVEL'; -LEVELS : 'LEVELS'; -LIBRARY : 'LIBRARY'; -LIFECYCLE : 'LIFECYCLE'; -LIFE : 'LIFE'; -LIFETIME : 'LIFETIME'; -LIKE2 : 'LIKE2'; -LIKE4 : 'LIKE4'; -LIKEC : 'LIKEC'; -LIKE_EXPAND : 'LIKE_EXPAND'; -LIKE : 'LIKE'; -LIMIT : 'LIMIT'; -LINEAR : 'LINEAR'; -LINK : 'LINK'; -LIST : 'LIST'; -LN : 'LN'; -LNNVL : 'LNNVL'; -LOAD : 'LOAD'; -LOB : 'LOB'; -LOBNVL : 'LOBNVL'; -LOBS : 'LOBS'; -LOCAL_INDEXES : 'LOCAL_INDEXES'; -LOCAL : 'LOCAL'; -LOCALTIME : 'LOCALTIME'; -LOCALTIMESTAMP : 'LOCALTIMESTAMP'; -LOCATION : 'LOCATION'; -LOCATOR : 'LOCATOR'; -LOCKED : 'LOCKED'; -LOCKING : 'LOCKING'; -LOCK : 'LOCK'; -LOGFILE : 'LOGFILE'; -LOGFILES : 'LOGFILES'; -LOGGING : 'LOGGING'; -LOGICAL : 'LOGICAL'; -LOGICAL_READS_PER_CALL : 'LOGICAL_READS_PER_CALL'; -LOGICAL_READS_PER_SESSION : 'LOGICAL_READS_PER_SESSION'; -LOG : 'LOG'; -LOGMINING : 'LOGMINING'; -LOGOFF : 'LOGOFF'; -LOGON : 'LOGON'; -LOG_READ_ONLY_VIOLATIONS : 'LOG_READ_ONLY_VIOLATIONS'; -LONG : 'LONG'; -LOOP : 'LOOP'; -LOWER : 'LOWER'; -LOW : 'LOW'; -LPAD : 'LPAD'; -LTRIM : 'LTRIM'; -MAIN : 'MAIN'; -MAKE_REF : 'MAKE_REF'; -MANAGED : 'MANAGED'; -MANAGE : 'MANAGE'; -MANAGEMENT : 'MANAGEMENT'; -MANAGER : 'MANAGER'; -MANUAL : 'MANUAL'; -MAP : 'MAP'; -MAPPING : 'MAPPING'; -MASTER : 'MASTER'; -MATCHED : 'MATCHED'; -MATCHES : 'MATCHES'; -MATCH : 'MATCH'; -MATCH_NUMBER : 'MATCH_NUMBER'; -MATCH_RECOGNIZE : 'MATCH_RECOGNIZE'; -MATERIALIZED : 'MATERIALIZED'; -MATERIALIZE : 'MATERIALIZE'; -MAXARCHLOGS : 'MAXARCHLOGS'; -MAXDATAFILES : 'MAXDATAFILES'; -MAXEXTENTS : 'MAXEXTENTS'; -MAXIMIZE : 'MAXIMIZE'; -MAXINSTANCES : 'MAXINSTANCES'; -MAXLOGFILES : 'MAXLOGFILES'; -MAXLOGHISTORY : 'MAXLOGHISTORY'; -MAXLOGMEMBERS : 'MAXLOGMEMBERS'; -MAX_SHARED_TEMP_SIZE : 'MAX_SHARED_TEMP_SIZE'; -MAXSIZE : 'MAXSIZE'; -MAXTRANS : 'MAXTRANS'; -MAXVALUE : 'MAXVALUE'; -MEASURE : 'MEASURE'; -MEASURES : 'MEASURES'; -MEDIUM : 'MEDIUM'; -MEMBER : 'MEMBER'; -MEMCOMPRESS : 'MEMCOMPRESS'; -MEMORY : 'MEMORY'; -MERGEACTIONS : 'MERGE$ACTIONS'; -MERGE_AJ : 'MERGE_AJ'; -MERGE_CONST_ON : 'MERGE_CONST_ON'; -MERGE : 'MERGE'; -MERGE_SJ : 'MERGE_SJ'; -METADATA : 'METADATA'; -METHOD : 'METHOD'; -MIGRATE : 'MIGRATE'; -MIGRATION : 'MIGRATION'; -MINEXTENTS : 'MINEXTENTS'; -MINIMIZE : 'MINIMIZE'; -MINIMUM : 'MINIMUM'; -MINING : 'MINING'; -MINUS : 'MINUS'; -MINUS_NULL : 'MINUS_NULL'; -MINUTE : 'MINUTE'; -MINVALUE : 'MINVALUE'; -MIRRORCOLD : 'MIRRORCOLD'; -MIRRORHOT : 'MIRRORHOT'; -MIRROR : 'MIRROR'; -MLSLABEL : 'MLSLABEL'; -MODEL_COMPILE_SUBQUERY : 'MODEL_COMPILE_SUBQUERY'; -MODEL_DONTVERIFY_UNIQUENESS : 'MODEL_DONTVERIFY_UNIQUENESS'; -MODEL_DYNAMIC_SUBQUERY : 'MODEL_DYNAMIC_SUBQUERY'; -MODEL_MIN_ANALYSIS : 'MODEL_MIN_ANALYSIS'; -MODEL : 'MODEL'; -MODEL_NB : 'MODEL_NB'; -MODEL_NO_ANALYSIS : 'MODEL_NO_ANALYSIS'; -MODEL_PBY : 'MODEL_PBY'; -MODEL_PUSH_REF : 'MODEL_PUSH_REF'; -MODEL_SV : 'MODEL_SV'; -MODE : 'MODE'; -MODIFICATION : 'MODIFICATION'; -MODIFY_COLUMN_TYPE : 'MODIFY_COLUMN_TYPE'; -MODIFY : 'MODIFY'; -MOD : 'MOD'; -MODULE : 'MODULE'; -MONITORING : 'MONITORING'; -MONITOR : 'MONITOR'; -MONTH : 'MONTH'; -MONTHS_BETWEEN : 'MONTHS_BETWEEN'; -MONTHS : 'MONTHS'; -MOUNT : 'MOUNT'; -MOUNTPATH : 'MOUNTPATH'; -MOVEMENT : 'MOVEMENT'; -MOVE : 'MOVE'; -MULTIDIMENSIONAL : 'MULTIDIMENSIONAL'; -MULTISET : 'MULTISET'; -MV_MERGE : 'MV_MERGE'; -NAMED : 'NAMED'; -NAME : 'NAME'; -NAMESPACE : 'NAMESPACE'; -NAN : 'NAN'; -NANVL : 'NANVL'; -NATIONAL : 'NATIONAL'; -NATIVE_FULL_OUTER_JOIN : 'NATIVE_FULL_OUTER_JOIN'; -NATIVE : 'NATIVE'; -NATURAL : 'NATURAL'; -NATURALN : 'NATURALN'; -NAV : 'NAV'; -NCHAR_CS : 'NCHAR_CS'; -NCHAR : 'NCHAR'; -NCHR : 'NCHR'; -NCLOB : 'NCLOB'; -NEEDED : 'NEEDED'; -NEG : 'NEG'; -NESTED : 'NESTED'; -NESTED_TABLE_FAST_INSERT : 'NESTED_TABLE_FAST_INSERT'; -NESTED_TABLE_GET_REFS : 'NESTED_TABLE_GET_REFS'; -NESTED_TABLE_ID : 'NESTED_TABLE_ID'; -NESTED_TABLE_SET_REFS : 'NESTED_TABLE_SET_REFS'; -NESTED_TABLE_SET_SETID : 'NESTED_TABLE_SET_SETID'; -NETWORK : 'NETWORK'; -NEVER : 'NEVER'; -NEW : 'NEW'; -NEW_TIME : 'NEW_TIME'; -NEXT_DAY : 'NEXT_DAY'; -NEXT : 'NEXT'; -NL_AJ : 'NL_AJ'; -NLJ_BATCHING : 'NLJ_BATCHING'; -NLJ_INDEX_FILTER : 'NLJ_INDEX_FILTER'; -NLJ_INDEX_SCAN : 'NLJ_INDEX_SCAN'; -NLJ_PREFETCH : 'NLJ_PREFETCH'; -NLS_CALENDAR : 'NLS_CALENDAR'; -NLS_CHARACTERSET : 'NLS_CHARACTERSET'; -NLS_CHARSET_DECL_LEN : 'NLS_CHARSET_DECL_LEN'; -NLS_CHARSET_ID : 'NLS_CHARSET_ID'; -NLS_CHARSET_NAME : 'NLS_CHARSET_NAME'; -NLS_COMP : 'NLS_COMP'; -NLS_CURRENCY : 'NLS_CURRENCY'; -NLS_DATE_FORMAT : 'NLS_DATE_FORMAT'; -NLS_DATE_LANGUAGE : 'NLS_DATE_LANGUAGE'; -NLS_INITCAP : 'NLS_INITCAP'; -NLS_ISO_CURRENCY : 'NLS_ISO_CURRENCY'; -NL_SJ : 'NL_SJ'; -NLS_LANG : 'NLS_LANG'; -NLS_LANGUAGE : 'NLS_LANGUAGE'; -NLS_LENGTH_SEMANTICS : 'NLS_LENGTH_SEMANTICS'; -NLS_LOWER : 'NLS_LOWER'; -NLS_NCHAR_CONV_EXCP : 'NLS_NCHAR_CONV_EXCP'; -NLS_NUMERIC_CHARACTERS : 'NLS_NUMERIC_CHARACTERS'; -NLS_SORT : 'NLS_SORT'; -NLSSORT : 'NLSSORT'; -NLS_SPECIAL_CHARS : 'NLS_SPECIAL_CHARS'; -NLS_TERRITORY : 'NLS_TERRITORY'; -NLS_UPPER : 'NLS_UPPER'; -NO_ACCESS : 'NO_ACCESS'; -NO_ADAPTIVE_PLAN : 'NO_ADAPTIVE_PLAN'; -NO_ANSI_REARCH : 'NO_ANSI_REARCH'; -NOAPPEND : 'NOAPPEND'; -NOARCHIVELOG : 'NOARCHIVELOG'; -NOAUDIT : 'NOAUDIT'; -NO_AUTO_REOPTIMIZE : 'NO_AUTO_REOPTIMIZE'; -NO_BASETABLE_MULTIMV_REWRITE : 'NO_BASETABLE_MULTIMV_REWRITE'; -NO_BATCH_TABLE_ACCESS_BY_ROWID : 'NO_BATCH_TABLE_ACCESS_BY_ROWID'; -NO_BIND_AWARE : 'NO_BIND_AWARE'; -NO_BUFFER : 'NO_BUFFER'; -NOCACHE : 'NOCACHE'; -NO_CARTESIAN : 'NO_CARTESIAN'; -NO_CHECK_ACL_REWRITE : 'NO_CHECK_ACL_REWRITE'; -NO_CLUSTER_BY_ROWID : 'NO_CLUSTER_BY_ROWID'; -NO_CLUSTERING : 'NO_CLUSTERING'; -NO_COALESCE_SQ : 'NO_COALESCE_SQ'; -NO_COMMON_DATA : 'NO_COMMON_DATA'; -NOCOMPRESS : 'NOCOMPRESS'; -NO_CONNECT_BY_CB_WHR_ONLY : 'NO_CONNECT_BY_CB_WHR_ONLY'; -NO_CONNECT_BY_COMBINE_SW : 'NO_CONNECT_BY_COMBINE_SW'; -NO_CONNECT_BY_COST_BASED : 'NO_CONNECT_BY_COST_BASED'; -NO_CONNECT_BY_ELIM_DUPS : 'NO_CONNECT_BY_ELIM_DUPS'; -NO_CONNECT_BY_FILTERING : 'NO_CONNECT_BY_FILTERING'; -NOCOPY : 'NOCOPY'; -NO_COST_XML_QUERY_REWRITE : 'NO_COST_XML_QUERY_REWRITE'; -NO_CPU_COSTING : 'NO_CPU_COSTING'; -NOCPU_COSTING : 'NOCPU_COSTING'; -NOCYCLE : 'NOCYCLE'; -NO_DATA_SECURITY_REWRITE : 'NO_DATA_SECURITY_REWRITE'; -NO_DECORRELATE : 'NO_DECORRELATE'; -NODELAY : 'NODELAY'; -NO_DOMAIN_INDEX_FILTER : 'NO_DOMAIN_INDEX_FILTER'; -NO_DST_UPGRADE_INSERT_CONV : 'NO_DST_UPGRADE_INSERT_CONV'; -NO_ELIM_GROUPBY : 'NO_ELIM_GROUPBY'; -NO_ELIMINATE_JOIN : 'NO_ELIMINATE_JOIN'; -NO_ELIMINATE_OBY : 'NO_ELIMINATE_OBY'; -NO_ELIMINATE_OUTER_JOIN : 'NO_ELIMINATE_OUTER_JOIN'; -NOENTITYESCAPING : 'NOENTITYESCAPING'; -NO_EXPAND_GSET_TO_UNION : 'NO_EXPAND_GSET_TO_UNION'; -NO_EXPAND : 'NO_EXPAND'; -NO_EXPAND_TABLE : 'NO_EXPAND_TABLE'; -NO_FACT : 'NO_FACT'; -NO_FACTORIZE_JOIN : 'NO_FACTORIZE_JOIN'; -NO_FILTERING : 'NO_FILTERING'; -NOFORCE : 'NOFORCE'; -NO_FULL_OUTER_JOIN_TO_OUTER : 'NO_FULL_OUTER_JOIN_TO_OUTER'; -NO_GATHER_OPTIMIZER_STATISTICS : 'NO_GATHER_OPTIMIZER_STATISTICS'; -NO_GBY_PUSHDOWN : 'NO_GBY_PUSHDOWN'; -NOGUARANTEE : 'NOGUARANTEE'; -NO_INDEX_FFS : 'NO_INDEX_FFS'; -NO_INDEX : 'NO_INDEX'; -NO_INDEX_SS : 'NO_INDEX_SS'; -NO_INMEMORY : 'NO_INMEMORY'; -NO_INMEMORY_PRUNING : 'NO_INMEMORY_PRUNING'; -NOKEEP : 'NOKEEP'; -NO_LOAD : 'NO_LOAD'; -NOLOCAL : 'NOLOCAL'; -NOLOGGING : 'NOLOGGING'; -NOMAPPING : 'NOMAPPING'; -NOMAXVALUE : 'NOMAXVALUE'; -NO_MERGE : 'NO_MERGE'; -NOMINIMIZE : 'NOMINIMIZE'; -NOMINVALUE : 'NOMINVALUE'; -NO_MODEL_PUSH_REF : 'NO_MODEL_PUSH_REF'; -NO_MONITORING : 'NO_MONITORING'; -NOMONITORING : 'NOMONITORING'; -NO_MONITOR : 'NO_MONITOR'; -NO_MULTIMV_REWRITE : 'NO_MULTIMV_REWRITE'; -NO_NATIVE_FULL_OUTER_JOIN : 'NO_NATIVE_FULL_OUTER_JOIN'; -NONBLOCKING : 'NONBLOCKING'; -NONEDITIONABLE : 'NONEDITIONABLE'; -NONE : 'NONE'; -NO_NLJ_BATCHING : 'NO_NLJ_BATCHING'; -NO_NLJ_PREFETCH : 'NO_NLJ_PREFETCH'; -NO : 'NO'; -NONSCHEMA : 'NONSCHEMA'; -NO_OBJECT_LINK : 'NO_OBJECT_LINK'; -NOORDER : 'NOORDER'; -NO_ORDER_ROLLUPS : 'NO_ORDER_ROLLUPS'; -NO_OUTER_JOIN_TO_ANTI : 'NO_OUTER_JOIN_TO_ANTI'; -NO_OUTER_JOIN_TO_INNER : 'NO_OUTER_JOIN_TO_INNER'; -NOOVERRIDE : 'NOOVERRIDE'; -NO_PARALLEL_INDEX : 'NO_PARALLEL_INDEX'; -NOPARALLEL_INDEX : 'NOPARALLEL_INDEX'; -NO_PARALLEL : 'NO_PARALLEL'; -NOPARALLEL : 'NOPARALLEL'; -NO_PARTIAL_COMMIT : 'NO_PARTIAL_COMMIT'; -NO_PARTIAL_JOIN : 'NO_PARTIAL_JOIN'; -NO_PARTIAL_ROLLUP_PUSHDOWN : 'NO_PARTIAL_ROLLUP_PUSHDOWN'; -NOPARTITION : 'NOPARTITION'; -NO_PLACE_DISTINCT : 'NO_PLACE_DISTINCT'; -NO_PLACE_GROUP_BY : 'NO_PLACE_GROUP_BY'; -NO_PQ_CONCURRENT_UNION : 'NO_PQ_CONCURRENT_UNION'; -NO_PQ_MAP : 'NO_PQ_MAP'; -NO_PQ_REPLICATE : 'NO_PQ_REPLICATE'; -NO_PQ_SKEW : 'NO_PQ_SKEW'; -NO_PRUNE_GSETS : 'NO_PRUNE_GSETS'; -NO_PULL_PRED : 'NO_PULL_PRED'; -NO_PUSH_PRED : 'NO_PUSH_PRED'; -NO_PUSH_SUBQ : 'NO_PUSH_SUBQ'; -NO_PX_FAULT_TOLERANCE : 'NO_PX_FAULT_TOLERANCE'; -NO_PX_JOIN_FILTER : 'NO_PX_JOIN_FILTER'; -NO_QKN_BUFF : 'NO_QKN_BUFF'; -NO_QUERY_TRANSFORMATION : 'NO_QUERY_TRANSFORMATION'; -NO_REF_CASCADE : 'NO_REF_CASCADE'; -NORELOCATE : 'NORELOCATE'; -NORELY : 'NORELY'; -NOREPAIR : 'NOREPAIR'; -NOREPLAY : 'NOREPLAY'; -NORESETLOGS : 'NORESETLOGS'; -NO_RESULT_CACHE : 'NO_RESULT_CACHE'; -NOREVERSE : 'NOREVERSE'; -NO_REWRITE : 'NO_REWRITE'; -NOREWRITE : 'NOREWRITE'; -NORMAL : 'NORMAL'; -NO_ROOT_SW_FOR_LOCAL : 'NO_ROOT_SW_FOR_LOCAL'; -NOROWDEPENDENCIES : 'NOROWDEPENDENCIES'; -NOSCHEMACHECK : 'NOSCHEMACHECK'; -NOSEGMENT : 'NOSEGMENT'; -NO_SEMIJOIN : 'NO_SEMIJOIN'; -NO_SEMI_TO_INNER : 'NO_SEMI_TO_INNER'; -NO_SET_TO_JOIN : 'NO_SET_TO_JOIN'; -NOSORT : 'NOSORT'; -NO_SQL_TRANSLATION : 'NO_SQL_TRANSLATION'; -NO_SQL_TUNE : 'NO_SQL_TUNE'; -NO_STAR_TRANSFORMATION : 'NO_STAR_TRANSFORMATION'; -NO_STATEMENT_QUEUING : 'NO_STATEMENT_QUEUING'; -NO_STATS_GSETS : 'NO_STATS_GSETS'; -NOSTRICT : 'NOSTRICT'; -NO_SUBQUERY_PRUNING : 'NO_SUBQUERY_PRUNING'; -NO_SUBSTRB_PAD : 'NO_SUBSTRB_PAD'; -NO_SWAP_JOIN_INPUTS : 'NO_SWAP_JOIN_INPUTS'; -NOSWITCH : 'NOSWITCH'; -NO_TABLE_LOOKUP_BY_NL : 'NO_TABLE_LOOKUP_BY_NL'; -NO_TEMP_TABLE : 'NO_TEMP_TABLE'; -NOTHING : 'NOTHING'; -NOTIFICATION : 'NOTIFICATION'; -NOT : 'NOT'; -NO_TRANSFORM_DISTINCT_AGG : 'NO_TRANSFORM_DISTINCT_AGG'; -NO_UNNEST : 'NO_UNNEST'; -NO_USE_CUBE : 'NO_USE_CUBE'; -NO_USE_HASH_AGGREGATION : 'NO_USE_HASH_AGGREGATION'; -NO_USE_HASH_GBY_FOR_PUSHDOWN : 'NO_USE_HASH_GBY_FOR_PUSHDOWN'; -NO_USE_HASH : 'NO_USE_HASH'; -NO_USE_INVISIBLE_INDEXES : 'NO_USE_INVISIBLE_INDEXES'; -NO_USE_MERGE : 'NO_USE_MERGE'; -NO_USE_NL : 'NO_USE_NL'; -NO_USE_VECTOR_AGGREGATION : 'NO_USE_VECTOR_AGGREGATION'; -NOVALIDATE : 'NOVALIDATE'; -NO_VECTOR_TRANSFORM_DIMS : 'NO_VECTOR_TRANSFORM_DIMS'; -NO_VECTOR_TRANSFORM_FACT : 'NO_VECTOR_TRANSFORM_FACT'; -NO_VECTOR_TRANSFORM : 'NO_VECTOR_TRANSFORM'; -NOWAIT : 'NOWAIT'; -NO_XDB_FASTPATH_INSERT : 'NO_XDB_FASTPATH_INSERT'; -NO_XML_DML_REWRITE : 'NO_XML_DML_REWRITE'; -NO_XMLINDEX_REWRITE_IN_SELECT : 'NO_XMLINDEX_REWRITE_IN_SELECT'; -NO_XMLINDEX_REWRITE : 'NO_XMLINDEX_REWRITE'; -NO_XML_QUERY_REWRITE : 'NO_XML_QUERY_REWRITE'; -NO_ZONEMAP : 'NO_ZONEMAP'; -NTH_VALUE : 'NTH_VALUE'; -NULLIF : 'NULLIF'; -NULL_ : 'NULL'; -NULLS : 'NULLS'; -NUMBER : 'NUMBER'; -NUMERIC : 'NUMERIC'; -NUM_INDEX_KEYS : 'NUM_INDEX_KEYS'; -NUMTODSINTERVAL : 'NUMTODSINTERVAL'; -NUMTOYMINTERVAL : 'NUMTOYMINTERVAL'; -NVARCHAR2 : 'NVARCHAR2'; -NVL2 : 'NVL2'; -OBJECT2XML : 'OBJECT2XML'; -OBJECT : 'OBJECT'; -OBJ_ID : 'OBJ_ID'; -OBJNO : 'OBJNO'; -OBJNO_REUSE : 'OBJNO_REUSE'; -OCCURENCES : 'OCCURENCES'; -OFFLINE : 'OFFLINE'; -OFF : 'OFF'; -OFFSET : 'OFFSET'; -OF : 'OF'; -OIDINDEX : 'OIDINDEX'; -OID : 'OID'; -OLAP : 'OLAP'; -OLD : 'OLD'; -OLD_PUSH_PRED : 'OLD_PUSH_PRED'; -OLS : 'OLS'; -OLTP : 'OLTP'; -OMIT : 'OMIT'; -ONE : 'ONE'; -ONLINE : 'ONLINE'; -ONLINELOG : 'ONLINELOG'; -ONLY : 'ONLY'; -ON : 'ON'; -OPAQUE : 'OPAQUE'; -OPAQUE_TRANSFORM : 'OPAQUE_TRANSFORM'; -OPAQUE_XCANONICAL : 'OPAQUE_XCANONICAL'; -OPCODE : 'OPCODE'; -OPEN : 'OPEN'; -OPERATIONS : 'OPERATIONS'; -OPERATOR : 'OPERATOR'; -OPT_ESTIMATE : 'OPT_ESTIMATE'; -OPTIMAL : 'OPTIMAL'; -OPTIMIZE : 'OPTIMIZE'; -OPTIMIZER_FEATURES_ENABLE : 'OPTIMIZER_FEATURES_ENABLE'; -OPTIMIZER_GOAL : 'OPTIMIZER_GOAL'; -OPTION : 'OPTION'; -OPT_PARAM : 'OPT_PARAM'; -ORA_BRANCH : 'ORA_BRANCH'; -ORA_CHECK_ACL : 'ORA_CHECK_ACL'; -ORA_CHECK_PRIVILEGE : 'ORA_CHECK_PRIVILEGE'; -ORA_CLUSTERING : 'ORA_CLUSTERING'; -ORADATA : 'ORADATA'; -ORADEBUG : 'ORADEBUG'; -ORA_DST_AFFECTED : 'ORA_DST_AFFECTED'; -ORA_DST_CONVERT : 'ORA_DST_CONVERT'; -ORA_DST_ERROR : 'ORA_DST_ERROR'; -ORA_GET_ACLIDS : 'ORA_GET_ACLIDS'; -ORA_GET_PRIVILEGES : 'ORA_GET_PRIVILEGES'; -ORA_HASH : 'ORA_HASH'; -ORA_INVOKING_USERID : 'ORA_INVOKING_USERID'; -ORA_INVOKING_USER : 'ORA_INVOKING_USER'; -ORA_INVOKING_XS_USER_GUID : 'ORA_INVOKING_XS_USER_GUID'; -ORA_INVOKING_XS_USER : 'ORA_INVOKING_XS_USER'; -ORA_RAWCOMPARE : 'ORA_RAWCOMPARE'; -ORA_RAWCONCAT : 'ORA_RAWCONCAT'; -ORA_ROWSCN : 'ORA_ROWSCN'; -ORA_ROWSCN_RAW : 'ORA_ROWSCN_RAW'; -ORA_ROWVERSION : 'ORA_ROWVERSION'; -ORA_TABVERSION : 'ORA_TABVERSION'; -ORA_WRITE_TIME : 'ORA_WRITE_TIME'; -ORDERED : 'ORDERED'; -ORDERED_PREDICATES : 'ORDERED_PREDICATES'; -ORDER : 'ORDER'; -ORDINALITY : 'ORDINALITY'; -OR_EXPAND : 'OR_EXPAND'; -ORGANIZATION : 'ORGANIZATION'; -OR : 'OR'; -OR_PREDICATES : 'OR_PREDICATES'; -OSERROR : 'OSERROR'; -OTHER : 'OTHER'; -OUTER_JOIN_TO_ANTI : 'OUTER_JOIN_TO_ANTI'; -OUTER_JOIN_TO_INNER : 'OUTER_JOIN_TO_INNER'; -OUTER : 'OUTER'; -OUTLINE_LEAF : 'OUTLINE_LEAF'; -OUTLINE : 'OUTLINE'; -OUT_OF_LINE : 'OUT_OF_LINE'; -OUT : 'OUT'; -OVERFLOW_NOMOVE : 'OVERFLOW_NOMOVE'; -OVERFLOW : 'OVERFLOW'; -OVERLAPS : 'OVERLAPS'; -OVER : 'OVER'; -OVERRIDING : 'OVERRIDING'; -OWNER : 'OWNER'; -OWNERSHIP : 'OWNERSHIP'; -OWN : 'OWN'; -PACKAGE : 'PACKAGE'; -PACKAGES : 'PACKAGES'; -PARALLEL_ENABLE : 'PARALLEL_ENABLE'; -PARALLEL_INDEX : 'PARALLEL_INDEX'; -PARALLEL : 'PARALLEL'; -PARAMETERFILE : 'PARAMETERFILE'; -PARAMETERS : 'PARAMETERS'; -PARAM : 'PARAM'; -PARENT : 'PARENT'; -PARITY : 'PARITY'; -PARTIAL_JOIN : 'PARTIAL_JOIN'; -PARTIALLY : 'PARTIALLY'; -PARTIAL : 'PARTIAL'; -PARTIAL_ROLLUP_PUSHDOWN : 'PARTIAL_ROLLUP_PUSHDOWN'; -PARTITION_HASH : 'PARTITION_HASH'; -PARTITION_LIST : 'PARTITION_LIST'; -PARTITION : 'PARTITION'; -PARTITION_RANGE : 'PARTITION_RANGE'; -PARTITIONS : 'PARTITIONS'; -PARTNUMINST : 'PART$NUM$INST'; -PASSING : 'PASSING'; -PASSWORD_GRACE_TIME : 'PASSWORD_GRACE_TIME'; -PASSWORD_LIFE_TIME : 'PASSWORD_LIFE_TIME'; -PASSWORD_LOCK_TIME : 'PASSWORD_LOCK_TIME'; -PASSWORD : 'PASSWORD'; -PASSWORD_REUSE_MAX : 'PASSWORD_REUSE_MAX'; -PASSWORD_REUSE_TIME : 'PASSWORD_REUSE_TIME'; -PASSWORD_VERIFY_FUNCTION : 'PASSWORD_VERIFY_FUNCTION'; -PAST : 'PAST'; -PATCH : 'PATCH'; -PATH : 'PATH'; -PATH_PREFIX : 'PATH_PREFIX'; -PATHS : 'PATHS'; -PATTERN : 'PATTERN'; -PBL_HS_BEGIN : 'PBL_HS_BEGIN'; -PBL_HS_END : 'PBL_HS_END'; -PCTFREE : 'PCTFREE'; -PCTINCREASE : 'PCTINCREASE'; -PCTTHRESHOLD : 'PCTTHRESHOLD'; -PCTUSED : 'PCTUSED'; -PCTVERSION : 'PCTVERSION'; -PENDING : 'PENDING'; -PERCENT_FOUND : '%' SPACE* 'FOUND'; -PERCENT_ISOPEN : '%' SPACE* 'ISOPEN'; -PERCENT_NOTFOUND : '%' SPACE* 'NOTFOUND'; -PERCENT_KEYWORD : 'PERCENT'; -PERCENT_RANKM : 'PERCENT_RANKM'; -PERCENT_ROWCOUNT : '%' SPACE* 'ROWCOUNT'; -PERCENT_ROWTYPE : '%' SPACE* 'ROWTYPE'; -PERCENT_TYPE : '%' SPACE* 'TYPE'; -PERFORMANCE : 'PERFORMANCE'; -PERIOD_KEYWORD : 'PERIOD'; -PERMANENT : 'PERMANENT'; -PERMISSION : 'PERMISSION'; -PERMUTE : 'PERMUTE'; -PER : 'PER'; -PFILE : 'PFILE'; -PHYSICAL : 'PHYSICAL'; -PIKEY : 'PIKEY'; -PIPELINED : 'PIPELINED'; -PIPE : 'PIPE'; -PIV_GB : 'PIV_GB'; -PIVOT : 'PIVOT'; -PIV_SSF : 'PIV_SSF'; -PLACE_DISTINCT : 'PLACE_DISTINCT'; -PLACE_GROUP_BY : 'PLACE_GROUP_BY'; -PLAN : 'PLAN'; -PLSCOPE_SETTINGS : 'PLSCOPE_SETTINGS'; -PLS_INTEGER : 'PLS_INTEGER'; -PLSQL_CCFLAGS : 'PLSQL_CCFLAGS'; -PLSQL_CODE_TYPE : 'PLSQL_CODE_TYPE'; -PLSQL_DEBUG : 'PLSQL_DEBUG'; -PLSQL_OPTIMIZE_LEVEL : 'PLSQL_OPTIMIZE_LEVEL'; -PLSQL_WARNINGS : 'PLSQL_WARNINGS'; -PLUGGABLE : 'PLUGGABLE'; -POINT : 'POINT'; -POLICY : 'POLICY'; -POOL_16K : 'POOL_16K'; -POOL_2K : 'POOL_2K'; -POOL_32K : 'POOL_32K'; -POOL_4K : 'POOL_4K'; -POOL_8K : 'POOL_8K'; -POSITIVEN : 'POSITIVEN'; -POSITIVE : 'POSITIVE'; -POST_TRANSACTION : 'POST_TRANSACTION'; -POWERMULTISET_BY_CARDINALITY : 'POWERMULTISET_BY_CARDINALITY'; -POWERMULTISET : 'POWERMULTISET'; -POWER : 'POWER'; -PQ_CONCURRENT_UNION : 'PQ_CONCURRENT_UNION'; -PQ_DISTRIBUTE : 'PQ_DISTRIBUTE'; -PQ_DISTRIBUTE_WINDOW : 'PQ_DISTRIBUTE_WINDOW'; -PQ_FILTER : 'PQ_FILTER'; -PQ_MAP : 'PQ_MAP'; -PQ_NOMAP : 'PQ_NOMAP'; -PQ_REPLICATE : 'PQ_REPLICATE'; -PQ_SKEW : 'PQ_SKEW'; -PRAGMA : 'PRAGMA'; -PREBUILT : 'PREBUILT'; -PRECEDES : 'PRECEDES'; -PRECEDING : 'PRECEDING'; -PRECISION : 'PRECISION'; -PRECOMPUTE_SUBQUERY : 'PRECOMPUTE_SUBQUERY'; -PREDICATE_REORDERS : 'PREDICATE_REORDERS'; -PRELOAD : 'PRELOAD'; -PREPARE : 'PREPARE'; -PRESENTNNV : 'PRESENTNNV'; -PRESENT : 'PRESENT'; -PRESENTV : 'PRESENTV'; -PRESERVE_OID : 'PRESERVE_OID'; -PRESERVE : 'PRESERVE'; -PRETTY : 'PRETTY'; -PREVIOUS : 'PREVIOUS'; -PREV : 'PREV'; -PRIMARY : 'PRIMARY'; -PRINTBLOBTOCLOB : 'PRINTBLOBTOCLOB'; -PRIORITY : 'PRIORITY'; -PRIOR : 'PRIOR'; -PRIVATE : 'PRIVATE'; -PRIVATE_SGA : 'PRIVATE_SGA'; -PRIVILEGED : 'PRIVILEGED'; -PRIVILEGE : 'PRIVILEGE'; -PRIVILEGES : 'PRIVILEGES'; -PROCEDURAL : 'PROCEDURAL'; -PROCEDURE : 'PROCEDURE'; -PROCESS : 'PROCESS'; -PROFILE : 'PROFILE'; -PROGRAM : 'PROGRAM'; -PROJECT : 'PROJECT'; -PROPAGATE : 'PROPAGATE'; -PROTECTED : 'PROTECTED'; -PROTECTION : 'PROTECTION'; -PROXY : 'PROXY'; -PRUNING : 'PRUNING'; -PUBLIC : 'PUBLIC'; -PULL_PRED : 'PULL_PRED'; -PURGE : 'PURGE'; -PUSH_PRED : 'PUSH_PRED'; -PUSH_SUBQ : 'PUSH_SUBQ'; -PX_FAULT_TOLERANCE : 'PX_FAULT_TOLERANCE'; -PX_GRANULE : 'PX_GRANULE'; -PX_JOIN_FILTER : 'PX_JOIN_FILTER'; -QB_NAME : 'QB_NAME'; -QUERY_BLOCK : 'QUERY_BLOCK'; -QUERY : 'QUERY'; -QUEUE_CURR : 'QUEUE_CURR'; -QUEUE : 'QUEUE'; -QUEUE_ROWP : 'QUEUE_ROWP'; -QUIESCE : 'QUIESCE'; -QUORUM : 'QUORUM'; -QUOTA : 'QUOTA'; -RAISE : 'RAISE'; -RANDOM_LOCAL : 'RANDOM_LOCAL'; -RANDOM : 'RANDOM'; -RANGE : 'RANGE'; -RANKM : 'RANKM'; -RAPIDLY : 'RAPIDLY'; -RAW : 'RAW'; -RAWTOHEX : 'RAWTOHEX'; -RAWTONHEX : 'RAWTONHEX'; -RBA : 'RBA'; -RBO_OUTLINE : 'RBO_OUTLINE'; -RDBA : 'RDBA'; -READ : 'READ'; -READS : 'READS'; -REALM : 'REALM'; -REAL : 'REAL'; -REBALANCE : 'REBALANCE'; -REBUILD : 'REBUILD'; -RECORD : 'RECORD'; -RECORDS_PER_BLOCK : 'RECORDS_PER_BLOCK'; -RECOVERABLE : 'RECOVERABLE'; -RECOVER : 'RECOVER'; -RECOVERY : 'RECOVERY'; -RECYCLEBIN : 'RECYCLEBIN'; -RECYCLE : 'RECYCLE'; -REDACTION : 'REDACTION'; -REDEFINE : 'REDEFINE'; -REDO : 'REDO'; -REDUCED : 'REDUCED'; -REDUNDANCY : 'REDUNDANCY'; -REF_CASCADE_CURSOR : 'REF_CASCADE_CURSOR'; -REFERENCED : 'REFERENCED'; -REFERENCE : 'REFERENCE'; -REFERENCES : 'REFERENCES'; -REFERENCING : 'REFERENCING'; -REF : 'REF'; -REFRESH : 'REFRESH'; -REFTOHEX : 'REFTOHEX'; -REGEXP_COUNT : 'REGEXP_COUNT'; -REGEXP_INSTR : 'REGEXP_INSTR'; -REGEXP_LIKE : 'REGEXP_LIKE'; -REGEXP_REPLACE : 'REGEXP_REPLACE'; -REGEXP_SUBSTR : 'REGEXP_SUBSTR'; -REGISTER : 'REGISTER'; -REGR_AVGX : 'REGR_AVGX'; -REGR_AVGY : 'REGR_AVGY'; -REGR_COUNT : 'REGR_COUNT'; -REGR_INTERCEPT : 'REGR_INTERCEPT'; -REGR_R2 : 'REGR_R2'; -REGR_SLOPE : 'REGR_SLOPE'; -REGR_SXX : 'REGR_SXX'; -REGR_SXY : 'REGR_SXY'; -REGR_SYY : 'REGR_SYY'; -REGULAR : 'REGULAR'; -REJECT : 'REJECT'; -REKEY : 'REKEY'; -RELATIONAL : 'RELATIONAL'; -RELIES_ON : 'RELIES_ON'; -RELOCATE : 'RELOCATE'; -RELY : 'RELY'; -REMAINDER : 'REMAINDER'; -REMOTE_MAPPED : 'REMOTE_MAPPED'; -REMOVE : 'REMOVE'; -RENAME : 'RENAME'; -REPAIR : 'REPAIR'; -REPEAT : 'REPEAT'; -REPLACE : 'REPLACE'; -REPLICATION : 'REPLICATION'; -REQUIRED : 'REQUIRED'; -RESETLOGS : 'RESETLOGS'; -RESET : 'RESET'; -RESIZE : 'RESIZE'; -RESOLVE : 'RESOLVE'; -RESOLVER : 'RESOLVER'; -RESOURCE : 'RESOURCE'; -RESPECT : 'RESPECT'; -RESTART : 'RESTART'; -RESTORE_AS_INTERVALS : 'RESTORE_AS_INTERVALS'; -RESTORE : 'RESTORE'; -RESTRICT_ALL_REF_CONS : 'RESTRICT_ALL_REF_CONS'; -RESTRICTED : 'RESTRICTED'; -RESTRICT_REFERENCES : 'RESTRICT_REFERENCES'; -RESTRICT : 'RESTRICT'; -RESULT_CACHE : 'RESULT_CACHE'; -RESULT : 'RESULT'; -RESUMABLE : 'RESUMABLE'; -RESUME : 'RESUME'; -RETENTION : 'RETENTION'; -RETRY_ON_ROW_CHANGE : 'RETRY_ON_ROW_CHANGE'; -RETURNING : 'RETURNING'; -RETURN : 'RETURN'; -REUSE : 'REUSE'; -REVERSE : 'REVERSE'; -REVOKE : 'REVOKE'; -REWRITE_OR_ERROR : 'REWRITE_OR_ERROR'; -REWRITE : 'REWRITE'; -RIGHT : 'RIGHT'; -ROLE : 'ROLE'; -ROLESET : 'ROLESET'; -ROLES : 'ROLES'; -ROLLBACK : 'ROLLBACK'; -ROLLING : 'ROLLING'; -ROLLUP : 'ROLLUP'; -ROWDEPENDENCIES : 'ROWDEPENDENCIES'; -ROWID_MAPPING_TABLE : 'ROWID_MAPPING_TABLE'; -ROWID : 'ROWID'; -ROWIDTOCHAR : 'ROWIDTOCHAR'; -ROWIDTONCHAR : 'ROWIDTONCHAR'; -ROW_LENGTH : 'ROW_LENGTH'; -ROWNUM : 'ROWNUM'; -ROW : 'ROW'; -ROWS : 'ROWS'; -RPAD : 'RPAD'; -RTRIM : 'RTRIM'; -RULE : 'RULE'; -RULES : 'RULES'; -RUNNING : 'RUNNING'; -SALT : 'SALT'; -SAMPLE : 'SAMPLE'; -SAVE_AS_INTERVALS : 'SAVE_AS_INTERVALS'; -SAVEPOINT : 'SAVEPOINT'; -SAVE : 'SAVE'; -SB4 : 'SB4'; -SCALE_ROWS : 'SCALE_ROWS'; -SCALE : 'SCALE'; -SCAN_INSTANCES : 'SCAN_INSTANCES'; -SCAN : 'SCAN'; -SCHEDULER : 'SCHEDULER'; -SCHEMACHECK : 'SCHEMACHECK'; -SCHEMA : 'SCHEMA'; -SCN_ASCENDING : 'SCN_ASCENDING'; -SCN : 'SCN'; -SCOPE : 'SCOPE'; -SCRUB : 'SCRUB'; -SD_ALL : 'SD_ALL'; -SD_INHIBIT : 'SD_INHIBIT'; -SDO_GEOM_MBR : 'SDO_GEOM_MBR'; -SD_SHOW : 'SD_SHOW'; -SEARCH : 'SEARCH'; -SECOND : 'SECOND'; -SECRET : 'SECRET'; -SECUREFILE_DBA : 'SECUREFILE_DBA'; -SECUREFILE : 'SECUREFILE'; -SECURITY : 'SECURITY'; -SEED : 'SEED'; -SEG_BLOCK : 'SEG_BLOCK'; -SEG_FILE : 'SEG_FILE'; -SEGMENT : 'SEGMENT'; -SELECTIVITY : 'SELECTIVITY'; -SELECT : 'SELECT'; -SELF : 'SELF'; -SEMIJOIN_DRIVER : 'SEMIJOIN_DRIVER'; -SEMIJOIN : 'SEMIJOIN'; -SEMI_TO_INNER : 'SEMI_TO_INNER'; -SEQUENCED : 'SEQUENCED'; -SEQUENCE : 'SEQUENCE'; -SEQUENTIAL : 'SEQUENTIAL'; -SEQ : 'SEQ'; -SERIALIZABLE : 'SERIALIZABLE'; -SERIALLY_REUSABLE : 'SERIALLY_REUSABLE'; -SERIAL : 'SERIAL'; -SERVERERROR : 'SERVERERROR'; -SERVICE_NAME_CONVERT : 'SERVICE_NAME_CONVERT'; -SERVICES : 'SERVICES'; -SESSION_CACHED_CURSORS : 'SESSION_CACHED_CURSORS'; -SESSION : 'SESSION'; -SESSIONS_PER_USER : 'SESSIONS_PER_USER'; -SESSIONTIMEZONE : 'SESSIONTIMEZONE'; -SESSIONTZNAME : 'SESSIONTZNAME'; -SET : 'SET'; -SETS : 'SETS'; -SETTINGS : 'SETTINGS'; -SET_TO_JOIN : 'SET_TO_JOIN'; -SEVERE : 'SEVERE'; -SHARED_POOL : 'SHARED_POOL'; -SHARED : 'SHARED'; -SHARE : 'SHARE'; -SHARING : 'SHARING'; -SHELFLIFE : 'SHELFLIFE'; -SHOW : 'SHOW'; -SHRINK : 'SHRINK'; -SHUTDOWN : 'SHUTDOWN'; -SIBLINGS : 'SIBLINGS'; -SID : 'SID'; -SIGNAL_COMPONENT : 'SIGNAL_COMPONENT'; -SIGNAL_FUNCTION : 'SIGNAL_FUNCTION'; -SIGN : 'SIGN'; -SIGNTYPE : 'SIGNTYPE'; -SIMPLE_INTEGER : 'SIMPLE_INTEGER'; -SIMPLE : 'SIMPLE'; -SINGLE : 'SINGLE'; -SINGLETASK : 'SINGLETASK'; -SINH : 'SINH'; -SIN : 'SIN'; -SIZE : 'SIZE'; -SKIP_EXT_OPTIMIZER : 'SKIP_EXT_OPTIMIZER'; -SKIP_ : 'SKIP'; -SKIP_UNQ_UNUSABLE_IDX : 'SKIP_UNQ_UNUSABLE_IDX'; -SKIP_UNUSABLE_INDEXES : 'SKIP_UNUSABLE_INDEXES'; -SMALLFILE : 'SMALLFILE'; -SMALLINT : 'SMALLINT'; -SNAPSHOT : 'SNAPSHOT'; -SOME : 'SOME'; -SORT : 'SORT'; -SOUNDEX : 'SOUNDEX'; -SOURCE_FILE_DIRECTORY : 'SOURCE_FILE_DIRECTORY'; -SOURCE_FILE_NAME_CONVERT : 'SOURCE_FILE_NAME_CONVERT'; -SOURCE : 'SOURCE'; -SPACE_KEYWORD : 'SPACE'; -SPECIFICATION : 'SPECIFICATION'; -SPFILE : 'SPFILE'; -SPLIT : 'SPLIT'; -SPREADSHEET : 'SPREADSHEET'; -SQLDATA : 'SQLDATA'; -SQLERROR : 'SQLERROR'; -SQLLDR : 'SQLLDR'; -SQL : 'SQL'; -SQL_TRACE : 'SQL_TRACE'; -SQL_TRANSLATION_PROFILE : 'SQL_TRANSLATION_PROFILE'; -SQRT : 'SQRT'; -STALE : 'STALE'; -STANDALONE : 'STANDALONE'; -STANDARD_HASH : 'STANDARD_HASH'; -STANDBY_MAX_DATA_DELAY : 'STANDBY_MAX_DATA_DELAY'; -STANDBYS : 'STANDBYS'; -STANDBY : 'STANDBY'; -STAR : 'STAR'; -STAR_TRANSFORMATION : 'STAR_TRANSFORMATION'; -START : 'START'; -STARTUP : 'STARTUP'; -STATEMENT_ID : 'STATEMENT_ID'; -STATEMENT_QUEUING : 'STATEMENT_QUEUING'; -STATEMENTS : 'STATEMENTS'; -STATEMENT : 'STATEMENT'; -STATE : 'STATE'; -STATIC : 'STATIC'; -STATISTICS : 'STATISTICS'; -STATS_BINOMIAL_TEST : 'STATS_BINOMIAL_TEST'; -STATS_CROSSTAB : 'STATS_CROSSTAB'; -STATS_F_TEST : 'STATS_F_TEST'; -STATS_KS_TEST : 'STATS_KS_TEST'; -STATS_MODE : 'STATS_MODE'; -STATS_MW_TEST : 'STATS_MW_TEST'; -STATS_ONE_WAY_ANOVA : 'STATS_ONE_WAY_ANOVA'; -STATS_T_TEST_INDEP : 'STATS_T_TEST_INDEP'; -STATS_T_TEST_INDEPU : 'STATS_T_TEST_INDEPU'; -STATS_T_TEST_ONE : 'STATS_T_TEST_ONE'; -STATS_T_TEST_PAIRED : 'STATS_T_TEST_PAIRED'; -STATS_WSR_TEST : 'STATS_WSR_TEST'; -STDDEV_POP : 'STDDEV_POP'; -STDDEV_SAMP : 'STDDEV_SAMP'; -STOP : 'STOP'; -STORAGE : 'STORAGE'; -STORE : 'STORE'; -STREAMS : 'STREAMS'; -STREAM : 'STREAM'; -STRICT : 'STRICT'; -STRING : 'STRING'; -STRIPE_COLUMNS : 'STRIPE_COLUMNS'; -STRIPE_WIDTH : 'STRIPE_WIDTH'; -STRIP : 'STRIP'; -STRUCTURE : 'STRUCTURE'; -SUBMULTISET : 'SUBMULTISET'; -SUBPARTITION_REL : 'SUBPARTITION_REL'; -SUBPARTITIONS : 'SUBPARTITIONS'; -SUBPARTITION : 'SUBPARTITION'; -SUBQUERIES : 'SUBQUERIES'; -SUBQUERY_PRUNING : 'SUBQUERY_PRUNING'; -SUBSCRIBE : 'SUBSCRIBE'; -SUBSET : 'SUBSET'; -SUBSTITUTABLE : 'SUBSTITUTABLE'; -SUBSTR2 : 'SUBSTR2'; -SUBSTR4 : 'SUBSTR4'; -SUBSTRB : 'SUBSTRB'; -SUBSTRC : 'SUBSTRC'; -SUBTYPE : 'SUBTYPE'; -SUCCESSFUL : 'SUCCESSFUL'; -SUCCESS : 'SUCCESS'; -SUMMARY : 'SUMMARY'; -SUPPLEMENTAL : 'SUPPLEMENTAL'; -SUSPEND : 'SUSPEND'; -SWAP_JOIN_INPUTS : 'SWAP_JOIN_INPUTS'; -SWITCHOVER : 'SWITCHOVER'; -SWITCH : 'SWITCH'; -SYNCHRONOUS : 'SYNCHRONOUS'; -SYNC : 'SYNC'; -SYNONYM : 'SYNONYM'; -SYSASM : 'SYSASM'; -SYS_AUDIT : 'SYS_AUDIT'; -SYSAUX : 'SYSAUX'; -SYSBACKUP : 'SYSBACKUP'; -SYS_CHECKACL : 'SYS_CHECKACL'; -SYS_CHECK_PRIVILEGE : 'SYS_CHECK_PRIVILEGE'; -SYS_CONNECT_BY_PATH : 'SYS_CONNECT_BY_PATH'; -SYS_CONTEXT : 'SYS_CONTEXT'; -SYSDATE : 'SYSDATE'; -SYSDBA : 'SYSDBA'; -SYS_DBURIGEN : 'SYS_DBURIGEN'; -SYSDG : 'SYSDG'; -SYS_DL_CURSOR : 'SYS_DL_CURSOR'; -SYS_DM_RXFORM_CHR : 'SYS_DM_RXFORM_CHR'; -SYS_DM_RXFORM_NUM : 'SYS_DM_RXFORM_NUM'; -SYS_DOM_COMPARE : 'SYS_DOM_COMPARE'; -SYS_DST_PRIM2SEC : 'SYS_DST_PRIM2SEC'; -SYS_DST_SEC2PRIM : 'SYS_DST_SEC2PRIM'; -SYS_ET_BFILE_TO_RAW : 'SYS_ET_BFILE_TO_RAW'; -SYS_ET_BLOB_TO_IMAGE : 'SYS_ET_BLOB_TO_IMAGE'; -SYS_ET_IMAGE_TO_BLOB : 'SYS_ET_IMAGE_TO_BLOB'; -SYS_ET_RAW_TO_BFILE : 'SYS_ET_RAW_TO_BFILE'; -SYS_EXTPDTXT : 'SYS_EXTPDTXT'; -SYS_EXTRACT_UTC : 'SYS_EXTRACT_UTC'; -SYS_FBT_INSDEL : 'SYS_FBT_INSDEL'; -SYS_FILTER_ACLS : 'SYS_FILTER_ACLS'; -SYS_FNMATCHES : 'SYS_FNMATCHES'; -SYS_FNREPLACE : 'SYS_FNREPLACE'; -SYS_GET_ACLIDS : 'SYS_GET_ACLIDS'; -SYS_GET_COL_ACLIDS : 'SYS_GET_COL_ACLIDS'; -SYS_GET_PRIVILEGES : 'SYS_GET_PRIVILEGES'; -SYS_GETTOKENID : 'SYS_GETTOKENID'; -SYS_GETXTIVAL : 'SYS_GETXTIVAL'; -SYS_GUID : 'SYS_GUID'; -SYSGUID : 'SYSGUID'; -SYSKM : 'SYSKM'; -SYS_MAKE_XMLNODEID : 'SYS_MAKE_XMLNODEID'; -SYS_MAKEXML : 'SYS_MAKEXML'; -SYS_MKXMLATTR : 'SYS_MKXMLATTR'; -SYS_MKXTI : 'SYS_MKXTI'; -SYSOBJ : 'SYSOBJ'; -SYS_OP_ADT2BIN : 'SYS_OP_ADT2BIN'; -SYS_OP_ADTCONS : 'SYS_OP_ADTCONS'; -SYS_OP_ALSCRVAL : 'SYS_OP_ALSCRVAL'; -SYS_OP_ATG : 'SYS_OP_ATG'; -SYS_OP_BIN2ADT : 'SYS_OP_BIN2ADT'; -SYS_OP_BITVEC : 'SYS_OP_BITVEC'; -SYS_OP_BL2R : 'SYS_OP_BL2R'; -SYS_OP_BLOOM_FILTER_LIST : 'SYS_OP_BLOOM_FILTER_LIST'; -SYS_OP_BLOOM_FILTER : 'SYS_OP_BLOOM_FILTER'; -SYS_OP_C2C : 'SYS_OP_C2C'; -SYS_OP_CAST : 'SYS_OP_CAST'; -SYS_OP_CEG : 'SYS_OP_CEG'; -SYS_OP_CL2C : 'SYS_OP_CL2C'; -SYS_OP_COMBINED_HASH : 'SYS_OP_COMBINED_HASH'; -SYS_OP_COMP : 'SYS_OP_COMP'; -SYS_OP_CONVERT : 'SYS_OP_CONVERT'; -SYS_OP_COUNTCHG : 'SYS_OP_COUNTCHG'; -SYS_OP_CSCONV : 'SYS_OP_CSCONV'; -SYS_OP_CSCONVTEST : 'SYS_OP_CSCONVTEST'; -SYS_OP_CSR : 'SYS_OP_CSR'; -SYS_OP_CSX_PATCH : 'SYS_OP_CSX_PATCH'; -SYS_OP_CYCLED_SEQ : 'SYS_OP_CYCLED_SEQ'; -SYS_OP_DECOMP : 'SYS_OP_DECOMP'; -SYS_OP_DESCEND : 'SYS_OP_DESCEND'; -SYS_OP_DISTINCT : 'SYS_OP_DISTINCT'; -SYS_OP_DRA : 'SYS_OP_DRA'; -SYS_OP_DUMP : 'SYS_OP_DUMP'; -SYS_OP_DV_CHECK : 'SYS_OP_DV_CHECK'; -SYS_OP_ENFORCE_NOT_NULL : 'SYS_OP_ENFORCE_NOT_NULL$'; -SYSOPER : 'SYSOPER'; -SYS_OP_EXTRACT : 'SYS_OP_EXTRACT'; -SYS_OP_GROUPING : 'SYS_OP_GROUPING'; -SYS_OP_GUID : 'SYS_OP_GUID'; -SYS_OP_HASH : 'SYS_OP_HASH'; -SYS_OP_IIX : 'SYS_OP_IIX'; -SYS_OP_ITR : 'SYS_OP_ITR'; -SYS_OP_KEY_VECTOR_CREATE : 'SYS_OP_KEY_VECTOR_CREATE'; -SYS_OP_KEY_VECTOR_FILTER_LIST : 'SYS_OP_KEY_VECTOR_FILTER_LIST'; -SYS_OP_KEY_VECTOR_FILTER : 'SYS_OP_KEY_VECTOR_FILTER'; -SYS_OP_KEY_VECTOR_SUCCEEDED : 'SYS_OP_KEY_VECTOR_SUCCEEDED'; -SYS_OP_KEY_VECTOR_USE : 'SYS_OP_KEY_VECTOR_USE'; -SYS_OP_LBID : 'SYS_OP_LBID'; -SYS_OP_LOBLOC2BLOB : 'SYS_OP_LOBLOC2BLOB'; -SYS_OP_LOBLOC2CLOB : 'SYS_OP_LOBLOC2CLOB'; -SYS_OP_LOBLOC2ID : 'SYS_OP_LOBLOC2ID'; -SYS_OP_LOBLOC2NCLOB : 'SYS_OP_LOBLOC2NCLOB'; -SYS_OP_LOBLOC2TYP : 'SYS_OP_LOBLOC2TYP'; -SYS_OP_LSVI : 'SYS_OP_LSVI'; -SYS_OP_LVL : 'SYS_OP_LVL'; -SYS_OP_MAKEOID : 'SYS_OP_MAKEOID'; -SYS_OP_MAP_NONNULL : 'SYS_OP_MAP_NONNULL'; -SYS_OP_MSR : 'SYS_OP_MSR'; -SYS_OP_NICOMBINE : 'SYS_OP_NICOMBINE'; -SYS_OP_NIEXTRACT : 'SYS_OP_NIEXTRACT'; -SYS_OP_NII : 'SYS_OP_NII'; -SYS_OP_NIX : 'SYS_OP_NIX'; -SYS_OP_NOEXPAND : 'SYS_OP_NOEXPAND'; -SYS_OP_NTCIMG : 'SYS_OP_NTCIMG$'; -SYS_OP_NUMTORAW : 'SYS_OP_NUMTORAW'; -SYS_OP_OIDVALUE : 'SYS_OP_OIDVALUE'; -SYS_OP_OPNSIZE : 'SYS_OP_OPNSIZE'; -SYS_OP_PAR_1 : 'SYS_OP_PAR_1'; -SYS_OP_PARGID_1 : 'SYS_OP_PARGID_1'; -SYS_OP_PARGID : 'SYS_OP_PARGID'; -SYS_OP_PAR : 'SYS_OP_PAR'; -SYS_OP_PART_ID : 'SYS_OP_PART_ID'; -SYS_OP_PIVOT : 'SYS_OP_PIVOT'; -SYS_OP_R2O : 'SYS_OP_R2O'; -SYS_OP_RAWTONUM : 'SYS_OP_RAWTONUM'; -SYS_OP_RDTM : 'SYS_OP_RDTM'; -SYS_OP_REF : 'SYS_OP_REF'; -SYS_OP_RMTD : 'SYS_OP_RMTD'; -SYS_OP_ROWIDTOOBJ : 'SYS_OP_ROWIDTOOBJ'; -SYS_OP_RPB : 'SYS_OP_RPB'; -SYS_OPTLOBPRBSC : 'SYS_OPTLOBPRBSC'; -SYS_OP_TOSETID : 'SYS_OP_TOSETID'; -SYS_OP_TPR : 'SYS_OP_TPR'; -SYS_OP_TRTB : 'SYS_OP_TRTB'; -SYS_OPTXICMP : 'SYS_OPTXICMP'; -SYS_OPTXQCASTASNQ : 'SYS_OPTXQCASTASNQ'; -SYS_OP_UNDESCEND : 'SYS_OP_UNDESCEND'; -SYS_OP_VECAND : 'SYS_OP_VECAND'; -SYS_OP_VECBIT : 'SYS_OP_VECBIT'; -SYS_OP_VECOR : 'SYS_OP_VECOR'; -SYS_OP_VECXOR : 'SYS_OP_VECXOR'; -SYS_OP_VERSION : 'SYS_OP_VERSION'; -SYS_OP_VREF : 'SYS_OP_VREF'; -SYS_OP_VVD : 'SYS_OP_VVD'; -SYS_OP_XMLCONS_FOR_CSX : 'SYS_OP_XMLCONS_FOR_CSX'; -SYS_OP_XPTHATG : 'SYS_OP_XPTHATG'; -SYS_OP_XPTHIDX : 'SYS_OP_XPTHIDX'; -SYS_OP_XPTHOP : 'SYS_OP_XPTHOP'; -SYS_OP_XTXT2SQLT : 'SYS_OP_XTXT2SQLT'; -SYS_OP_ZONE_ID : 'SYS_OP_ZONE_ID'; -SYS_ORDERKEY_DEPTH : 'SYS_ORDERKEY_DEPTH'; -SYS_ORDERKEY_MAXCHILD : 'SYS_ORDERKEY_MAXCHILD'; -SYS_ORDERKEY_PARENT : 'SYS_ORDERKEY_PARENT'; -SYS_PARALLEL_TXN : 'SYS_PARALLEL_TXN'; -SYS_PATHID_IS_ATTR : 'SYS_PATHID_IS_ATTR'; -SYS_PATHID_IS_NMSPC : 'SYS_PATHID_IS_NMSPC'; -SYS_PATHID_LASTNAME : 'SYS_PATHID_LASTNAME'; -SYS_PATHID_LASTNMSPC : 'SYS_PATHID_LASTNMSPC'; -SYS_PATH_REVERSE : 'SYS_PATH_REVERSE'; -SYS_PXQEXTRACT : 'SYS_PXQEXTRACT'; -SYS_RAW_TO_XSID : 'SYS_RAW_TO_XSID'; -SYS_RID_ORDER : 'SYS_RID_ORDER'; -SYS_ROW_DELTA : 'SYS_ROW_DELTA'; -SYS_SC_2_XMLT : 'SYS_SC_2_XMLT'; -SYS_SYNRCIREDO : 'SYS_SYNRCIREDO'; -SYSTEM_DEFINED : 'SYSTEM_DEFINED'; -SYSTEM : 'SYSTEM'; -SYSTIMESTAMP : 'SYSTIMESTAMP'; -SYS_TYPEID : 'SYS_TYPEID'; -SYS_UMAKEXML : 'SYS_UMAKEXML'; -SYS_XMLANALYZE : 'SYS_XMLANALYZE'; -SYS_XMLCONTAINS : 'SYS_XMLCONTAINS'; -SYS_XMLCONV : 'SYS_XMLCONV'; -SYS_XMLEXNSURI : 'SYS_XMLEXNSURI'; -SYS_XMLGEN : 'SYS_XMLGEN'; -SYS_XMLI_LOC_ISNODE : 'SYS_XMLI_LOC_ISNODE'; -SYS_XMLI_LOC_ISTEXT : 'SYS_XMLI_LOC_ISTEXT'; -SYS_XMLINSTR : 'SYS_XMLINSTR'; -SYS_XMLLOCATOR_GETSVAL : 'SYS_XMLLOCATOR_GETSVAL'; -SYS_XMLNODEID_GETCID : 'SYS_XMLNODEID_GETCID'; -SYS_XMLNODEID_GETLOCATOR : 'SYS_XMLNODEID_GETLOCATOR'; -SYS_XMLNODEID_GETOKEY : 'SYS_XMLNODEID_GETOKEY'; -SYS_XMLNODEID_GETPATHID : 'SYS_XMLNODEID_GETPATHID'; -SYS_XMLNODEID_GETPTRID : 'SYS_XMLNODEID_GETPTRID'; -SYS_XMLNODEID_GETRID : 'SYS_XMLNODEID_GETRID'; -SYS_XMLNODEID_GETSVAL : 'SYS_XMLNODEID_GETSVAL'; -SYS_XMLNODEID_GETTID : 'SYS_XMLNODEID_GETTID'; -SYS_XMLNODEID : 'SYS_XMLNODEID'; -SYS_XMLT_2_SC : 'SYS_XMLT_2_SC'; -SYS_XMLTRANSLATE : 'SYS_XMLTRANSLATE'; -SYS_XMLTYPE2SQL : 'SYS_XMLTYPE2SQL'; -SYS_XQ_ASQLCNV : 'SYS_XQ_ASQLCNV'; -SYS_XQ_ATOMCNVCHK : 'SYS_XQ_ATOMCNVCHK'; -SYS_XQBASEURI : 'SYS_XQBASEURI'; -SYS_XQCASTABLEERRH : 'SYS_XQCASTABLEERRH'; -SYS_XQCODEP2STR : 'SYS_XQCODEP2STR'; -SYS_XQCODEPEQ : 'SYS_XQCODEPEQ'; -SYS_XQCON2SEQ : 'SYS_XQCON2SEQ'; -SYS_XQCONCAT : 'SYS_XQCONCAT'; -SYS_XQDELETE : 'SYS_XQDELETE'; -SYS_XQDFLTCOLATION : 'SYS_XQDFLTCOLATION'; -SYS_XQDOC : 'SYS_XQDOC'; -SYS_XQDOCURI : 'SYS_XQDOCURI'; -SYS_XQDURDIV : 'SYS_XQDURDIV'; -SYS_XQED4URI : 'SYS_XQED4URI'; -SYS_XQENDSWITH : 'SYS_XQENDSWITH'; -SYS_XQERRH : 'SYS_XQERRH'; -SYS_XQERR : 'SYS_XQERR'; -SYS_XQESHTMLURI : 'SYS_XQESHTMLURI'; -SYS_XQEXLOBVAL : 'SYS_XQEXLOBVAL'; -SYS_XQEXSTWRP : 'SYS_XQEXSTWRP'; -SYS_XQEXTRACT : 'SYS_XQEXTRACT'; -SYS_XQEXTRREF : 'SYS_XQEXTRREF'; -SYS_XQEXVAL : 'SYS_XQEXVAL'; -SYS_XQFB2STR : 'SYS_XQFB2STR'; -SYS_XQFNBOOL : 'SYS_XQFNBOOL'; -SYS_XQFNCMP : 'SYS_XQFNCMP'; -SYS_XQFNDATIM : 'SYS_XQFNDATIM'; -SYS_XQFNLNAME : 'SYS_XQFNLNAME'; -SYS_XQFNNM : 'SYS_XQFNNM'; -SYS_XQFNNSURI : 'SYS_XQFNNSURI'; -SYS_XQFNPREDTRUTH : 'SYS_XQFNPREDTRUTH'; -SYS_XQFNQNM : 'SYS_XQFNQNM'; -SYS_XQFNROOT : 'SYS_XQFNROOT'; -SYS_XQFORMATNUM : 'SYS_XQFORMATNUM'; -SYS_XQFTCONTAIN : 'SYS_XQFTCONTAIN'; -SYS_XQFUNCR : 'SYS_XQFUNCR'; -SYS_XQGETCONTENT : 'SYS_XQGETCONTENT'; -SYS_XQINDXOF : 'SYS_XQINDXOF'; -SYS_XQINSERT : 'SYS_XQINSERT'; -SYS_XQINSPFX : 'SYS_XQINSPFX'; -SYS_XQIRI2URI : 'SYS_XQIRI2URI'; -SYS_XQLANG : 'SYS_XQLANG'; -SYS_XQLLNMFRMQNM : 'SYS_XQLLNMFRMQNM'; -SYS_XQMKNODEREF : 'SYS_XQMKNODEREF'; -SYS_XQNILLED : 'SYS_XQNILLED'; -SYS_XQNODENAME : 'SYS_XQNODENAME'; -SYS_XQNORMSPACE : 'SYS_XQNORMSPACE'; -SYS_XQNORMUCODE : 'SYS_XQNORMUCODE'; -SYS_XQ_NRNG : 'SYS_XQ_NRNG'; -SYS_XQNSP4PFX : 'SYS_XQNSP4PFX'; -SYS_XQNSPFRMQNM : 'SYS_XQNSPFRMQNM'; -SYS_XQPFXFRMQNM : 'SYS_XQPFXFRMQNM'; -SYS_XQ_PKSQL2XML : 'SYS_XQ_PKSQL2XML'; -SYS_XQPOLYABS : 'SYS_XQPOLYABS'; -SYS_XQPOLYADD : 'SYS_XQPOLYADD'; -SYS_XQPOLYCEL : 'SYS_XQPOLYCEL'; -SYS_XQPOLYCSTBL : 'SYS_XQPOLYCSTBL'; -SYS_XQPOLYCST : 'SYS_XQPOLYCST'; -SYS_XQPOLYDIV : 'SYS_XQPOLYDIV'; -SYS_XQPOLYFLR : 'SYS_XQPOLYFLR'; -SYS_XQPOLYMOD : 'SYS_XQPOLYMOD'; -SYS_XQPOLYMUL : 'SYS_XQPOLYMUL'; -SYS_XQPOLYRND : 'SYS_XQPOLYRND'; -SYS_XQPOLYSQRT : 'SYS_XQPOLYSQRT'; -SYS_XQPOLYSUB : 'SYS_XQPOLYSUB'; -SYS_XQPOLYUMUS : 'SYS_XQPOLYUMUS'; -SYS_XQPOLYUPLS : 'SYS_XQPOLYUPLS'; -SYS_XQPOLYVEQ : 'SYS_XQPOLYVEQ'; -SYS_XQPOLYVGE : 'SYS_XQPOLYVGE'; -SYS_XQPOLYVGT : 'SYS_XQPOLYVGT'; -SYS_XQPOLYVLE : 'SYS_XQPOLYVLE'; -SYS_XQPOLYVLT : 'SYS_XQPOLYVLT'; -SYS_XQPOLYVNE : 'SYS_XQPOLYVNE'; -SYS_XQREF2VAL : 'SYS_XQREF2VAL'; -SYS_XQRENAME : 'SYS_XQRENAME'; -SYS_XQREPLACE : 'SYS_XQREPLACE'; -SYS_XQRESVURI : 'SYS_XQRESVURI'; -SYS_XQRNDHALF2EVN : 'SYS_XQRNDHALF2EVN'; -SYS_XQRSLVQNM : 'SYS_XQRSLVQNM'; -SYS_XQRYENVPGET : 'SYS_XQRYENVPGET'; -SYS_XQRYVARGET : 'SYS_XQRYVARGET'; -SYS_XQRYWRP : 'SYS_XQRYWRP'; -SYS_XQSEQ2CON4XC : 'SYS_XQSEQ2CON4XC'; -SYS_XQSEQ2CON : 'SYS_XQSEQ2CON'; -SYS_XQSEQDEEPEQ : 'SYS_XQSEQDEEPEQ'; -SYS_XQSEQINSB : 'SYS_XQSEQINSB'; -SYS_XQSEQRM : 'SYS_XQSEQRM'; -SYS_XQSEQRVS : 'SYS_XQSEQRVS'; -SYS_XQSEQSUB : 'SYS_XQSEQSUB'; -SYS_XQSEQTYPMATCH : 'SYS_XQSEQTYPMATCH'; -SYS_XQSTARTSWITH : 'SYS_XQSTARTSWITH'; -SYS_XQSTATBURI : 'SYS_XQSTATBURI'; -SYS_XQSTR2CODEP : 'SYS_XQSTR2CODEP'; -SYS_XQSTRJOIN : 'SYS_XQSTRJOIN'; -SYS_XQSUBSTRAFT : 'SYS_XQSUBSTRAFT'; -SYS_XQSUBSTRBEF : 'SYS_XQSUBSTRBEF'; -SYS_XQTOKENIZE : 'SYS_XQTOKENIZE'; -SYS_XQTREATAS : 'SYS_XQTREATAS'; -SYS_XQ_UPKXML2SQL : 'SYS_XQ_UPKXML2SQL'; -SYS_XQXFORM : 'SYS_XQXFORM'; -SYS_XSID_TO_RAW : 'SYS_XSID_TO_RAW'; -SYS_ZMAP_FILTER : 'SYS_ZMAP_FILTER'; -SYS_ZMAP_REFRESH : 'SYS_ZMAP_REFRESH'; -TABLE_LOOKUP_BY_NL : 'TABLE_LOOKUP_BY_NL'; -TABLESPACE_NO : 'TABLESPACE_NO'; -TABLESPACE : 'TABLESPACE'; -TABLES : 'TABLES'; -TABLE_STATS : 'TABLE_STATS'; -TABLE : 'TABLE'; -TABNO : 'TABNO'; -TAG : 'TAG'; -TANH : 'TANH'; -TAN : 'TAN'; -TBLORIDXPARTNUM : 'TBL$OR$IDX$PART$NUM'; -TEMPFILE : 'TEMPFILE'; -TEMPLATE : 'TEMPLATE'; -TEMPORARY : 'TEMPORARY'; -TEMP_TABLE : 'TEMP_TABLE'; -TEST : 'TEST'; -TEXT : 'TEXT'; -THAN : 'THAN'; -THEN : 'THEN'; -THE : 'THE'; -THREAD : 'THREAD'; -THROUGH : 'THROUGH'; -TIER : 'TIER'; -TIES : 'TIES'; -TIMEOUT : 'TIMEOUT'; -TIMESTAMP_LTZ_UNCONSTRAINED : 'TIMESTAMP_LTZ_UNCONSTRAINED'; -TIMESTAMP : 'TIMESTAMP'; -TIMESTAMP_TZ_UNCONSTRAINED : 'TIMESTAMP_TZ_UNCONSTRAINED'; -TIMESTAMP_UNCONSTRAINED : 'TIMESTAMP_UNCONSTRAINED'; -TIMES : 'TIMES'; -TIME : 'TIME'; -TIMEZONE : 'TIMEZONE'; -TIMEZONE_ABBR : 'TIMEZONE_ABBR'; -TIMEZONE_HOUR : 'TIMEZONE_HOUR'; -TIMEZONE_MINUTE : 'TIMEZONE_MINUTE'; -TIMEZONE_OFFSET : 'TIMEZONE_OFFSET'; -TIMEZONE_REGION : 'TIMEZONE_REGION'; -TIME_ZONE : 'TIME_ZONE'; -TIV_GB : 'TIV_GB'; -TIV_SSF : 'TIV_SSF'; -TO_ACLID : 'TO_ACLID'; -TO_BINARY_DOUBLE : 'TO_BINARY_DOUBLE'; -TO_BINARY_FLOAT : 'TO_BINARY_FLOAT'; -TO_BLOB : 'TO_BLOB'; -TO_CLOB : 'TO_CLOB'; -TO_DSINTERVAL : 'TO_DSINTERVAL'; -TO_LOB : 'TO_LOB'; -TO_MULTI_BYTE : 'TO_MULTI_BYTE'; -TO_NCHAR : 'TO_NCHAR'; -TO_NCLOB : 'TO_NCLOB'; -TO_NUMBER : 'TO_NUMBER'; -TOPLEVEL : 'TOPLEVEL'; -TO_SINGLE_BYTE : 'TO_SINGLE_BYTE'; -TO_TIMESTAMP : 'TO_TIMESTAMP'; -TO_TIMESTAMP_TZ : 'TO_TIMESTAMP_TZ'; -TO_TIME : 'TO_TIME'; -TO_TIME_TZ : 'TO_TIME_TZ'; -TO : 'TO'; -TO_YMINTERVAL : 'TO_YMINTERVAL'; -TRACE : 'TRACE'; -TRACING : 'TRACING'; -TRACKING : 'TRACKING'; -TRAILING : 'TRAILING'; -TRANSACTION : 'TRANSACTION'; -TRANSFORM_DISTINCT_AGG : 'TRANSFORM_DISTINCT_AGG'; -TRANSITIONAL : 'TRANSITIONAL'; -TRANSITION : 'TRANSITION'; -TRANSLATE : 'TRANSLATE'; -TRANSLATION : 'TRANSLATION'; -TREAT : 'TREAT'; -TRIGGERS : 'TRIGGERS'; -TRIGGER : 'TRIGGER'; -TRUE : 'TRUE'; -TRUNCATE : 'TRUNCATE'; -TRUNC : 'TRUNC'; -TRUSTED : 'TRUSTED'; -TRUST : 'TRUST'; -TUNING : 'TUNING'; -TX : 'TX'; -TYPES : 'TYPES'; -TYPE : 'TYPE'; -TZ_OFFSET : 'TZ_OFFSET'; -UB2 : 'UB2'; -UBA : 'UBA'; -UCS2 : 'UCS2'; -UID : 'UID'; -UNARCHIVED : 'UNARCHIVED'; -UNBOUNDED : 'UNBOUNDED'; -UNBOUND : 'UNBOUND'; -UNCONDITIONAL : 'UNCONDITIONAL'; -UNDER : 'UNDER'; -UNDO : 'UNDO'; -UNDROP : 'UNDROP'; -UNIFORM : 'UNIFORM'; -UNION : 'UNION'; -UNIQUE : 'UNIQUE'; -UNISTR : 'UNISTR'; -UNLIMITED : 'UNLIMITED'; -UNLOAD : 'UNLOAD'; -UNLOCK : 'UNLOCK'; -UNMATCHED : 'UNMATCHED'; -UNNEST_INNERJ_DISTINCT_VIEW : 'UNNEST_INNERJ_DISTINCT_VIEW'; -UNNEST_NOSEMIJ_NODISTINCTVIEW : 'UNNEST_NOSEMIJ_NODISTINCTVIEW'; -UNNEST_SEMIJ_VIEW : 'UNNEST_SEMIJ_VIEW'; -UNNEST : 'UNNEST'; -UNPACKED : 'UNPACKED'; -UNPIVOT : 'UNPIVOT'; -UNPLUG : 'UNPLUG'; -UNPROTECTED : 'UNPROTECTED'; -UNQUIESCE : 'UNQUIESCE'; -UNRECOVERABLE : 'UNRECOVERABLE'; -UNRESTRICTED : 'UNRESTRICTED'; -UNSUBSCRIBE : 'UNSUBSCRIBE'; -UNTIL : 'UNTIL'; -UNUSABLE : 'UNUSABLE'; -UNUSED : 'UNUSED'; -UPDATABLE : 'UPDATABLE'; -UPDATED : 'UPDATED'; -UPDATE : 'UPDATE'; -UPDATEXML : 'UPDATEXML'; -UPD_INDEXES : 'UPD_INDEXES'; -UPD_JOININDEX : 'UPD_JOININDEX'; -UPGRADE : 'UPGRADE'; -UPPER : 'UPPER'; -UPSERT : 'UPSERT'; -UROWID : 'UROWID'; -USABLE : 'USABLE'; -USAGE : 'USAGE'; -USE_ANTI : 'USE_ANTI'; -USE_CONCAT : 'USE_CONCAT'; -USE_CUBE : 'USE_CUBE'; -USE_HASH_AGGREGATION : 'USE_HASH_AGGREGATION'; -USE_HASH_GBY_FOR_PUSHDOWN : 'USE_HASH_GBY_FOR_PUSHDOWN'; -USE_HASH : 'USE_HASH'; -USE_HIDDEN_PARTITIONS : 'USE_HIDDEN_PARTITIONS'; -USE_INVISIBLE_INDEXES : 'USE_INVISIBLE_INDEXES'; -USE_MERGE_CARTESIAN : 'USE_MERGE_CARTESIAN'; -USE_MERGE : 'USE_MERGE'; -USE_NL : 'USE_NL'; -USE_NL_WITH_INDEX : 'USE_NL_WITH_INDEX'; -USE_PRIVATE_OUTLINES : 'USE_PRIVATE_OUTLINES'; -USER_DATA : 'USER_DATA'; -USER_DEFINED : 'USER_DEFINED'; -USERENV : 'USERENV'; -USERGROUP : 'USERGROUP'; -USER_RECYCLEBIN : 'USER_RECYCLEBIN'; -USERS : 'USERS'; -USER_TABLESPACES : 'USER_TABLESPACES'; -USER : 'USER'; -USE_SEMI : 'USE_SEMI'; -USE_STORED_OUTLINES : 'USE_STORED_OUTLINES'; -USE_TTT_FOR_GSETS : 'USE_TTT_FOR_GSETS'; -USE : 'USE'; -USE_VECTOR_AGGREGATION : 'USE_VECTOR_AGGREGATION'; -USE_WEAK_NAME_RESL : 'USE_WEAK_NAME_RESL'; -USING_NO_EXPAND : 'USING_NO_EXPAND'; -USING : 'USING'; -UTF16BE : 'UTF16BE'; -UTF16LE : 'UTF16LE'; -UTF32 : 'UTF32'; -UTF8 : 'UTF8'; -V1 : 'V1'; -V2 : 'V2'; -VALIDATE : 'VALIDATE'; -VALIDATION : 'VALIDATION'; -VALID_TIME_END : 'VALID_TIME_END'; -VALUES : 'VALUES'; -VALUE : 'VALUE'; -VARCHAR2 : 'VARCHAR2'; -VARCHAR : 'VARCHAR'; -VARIABLE : 'VARIABLE'; -VAR_POP : 'VAR_POP'; -VARRAYS : 'VARRAYS'; -VARRAY : 'VARRAY'; -VAR_SAMP : 'VAR_SAMP'; -VARYING : 'VARYING'; -VECTOR_READ_TRACE : 'VECTOR_READ_TRACE'; -VECTOR_READ : 'VECTOR_READ'; -VECTOR_TRANSFORM_DIMS : 'VECTOR_TRANSFORM_DIMS'; -VECTOR_TRANSFORM_FACT : 'VECTOR_TRANSFORM_FACT'; -VECTOR_TRANSFORM : 'VECTOR_TRANSFORM'; -VERIFIER : 'VERIFIER'; -VERIFY : 'VERIFY'; -VERSIONING : 'VERSIONING'; -VERSIONS_ENDSCN : 'VERSIONS_ENDSCN'; -VERSIONS_ENDTIME : 'VERSIONS_ENDTIME'; -VERSIONS_OPERATION : 'VERSIONS_OPERATION'; -VERSIONS_STARTSCN : 'VERSIONS_STARTSCN'; -VERSIONS_STARTTIME : 'VERSIONS_STARTTIME'; -VERSIONS : 'VERSIONS'; -VERSIONS_XID : 'VERSIONS_XID'; -VERSION : 'VERSION'; -VIEW : 'VIEW'; -VIOLATION : 'VIOLATION'; -VIRTUAL : 'VIRTUAL'; -VISIBILITY : 'VISIBILITY'; -VISIBLE : 'VISIBLE'; -VOLUME : 'VOLUME'; -VSIZE : 'VSIZE'; -WAIT : 'WAIT'; -WALLET : 'WALLET'; -WARNING : 'WARNING'; -WEEKS : 'WEEKS'; -WEEK : 'WEEK'; -WELLFORMED : 'WELLFORMED'; -WHENEVER : 'WHENEVER'; -WHEN : 'WHEN'; -WHERE : 'WHERE'; -WHILE : 'WHILE'; -WHITESPACE : 'WHITESPACE'; -WIDTH_BUCKET : 'WIDTH_BUCKET'; -WITHIN : 'WITHIN'; -WITHOUT : 'WITHOUT'; -WITH_PLSQL : 'WITH_PLSQL'; -WITH : 'WITH'; -WORK : 'WORK'; -WRAPPED : 'WRAPPED'; -WRAPPER : 'WRAPPER'; -WRITE : 'WRITE'; -XDB_FASTPATH_INSERT : 'XDB_FASTPATH_INSERT'; -XDB : 'XDB'; -X_DYN_PRUNE : 'X_DYN_PRUNE'; -XID : 'XID'; -XML2OBJECT : 'XML2OBJECT'; -XMLAGG : 'XMLAGG'; -XMLATTRIBUTES : 'XMLATTRIBUTES'; -XMLCAST : 'XMLCAST'; -XMLCDATA : 'XMLCDATA'; -XMLCOLATTVAL : 'XMLCOLATTVAL'; -XMLCOMMENT : 'XMLCOMMENT'; -XMLCONCAT : 'XMLCONCAT'; -XMLDIFF : 'XMLDIFF'; -XML_DML_RWT_STMT : 'XML_DML_RWT_STMT'; -XMLELEMENT : 'XMLELEMENT'; -XMLEXISTS2 : 'XMLEXISTS2'; -XMLEXISTS : 'XMLEXISTS'; -XMLFOREST : 'XMLFOREST'; -XMLINDEX : 'XMLINDEX'; -XMLINDEX_REWRITE_IN_SELECT : 'XMLINDEX_REWRITE_IN_SELECT'; -XMLINDEX_REWRITE : 'XMLINDEX_REWRITE'; -XMLINDEX_SEL_IDX_TBL : 'XMLINDEX_SEL_IDX_TBL'; -XMLISNODE : 'XMLISNODE'; -XMLISVALID : 'XMLISVALID'; -XMLNAMESPACES : 'XMLNAMESPACES'; -XMLPARSE : 'XMLPARSE'; -XMLPATCH : 'XMLPATCH'; -XMLPI : 'XMLPI'; -XMLQUERYVAL : 'XMLQUERYVAL'; -XMLQUERY : 'XMLQUERY'; -XMLROOT : 'XMLROOT'; -XMLSCHEMA : 'XMLSCHEMA'; -XMLSERIALIZE : 'XMLSERIALIZE'; -XMLTABLE : 'XMLTABLE'; -XMLTRANSFORMBLOB : 'XMLTRANSFORMBLOB'; -XMLTRANSFORM : 'XMLTRANSFORM'; -XMLTYPE : 'XMLTYPE'; -XML : 'XML'; -XPATHTABLE : 'XPATHTABLE'; -XS_SYS_CONTEXT : 'XS_SYS_CONTEXT'; -XS : 'XS'; -XTRANSPORT : 'XTRANSPORT'; -YEARS : 'YEARS'; -YEAR : 'YEAR'; -YES : 'YES'; -YMINTERVAL_UNCONSTRAINED : 'YMINTERVAL_UNCONSTRAINED'; -ZONEMAP : 'ZONEMAP'; -ZONE : 'ZONE'; -PREDICTION : 'PREDICTION'; -PREDICTION_BOUNDS : 'PREDICTION_BOUNDS'; -PREDICTION_COST : 'PREDICTION_COST'; -PREDICTION_DETAILS : 'PREDICTION_DETAILS'; -PREDICTION_PROBABILITY : 'PREDICTION_PROBABILITY'; -PREDICTION_SET : 'PREDICTION_SET'; - -CUME_DIST : 'CUME_DIST'; -DENSE_RANK : 'DENSE_RANK'; -LISTAGG : 'LISTAGG'; -PERCENT_RANK : 'PERCENT_RANK'; -PERCENTILE_CONT : 'PERCENTILE_CONT'; -PERCENTILE_DISC : 'PERCENTILE_DISC'; -RANK : 'RANK'; - -AVG : 'AVG'; -CORR : 'CORR'; -COVAR_ : 'COVAR_'; -DECODE : 'DECODE'; -LAG : 'LAG'; -LEAD : 'LEAD'; -MAX : 'MAX'; -MEDIAN : 'MEDIAN'; -MIN : 'MIN'; -NTILE : 'NTILE'; -NVL : 'NVL'; -RATIO_TO_REPORT : 'RATIO_TO_REPORT'; -REGR_ : 'REGR_'; -ROUND : 'ROUND'; -ROW_NUMBER : 'ROW_NUMBER'; -SUBSTR : 'SUBSTR'; -TO_CHAR : 'TO_CHAR'; -TRIM : 'TRIM'; -SUM : 'SUM'; -STDDEV : 'STDDEV'; -VAR_ : 'VAR_'; -VARIANCE : 'VARIANCE'; -LEAST : 'LEAST'; -GREATEST : 'GREATEST'; -TO_DATE : 'TO_DATE'; - -// Rule #358 - subtoken typecast in , it also incorporates -// Lowercase 'n' is a usual addition to the standard - -NATIONAL_CHAR_STRING_LIT: 'N' '\'' (~('\'' | '\r' | '\n') | '\'' '\'' | NEWLINE)* '\''; - -// Rule #040 - subtoken typecast in -// Lowercase 'b' is a usual addition to the standard - -BIT_STRING_LIT: 'B' ('\'' [01]* '\'')+; - -// Rule #284 - subtoken typecast in -// Lowercase 'x' is a usual addition to the standard - -HEX_STRING_LIT : 'X' ('\'' [A-F0-9]* '\'')+; -DOUBLE_PERIOD : '..'; -PERIOD : '.'; - -//{ Rule #238 -// This rule is a bit tricky - it resolves the ambiguity with -// It also incorporates and for the -// Rule #501 was incorporated directly in the token -// See also the rule #617 -/* - : ( - UNSIGNED_INTEGER - ( '.' UNSIGNED_INTEGER - | {$type = UNSIGNED_INTEGER;} - ) ( E ('+' | '-')? UNSIGNED_INTEGER {$type = APPROXIMATE_NUM_LIT;} )? - | '.' UNSIGNED_INTEGER ( E ('+' | '-')? UNSIGNED_INTEGER {$type = APPROXIMATE_NUM_LIT;} )? - ) - (D | F)? - ;*/ - -UNSIGNED_INTEGER : [0-9]+; -APPROXIMATE_NUM_LIT : FLOAT_FRAGMENT ('E' ('+' | '-')? (FLOAT_FRAGMENT | [0-9]+))? ('D' | 'F')?; - -// Rule #--- is a base for Rule #065 , it incorporates -// and a superfluous subtoken typecasting of the "QUOTE" -CHAR_STRING: '\'' (~('\'' | '\r' | '\n') | '\'' '\'' | NEWLINE)* '\''; - -// See https://livesql.oracle.com/apex/livesql/file/content_CIREYU9EA54EOKQ7LAMZKRF6P.html -// TODO: context sensitive string quotes (any characted after quote) -CHAR_STRING_PERL: - 'Q' '\'' ( - QS_ANGLE - | QS_BRACE - | QS_BRACK - | QS_PAREN - | QS_EXCLAM - | QS_SHARP - | QS_QUOTE - | QS_DQUOTE - ) '\'' -> type(CHAR_STRING) -; -fragment QS_ANGLE : '<' .*? '>'; -fragment QS_BRACE : '{' .*? '}'; -fragment QS_BRACK : '[' .*? ']'; -fragment QS_PAREN : '(' .*? ')'; -fragment QS_EXCLAM : '!' .*? '!'; -fragment QS_SHARP : '#' .*? '#'; -fragment QS_QUOTE : '\'' .*? '\''; -fragment QS_DQUOTE : '"' .*? '"'; - -DELIMITED_ID: '"' (~('"' | '\r' | '\n') | '"' '"')+ '"'; - -PERCENT : '%'; -AMPERSAND : '&'; -LEFT_PAREN : '('; -RIGHT_PAREN : ')'; -DOUBLE_ASTERISK : '**'; -ASTERISK : '*'; -PLUS_SIGN : '+'; -MINUS_SIGN : '-'; -COMMA : ','; -SOLIDUS : '/'; -AT_SIGN : '@'; -ASSIGN_OP : ':='; - -BINDVAR: - ':' SIMPLE_LETTER (SIMPLE_LETTER | [0-9] | '_')* - | ':' DELIMITED_ID // not used in SQL but spotted in v$sqltext when using cursor_sharing - | ':' UNSIGNED_INTEGER - | QUESTION_MARK // not in SQL, not in Oracle, not in OCI, use this for JDBC -; - -NOT_EQUAL_OP : '!=' | '<>' | '^=' | '~='; -CARRET_OPERATOR_PART : '^'; -TILDE_OPERATOR_PART : '~'; -EXCLAMATION_OPERATOR_PART : '!'; -GREATER_THAN_OP : '>'; -LESS_THAN_OP : '<'; -COLON : ':'; -SEMICOLON : ';'; - -BAR : '|'; -EQUALS_OP : '='; - -LEFT_BRACKET : '['; -RIGHT_BRACKET : ']'; - -INTRODUCER: '_'; - -// Comments https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements006.htm - -SINGLE_LINE_COMMENT : '--' ~('\r' | '\n')* NEWLINE_EOF -> channel(HIDDEN); -MULTI_LINE_COMMENT : '/*' .*? '*/' -> channel(HIDDEN); -// https://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve034.htm#SQPUG054 -REMARK_COMMENT: - 'REM' {self.IsNewlineAtPos(-4)}? 'ARK'? (' ' ~('\r' | '\n')*)? NEWLINE_EOF -> channel(HIDDEN) -; - -// https://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve032.htm#SQPUG052 -PROMPT_MESSAGE: 'PRO' {self.IsNewlineAtPos(-4)}? 'MPT'? (' ' ~('\r' | '\n')*)? NEWLINE_EOF; - -// TODO: should starts with newline -START_CMD -//: 'STA' 'RT'? SPACE ~('\r' | '\n')* NEWLINE_EOF -: // https://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12003.htm - '@' {self.IsNewlineAtPos(-2)}? '@'? ~('\r' | '\n')* NEWLINE_EOF -; - -REGULAR_ID: SIMPLE_LETTER (SIMPLE_LETTER | '$' | '_' | '#' | [0-9])*; - -SPACES: [ \t\r\n]+ -> channel(HIDDEN); - -// Fragment rules - -fragment NEWLINE_EOF : NEWLINE | EOF; -fragment QUESTION_MARK : '?'; -fragment SIMPLE_LETTER : [A-Z]; -fragment FLOAT_FRAGMENT : UNSIGNED_INTEGER* '.'? UNSIGNED_INTEGER+; -fragment NEWLINE : '\r'? '\n'; -fragment SPACE : [ \t]; \ No newline at end of file diff --git a/sql/plsql/Dart/PlSqlLexerBase.dart b/sql/plsql/Dart/PlSqlLexerBase.dart index f5567c2dbf..6756ebaf5a 100644 --- a/sql/plsql/Dart/PlSqlLexerBase.dart +++ b/sql/plsql/Dart/PlSqlLexerBase.dart @@ -4,16 +4,14 @@ import 'dart:convert'; abstract class PlSqlLexerBase extends Lexer { - PlSqlLexerBase self; - PlSqlLexerBase(CharStream input) : super(input) - { - self = this; + { } bool IsNewlineAtPos(int pos) { - int la = inputStream.LA(pos); - return la == -1 || la == '\n'; + int la = inputStream.LA(pos)!; + if (la == -1) return true; + return '\n' == String.fromCharCode(inputStream.LA(pos)!); } } diff --git a/sql/plsql/Dart/PlSqlParser.g4 b/sql/plsql/Dart/PlSqlParser.g4 deleted file mode 100644 index fd1c00ddd6..0000000000 --- a/sql/plsql/Dart/PlSqlParser.g4 +++ /dev/null @@ -1,6840 +0,0 @@ -/** - * Oracle(c) PL/SQL 11g Parser - * - * Copyright (c) 2009-2011 Alexandre Porcelli - * Copyright (c) 2015-2019 Ivan Kochurkin (KvanTTT, kvanttt@gmail.com, Positive Technologies). - * Copyright (c) 2017-2018 Mark Adams - * - * 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. - */ - -// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false -// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging - -parser grammar PlSqlParser; - -options { - tokenVocab = PlSqlLexer; - superClass = PlSqlParserBase; -} - -@parser::header { - import 'PlSqlParserBase.dart'; -} - -@parser::postinclude { -#include -} - -sql_script - : ((unit_statement | sql_plus_command) SEMICOLON?)* EOF - ; - -unit_statement - : transaction_control_statements - | alter_cluster - | alter_database - | alter_function - | alter_package - | alter_procedure - | alter_sequence - | alter_session - | alter_trigger - | alter_type - | alter_table - | alter_tablespace - | alter_index - | alter_library - | alter_materialized_view - | alter_materialized_view_log - | alter_user - | alter_view - | analyze - | associate_statistics - | audit_traditional - | unified_auditing - | create_function_body - | create_procedure_body - | create_package - | create_package_body - | create_index - | create_table - | create_tablespace - | create_cluster - | create_context - | create_view //TODO - | create_directory - | create_materialized_view - | create_materialized_view_log - | create_user - | create_sequence - | create_trigger - | create_type - | create_synonym - | drop_function - | drop_package - | drop_procedure - | drop_sequence - | drop_trigger - | drop_type - | data_manipulation_language_statements - | truncate_table - | drop_table - | drop_view - | drop_index - | rename_object - | comment_on_column - | comment_on_table - | anonymous_block - | grant_statement - | procedure_call - ; - -// DDL -> SQL Statements for Stored PL/SQL Units - -// Function DDLs - -drop_function - : DROP FUNCTION function_name ';' - ; - -alter_function - : ALTER FUNCTION function_name COMPILE DEBUG? compiler_parameters_clause* (REUSE SETTINGS)? ';' - ; - -create_function_body - : CREATE (OR REPLACE)? FUNCTION function_name ('(' parameter (',' parameter)* ')')? RETURN type_spec ( - invoker_rights_clause - | parallel_enable_clause - | result_cache_clause - | DETERMINISTIC - )* ( - (PIPELINED? (IS | AS) (DECLARE? seq_of_declare_specs? body | call_spec)) - | (PIPELINED | AGGREGATE) USING implementation_type_name - ) ';' - ; - -// Creation Function - Specific Clauses - -parallel_enable_clause - : PARALLEL_ENABLE partition_by_clause? - ; - -partition_by_clause - : '(' PARTITION expression BY (ANY | (HASH | RANGE | LIST) paren_column_list) streaming_clause? ')' - ; - -result_cache_clause - : RESULT_CACHE relies_on_part? - ; - -relies_on_part - : RELIES_ON '(' tableview_name (',' tableview_name)* ')' - ; - -streaming_clause - : (ORDER | CLUSTER) expression BY paren_column_list - ; - -// Package DDLs - -drop_package - : DROP PACKAGE BODY? (schema_object_name '.')? package_name ';' - ; - -alter_package - : ALTER PACKAGE package_name COMPILE DEBUG? (PACKAGE | BODY | SPECIFICATION)? compiler_parameters_clause* ( - REUSE SETTINGS - )? ';' - ; - -create_package - : CREATE (OR REPLACE)? PACKAGE (schema_object_name '.')? package_name invoker_rights_clause? ( - IS - | AS - ) package_obj_spec* END package_name? ';' - ; - -create_package_body - : CREATE (OR REPLACE)? PACKAGE BODY (schema_object_name '.')? package_name (IS | AS) package_obj_body* ( - BEGIN seq_of_statements - )? END package_name? ';' - ; - -// Create Package Specific Clauses - -package_obj_spec - : pragma_declaration - | variable_declaration - | subtype_declaration - | cursor_declaration - | exception_declaration - | type_declaration - | procedure_spec - | function_spec - ; - -procedure_spec - : PROCEDURE identifier ('(' parameter ( ',' parameter)* ')')? ';' - ; - -function_spec - : FUNCTION identifier ('(' parameter ( ',' parameter)* ')')? RETURN type_spec PIPELINED? DETERMINISTIC? ( - RESULT_CACHE - )? ';' - ; - -package_obj_body - : variable_declaration - | subtype_declaration - | cursor_declaration - | exception_declaration - | type_declaration - | procedure_body - | function_body - | procedure_spec - | function_spec - ; - -// Procedure DDLs - -drop_procedure - : DROP PROCEDURE procedure_name ';' - ; - -alter_procedure - : ALTER PROCEDURE procedure_name COMPILE DEBUG? compiler_parameters_clause* (REUSE SETTINGS)? ';' - ; - -function_body - : FUNCTION identifier ('(' parameter (',' parameter)* ')')? RETURN type_spec ( - invoker_rights_clause - | parallel_enable_clause - | result_cache_clause - | DETERMINISTIC - )* ( - (PIPELINED? DETERMINISTIC? (IS | AS) (DECLARE? seq_of_declare_specs? body | call_spec)) - | (PIPELINED | AGGREGATE) USING implementation_type_name - ) ';' - ; - -procedure_body - : PROCEDURE identifier ('(' parameter (',' parameter)* ')')? (IS | AS) ( - DECLARE? seq_of_declare_specs? body - | call_spec - | EXTERNAL - ) ';' - ; - -create_procedure_body - : CREATE (OR REPLACE)? PROCEDURE procedure_name ('(' parameter (',' parameter)* ')')? invoker_rights_clause? ( - IS - | AS - ) (DECLARE? seq_of_declare_specs? body | call_spec | EXTERNAL) ';' - ; - -// Trigger DDLs - -drop_trigger - : DROP TRIGGER trigger_name ';' - ; - -alter_trigger - : ALTER TRIGGER alter_trigger_name = trigger_name ( - (ENABLE | DISABLE) - | RENAME TO rename_trigger_name = trigger_name - | COMPILE DEBUG? compiler_parameters_clause* (REUSE SETTINGS)? - ) ';' - ; - -create_trigger - : CREATE (OR REPLACE)? TRIGGER trigger_name ( - simple_dml_trigger - | compound_dml_trigger - | non_dml_trigger - ) trigger_follows_clause? (ENABLE | DISABLE)? trigger_when_clause? trigger_body ';' - ; - -trigger_follows_clause - : FOLLOWS trigger_name (',' trigger_name)* - ; - -trigger_when_clause - : WHEN '(' condition ')' - ; - -// Create Trigger Specific Clauses - -simple_dml_trigger - : (BEFORE | AFTER | INSTEAD OF) dml_event_clause referencing_clause? for_each_row? - ; - -for_each_row - : FOR EACH ROW - ; - -compound_dml_trigger - : FOR dml_event_clause referencing_clause? - ; - -non_dml_trigger - : (BEFORE | AFTER) non_dml_event (OR non_dml_event)* ON (DATABASE | (schema_name '.')? SCHEMA) - ; - -trigger_body - : COMPOUND TRIGGER - | CALL identifier - | trigger_block - ; - -routine_clause - : routine_name function_argument? - ; - -compound_trigger_block - : COMPOUND TRIGGER seq_of_declare_specs? timing_point_section+ END trigger_name - ; - -timing_point_section - : bk = BEFORE STATEMENT IS trigger_block BEFORE STATEMENT ';' - | bk = BEFORE EACH ROW IS trigger_block BEFORE EACH ROW ';' - | ak = AFTER STATEMENT IS trigger_block AFTER STATEMENT ';' - | ak = AFTER EACH ROW IS trigger_block AFTER EACH ROW ';' - ; - -non_dml_event - : ALTER - | ANALYZE - | ASSOCIATE STATISTICS - | AUDIT - | COMMENT - | CREATE - | DISASSOCIATE STATISTICS - | DROP - | GRANT - | NOAUDIT - | RENAME - | REVOKE - | TRUNCATE - | DDL - | STARTUP - | SHUTDOWN - | DB_ROLE_CHANGE - | LOGON - | LOGOFF - | SERVERERROR - | SUSPEND - | DATABASE - | SCHEMA - | FOLLOWS - ; - -dml_event_clause - : dml_event_element (OR dml_event_element)* ON dml_event_nested_clause? tableview_name - ; - -dml_event_element - : (DELETE | INSERT | UPDATE) (OF column_list)? - ; - -dml_event_nested_clause - : NESTED TABLE tableview_name OF - ; - -referencing_clause - : REFERENCING referencing_element+ - ; - -referencing_element - : (NEW | OLD | PARENT) column_alias - ; - -// DDLs - -drop_type - : DROP TYPE BODY? type_name (FORCE | VALIDATE)? ';' - ; - -alter_type - : ALTER TYPE type_name ( - compile_type_clause - | replace_type_clause - //TODO | {input.LT(2).getText().equalsIgnoreCase("attribute")}? alter_attribute_definition - | alter_method_spec - | alter_collection_clauses - | modifier_clause - | overriding_subprogram_spec - ) dependent_handling_clause? ';' - ; - -// Alter Type Specific Clauses - -compile_type_clause - : COMPILE DEBUG? (SPECIFICATION | BODY)? compiler_parameters_clause* (REUSE SETTINGS)? - ; - -replace_type_clause - : REPLACE invoker_rights_clause? AS OBJECT '(' object_member_spec (',' object_member_spec)* ')' - ; - -alter_method_spec - : alter_method_element (',' alter_method_element)* - ; - -alter_method_element - : (ADD | DROP) (map_order_function_spec | subprogram_spec) - ; - -alter_attribute_definition - : (ADD | MODIFY | DROP) ATTRIBUTE ( - attribute_definition - | '(' attribute_definition (',' attribute_definition)* ')' - ) - ; - -attribute_definition - : attribute_name type_spec? - ; - -alter_collection_clauses - : MODIFY (LIMIT expression | ELEMENT TYPE type_spec) - ; - -dependent_handling_clause - : INVALIDATE - | CASCADE (CONVERT TO SUBSTITUTABLE | NOT? INCLUDING TABLE DATA)? dependent_exceptions_part? - ; - -dependent_exceptions_part - : FORCE? EXCEPTIONS INTO tableview_name - ; - -create_type - : CREATE (OR REPLACE)? TYPE (type_definition | type_body) ';' - ; - -// Create Type Specific Clauses - -type_definition - : type_name (OID CHAR_STRING)? FORCE? object_type_def? - ; - -object_type_def - : invoker_rights_clause? (object_as_part | object_under_part) sqlj_object_type? ( - '(' object_member_spec (',' object_member_spec)* ')' - )? modifier_clause* - ; - -object_as_part - : (IS | AS) (OBJECT | varray_type_def | nested_table_type_def) - ; - -object_under_part - : UNDER type_spec - ; - -nested_table_type_def - : TABLE OF type_spec (NOT NULL_)? - ; - -sqlj_object_type - : EXTERNAL NAME expression LANGUAGE JAVA USING (SQLDATA | CUSTOMDATUM | ORADATA) - ; - -type_body - : BODY type_name (IS | AS) (type_body_elements)+ END - ; - -type_body_elements - : map_order_func_declaration - | subprog_decl_in_type - | overriding_subprogram_spec - ; - -map_order_func_declaration - : (MAP | ORDER) MEMBER func_decl_in_type - ; - -subprog_decl_in_type - : (MEMBER | STATIC) (proc_decl_in_type | func_decl_in_type | constructor_declaration) - ; - -proc_decl_in_type - : PROCEDURE procedure_name '(' type_elements_parameter (',' type_elements_parameter)* ')' ( - IS - | AS - ) (call_spec | DECLARE? seq_of_declare_specs? body ';') - ; - -func_decl_in_type - : FUNCTION function_name ('(' type_elements_parameter (',' type_elements_parameter)* ')')? RETURN type_spec ( - IS - | AS - ) (call_spec | DECLARE? seq_of_declare_specs? body ';') - ; - -constructor_declaration - : FINAL? INSTANTIABLE? CONSTRUCTOR FUNCTION type_spec ( - '(' (SELF IN OUT type_spec ',') type_elements_parameter (',' type_elements_parameter)* ')' - )? RETURN SELF AS RESULT (IS | AS) (call_spec | DECLARE? seq_of_declare_specs? body ';') - ; - -// Common Type Clauses - -modifier_clause - : NOT? (INSTANTIABLE | FINAL | OVERRIDING) - ; - -object_member_spec - : identifier type_spec sqlj_object_type_attr? - | element_spec - ; - -sqlj_object_type_attr - : EXTERNAL NAME expression - ; - -element_spec - : modifier_clause? element_spec_options+ (',' pragma_clause)? - ; - -element_spec_options - : subprogram_spec - | constructor_spec - | map_order_function_spec - ; - -subprogram_spec - : (MEMBER | STATIC) (type_procedure_spec | type_function_spec) - ; - -// TODO: should be refactored such as Procedure body and Function body, maybe Type_Function_Body and overriding_function_body -overriding_subprogram_spec - : OVERRIDING MEMBER overriding_function_spec - ; - -overriding_function_spec - : FUNCTION function_name ('(' type_elements_parameter (',' type_elements_parameter)* ')')? RETURN ( - type_spec - | SELF AS RESULT - ) (PIPELINED? (IS | AS) (DECLARE? seq_of_declare_specs? body))? ';'? - ; - -type_procedure_spec - : PROCEDURE procedure_name '(' type_elements_parameter (',' type_elements_parameter)* ')' ( - (IS | AS) call_spec - )? - ; - -type_function_spec - : FUNCTION function_name ('(' type_elements_parameter (',' type_elements_parameter)* ')')? RETURN ( - type_spec - | SELF AS RESULT - ) ((IS | AS) call_spec | EXTERNAL VARIABLE? NAME expression)? - ; - -constructor_spec - : FINAL? INSTANTIABLE? CONSTRUCTOR FUNCTION type_spec ( - '(' (SELF IN OUT type_spec ',') type_elements_parameter (',' type_elements_parameter)* ')' - )? RETURN SELF AS RESULT ((IS | AS) call_spec)? - ; - -map_order_function_spec - : (MAP | ORDER) MEMBER type_function_spec - ; - -pragma_clause - : PRAGMA RESTRICT_REFERENCES '(' pragma_elements (',' pragma_elements)* ')' - ; - -pragma_elements - : identifier - | DEFAULT - ; - -type_elements_parameter - : parameter_name type_spec - ; - -// Sequence DDLs - -drop_sequence - : DROP SEQUENCE sequence_name ';' - ; - -alter_sequence - : ALTER SEQUENCE sequence_name sequence_spec+ ';' - ; - -alter_session - : ALTER SESSION ( - ADVISE ( COMMIT | ROLLBACK | NOTHING) - | CLOSE DATABASE LINK parameter_name - | enable_or_disable COMMIT IN PROCEDURE - | enable_or_disable GUARD - | (enable_or_disable | FORCE) PARALLEL (DML | DDL | QUERY) ( - PARALLEL (literal | parameter_name) - )? - | SET alter_session_set_clause - ) - ; - -alter_session_set_clause - : parameter_name '=' parameter_value - ; - -create_sequence - : CREATE SEQUENCE sequence_name (sequence_start_clause | sequence_spec)* ';' - ; - -// Common Sequence - -sequence_spec - : INCREMENT BY UNSIGNED_INTEGER - | MAXVALUE UNSIGNED_INTEGER - | NOMAXVALUE - | MINVALUE UNSIGNED_INTEGER - | NOMINVALUE - | CYCLE - | NOCYCLE - | CACHE UNSIGNED_INTEGER - | NOCACHE - | ORDER - | NOORDER - ; - -sequence_start_clause - : START WITH UNSIGNED_INTEGER - ; - -create_index - : CREATE (UNIQUE | BITMAP)? INDEX index_name ON ( - cluster_index_clause - | table_index_clause - | bitmap_join_index_clause - ) UNUSABLE? ';' - ; - -cluster_index_clause - : CLUSTER cluster_name index_attributes? - ; - -cluster_name - : (id_expression '.')? id_expression - ; - -table_index_clause - : tableview_name table_alias? '(' index_expr (ASC | DESC)? (',' index_expr (ASC | DESC)?)* ')' index_properties? - ; - -bitmap_join_index_clause - : tableview_name '(' (tableview_name | table_alias)? column_name (ASC | DESC)? ( - ',' (tableview_name | table_alias)? column_name (ASC | DESC)? - )* ')' FROM tableview_name table_alias (',' tableview_name table_alias)* where_clause local_partitioned_index? index_attributes? - ; - -index_expr - : column_name - | expression - ; - -index_properties - : (global_partitioned_index | local_partitioned_index | index_attributes)+ - | INDEXTYPE IS (domain_index_clause | xmlindex_clause) - ; - -domain_index_clause - : indextype local_domain_index_clause? parallel_clause? (PARAMETERS '(' odci_parameters ')')? - ; - -local_domain_index_clause - : LOCAL ( - '(' PARTITION partition_name (PARAMETERS '(' odci_parameters ')')? ( - ',' PARTITION partition_name (PARAMETERS '(' odci_parameters ')')? - )* ')' - )? - ; - -xmlindex_clause - : (XDB '.')? XMLINDEX local_xmlindex_clause? parallel_clause? //TODO xmlindex_parameters_clause? - ; - -local_xmlindex_clause - : LOCAL ( - '(' PARTITION partition_name ( - ',' PARTITION partition_name //TODO xmlindex_parameters_clause? - )* ')' - )? - ; - -global_partitioned_index - : GLOBAL PARTITION BY ( - RANGE '(' column_name (',' column_name)* ')' '(' index_partitioning_clause ')' - | HASH '(' column_name (',' column_name)* ')' ( - individual_hash_partitions - | hash_partitions_by_quantity - ) - ) - ; - -index_partitioning_clause - : PARTITION partition_name? VALUES LESS THAN '(' literal (',' literal)* ')' segment_attributes_clause? - ; - -local_partitioned_index - : LOCAL ( - on_range_partitioned_table - | on_list_partitioned_table - | on_hash_partitioned_table - | on_comp_partitioned_table - )? - ; - -on_range_partitioned_table - : '(' partitioned_table (',' partitioned_table)* ')' - ; - -on_list_partitioned_table - : '(' partitioned_table (',' partitioned_table)* ')' - ; - -partitioned_table - : PARTITION partition_name? (segment_attributes_clause | key_compression)* UNUSABLE? - ; - -on_hash_partitioned_table - : STORE IN '(' tablespace (',' tablespace)* ')' - | '(' on_hash_partitioned_clause (',' on_hash_partitioned_clause)* ')' - ; - -on_hash_partitioned_clause - : PARTITION partition_name? (TABLESPACE tablespace)? key_compression? UNUSABLE? - ; - -on_comp_partitioned_table - : (STORE IN '(' tablespace (',' tablespace)* ')')? '(' on_comp_partitioned_clause ( - ',' on_comp_partitioned_clause - )* ')' - ; - -on_comp_partitioned_clause - : PARTITION partition_name? (segment_attributes_clause | key_compression)* UNUSABLE index_subpartition_clause? - ; - -index_subpartition_clause - : STORE IN '(' tablespace (',' tablespace)* ')' - | '(' index_subpartition_subclause (',' index_subpartition_subclause)* ')' - ; - -index_subpartition_subclause - : SUBPARTITION subpartition_name? (TABLESPACE tablespace)? key_compression? UNUSABLE? - ; - -odci_parameters - : CHAR_STRING - ; - -indextype - : (id_expression '.')? id_expression - ; - -//https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_1010.htm#SQLRF00805 -alter_index - : ALTER INDEX index_name (alter_index_ops_set1 | alter_index_ops_set2) ';' - ; - -alter_index_ops_set1 - : ( - deallocate_unused_clause - | allocate_extent_clause - | shrink_clause - | parallel_clause - | physical_attributes_clause - | logging_clause - )+ - ; - -alter_index_ops_set2 - : rebuild_clause - | PARAMETERS '(' odci_parameters ')' - | COMPILE - | enable_or_disable - | UNUSABLE - | visible_or_invisible - | RENAME TO new_index_name - | COALESCE - | monitoring_nomonitoring USAGE - | UPDATE BLOCK REFERENCES - | alter_index_partitioning - ; - -visible_or_invisible - : VISIBLE - | INVISIBLE - ; - -monitoring_nomonitoring - : MONITORING - | NOMONITORING - ; - -rebuild_clause - : REBUILD (PARTITION partition_name | SUBPARTITION subpartition_name | REVERSE | NOREVERSE)? ( - parallel_clause - | TABLESPACE tablespace - | PARAMETERS '(' odci_parameters ')' - //TODO | xmlindex_parameters_clause - | ONLINE - | physical_attributes_clause - | key_compression - | logging_clause - )* - ; - -alter_index_partitioning - : modify_index_default_attrs - | add_hash_index_partition - | modify_index_partition - | rename_index_partition - | drop_index_partition - | split_index_partition - | coalesce_index_partition - | modify_index_subpartition - ; - -modify_index_default_attrs - : MODIFY DEFAULT ATTRIBUTES (FOR PARTITION partition_name)? ( - physical_attributes_clause - | TABLESPACE (tablespace | DEFAULT) - | logging_clause - ) - ; - -add_hash_index_partition - : ADD PARTITION partition_name? (TABLESPACE tablespace)? key_compression? parallel_clause? - ; - -coalesce_index_partition - : COALESCE PARTITION parallel_clause? - ; - -modify_index_partition - : MODIFY PARTITION partition_name ( - modify_index_partitions_ops+ - | PARAMETERS '(' odci_parameters ')' - | COALESCE - | UPDATE BLOCK REFERENCES - | UNUSABLE - ) - ; - -modify_index_partitions_ops - : deallocate_unused_clause - | allocate_extent_clause - | physical_attributes_clause - | logging_clause - | key_compression - ; - -rename_index_partition - : RENAME (PARTITION partition_name | SUBPARTITION subpartition_name) TO new_partition_name - ; - -drop_index_partition - : DROP PARTITION partition_name - ; - -split_index_partition - : SPLIT PARTITION partition_name_old AT '(' literal (',' literal)* ')' ( - INTO '(' index_partition_description ',' index_partition_description ')' - )? parallel_clause? - ; - -index_partition_description - : PARTITION ( - partition_name ( - (segment_attributes_clause | key_compression)+ - | PARAMETERS '(' odci_parameters ')' - ) UNUSABLE? - )? - ; - -modify_index_subpartition - : MODIFY SUBPARTITION subpartition_name ( - UNUSABLE - | allocate_extent_clause - | deallocate_unused_clause - ) - ; - -partition_name_old - : partition_name - ; - -new_partition_name - : partition_name - ; - -new_index_name - : index_name - ; - -create_user - : CREATE USER user_object_name ( - identified_by - | identified_other_clause - | user_tablespace_clause - | quota_clause - | profile_clause - | password_expire_clause - | user_lock_clause - | user_editions_clause - | container_clause - )+ ';' - ; - -// The standard clauses only permit one user per statement. -// The proxy clause allows multiple users for a proxy designation. -alter_user - : ALTER USER user_object_name ( - alter_identified_by - | identified_other_clause - | user_tablespace_clause - | quota_clause - | profile_clause - | user_default_role_clause - | password_expire_clause - | user_lock_clause - | alter_user_editions_clause - | container_clause - | container_data_clause - )+ ';' - | user_object_name (',' user_object_name)* proxy_clause ';' - ; - -alter_identified_by - : identified_by (REPLACE id_expression)? - ; - -identified_by - : IDENTIFIED BY id_expression - ; - -identified_other_clause - : IDENTIFIED (EXTERNALLY | GLOBALLY) (AS quoted_string)? - ; - -user_tablespace_clause - : (DEFAULT | TEMPORARY) TABLESPACE id_expression - ; - -quota_clause - : QUOTA (size_clause | UNLIMITED) ON id_expression - ; - -profile_clause - : PROFILE id_expression - ; - -role_clause - : role_name (',' role_name)* - | ALL (EXCEPT role_name (',' role_name)*)* - ; - -user_default_role_clause - : DEFAULT ROLE (NONE | role_clause) - ; - -password_expire_clause - : PASSWORD EXPIRE - ; - -user_lock_clause - : ACCOUNT (LOCK | UNLOCK) - ; - -user_editions_clause - : ENABLE EDITIONS - ; - -alter_user_editions_clause - : user_editions_clause (FOR regular_id (',' regular_id)*)? FORCE? - ; - -proxy_clause - : REVOKE CONNECT THROUGH (ENTERPRISE USERS | user_object_name) - | GRANT CONNECT THROUGH ( - ENTERPRISE USERS - | user_object_name (WITH (NO ROLES | ROLE role_clause))? (AUTHENTICATION REQUIRED)? ( - AUTHENTICATED USING (PASSWORD | CERTIFICATE | DISTINGUISHED NAME) - )? - ) - ; - -container_names - : LEFT_PAREN id_expression (',' id_expression)* RIGHT_PAREN - ; - -set_container_data - : SET CONTAINER_DATA EQUALS_OP (ALL | DEFAULT | container_names) - ; - -add_rem_container_data - : (ADD | REMOVE) CONTAINER_DATA EQUALS_OP container_names - ; - -container_data_clause - : set_container_data - | add_rem_container_data (FOR container_tableview_name)? - ; - -// https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_4005.htm#SQLRF01105 -analyze - : ( - ANALYZE (TABLE tableview_name | INDEX index_name) partition_extention_clause? - | ANALYZE CLUSTER cluster_name - ) (validation_clauses | LIST CHAINED ROWS into_clause1? | DELETE SYSTEM? STATISTICS) ';' - ; - -partition_extention_clause - : PARTITION ( - '(' partition_name ')' - | FOR '(' partition_key_value (',' partition_key_value)* ')' - ) - | SUBPARTITION ( - '(' subpartition_name ')' - | FOR '(' subpartition_key_value (',' subpartition_key_value)* ')' - ) - ; - -validation_clauses - : VALIDATE REF UPDATE (SET DANGLING TO NULL_)? - | VALIDATE STRUCTURE (CASCADE FAST | CASCADE online_or_offline? into_clause? | CASCADE)? online_or_offline? into_clause? - ; - -online_or_offline - : OFFLINE - | ONLINE - ; - -into_clause1 - : INTO tableview_name? - ; - -//Making assumption on partition ad subpartition key value clauses -partition_key_value - : literal - ; - -subpartition_key_value - : literal - ; - -//https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_4006.htm#SQLRF01106 -associate_statistics - : ASSOCIATE STATISTICS WITH (column_association | function_association) storage_table_clause? ';' - ; - -column_association - : COLUMNS tableview_name '.' column_name (',' tableview_name '.' column_name)* using_statistics_type - ; - -function_association - : ( - FUNCTIONS function_name (',' function_name)* - | PACKAGES package_name (',' package_name)* - | TYPES type_name (',' type_name)* - | INDEXES index_name (',' index_name)* - | INDEXTYPES indextype_name (',' indextype_name)* - ) ( - using_statistics_type - | default_cost_clause (',' default_selectivity_clause)? - | default_selectivity_clause (',' default_cost_clause)? - ) - ; - -indextype_name - : id_expression - ; - -using_statistics_type - : USING (statistics_type_name | NULL_) - ; - -statistics_type_name - : regular_id - ; - -default_cost_clause - : DEFAULT COST '(' cpu_cost ',' io_cost ',' network_cost ')' - ; - -cpu_cost - : UNSIGNED_INTEGER - ; - -io_cost - : UNSIGNED_INTEGER - ; - -network_cost - : UNSIGNED_INTEGER - ; - -default_selectivity_clause - : DEFAULT SELECTIVITY default_selectivity - ; - -default_selectivity - : UNSIGNED_INTEGER - ; - -storage_table_clause - : WITH (SYSTEM | USER) MANAGED STORAGE TABLES - ; - -// https://docs.oracle.com/database/121/SQLRF/statements_4008.htm#SQLRF56110 -unified_auditing - : {self.isVersion12()}? AUDIT ( - POLICY policy_name ((BY | EXCEPT) audit_user (',' audit_user)*)? (WHENEVER NOT? SUCCESSFUL)? - | CONTEXT NAMESPACE oracle_namespace ATTRIBUTES attribute_name (',' attribute_name)* ( - BY audit_user (',' audit_user)* - )? - ) ';' - ; - -policy_name - : identifier - ; - -// https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_4007.htm#SQLRF01107 -// https://docs.oracle.com/database/121/SQLRF/statements_4007.htm#SQLRF01107 - -audit_traditional - : AUDIT ( - audit_operation_clause (auditing_by_clause | IN SESSION CURRENT)? - | audit_schema_object_clause - | NETWORK - | audit_direct_path - ) (BY (SESSION | ACCESS))? (WHENEVER NOT? SUCCESSFUL)? audit_container_clause? ';' - ; - -audit_direct_path - : {self.isVersion12()}? DIRECT_PATH auditing_by_clause - ; - -audit_container_clause - : {self.isVersion12()}? (CONTAINER EQUALS_OP (CURRENT | ALL)) - ; - -audit_operation_clause - : ( - (sql_statement_shortcut | ALL STATEMENTS?) (',' (sql_statement_shortcut | ALL STATEMENTS?))* - | (system_privilege | ALL PRIVILEGES) (',' (system_privilege | ALL PRIVILEGES))* - ) - ; - -auditing_by_clause - : BY audit_user (',' audit_user)* - ; - -audit_user - : regular_id - ; - -audit_schema_object_clause - : (sql_operation (',' sql_operation)* | ALL) auditing_on_clause - ; - -sql_operation - : ALTER - | AUDIT - | COMMENT - | DELETE - | EXECUTE - | FLASHBACK - | GRANT - | INDEX - | INSERT - | LOCK - | READ - | RENAME - | SELECT - | UPDATE - ; - -auditing_on_clause - : ON ( - object_name - | DIRECTORY regular_id - | MINING MODEL model_name - | {self.isVersion12()}? SQL TRANSLATION PROFILE profile_name - | DEFAULT - ) - ; - -model_name - : (id_expression '.')? id_expression - ; - -object_name - : (id_expression '.')? id_expression - ; - -profile_name - : (id_expression '.')? id_expression - ; - -sql_statement_shortcut - : ALTER SYSTEM - | CLUSTER - | CONTEXT - | DATABASE LINK - | DIMENSION - | DIRECTORY - | INDEX - | MATERIALIZED VIEW - | NOT EXISTS - | OUTLINE - | {self.isVersion12()}? PLUGGABLE DATABASE - | PROCEDURE - | PROFILE - | PUBLIC DATABASE LINK - | PUBLIC SYNONYM - | ROLE - | ROLLBACK SEGMENT - | SEQUENCE - | SESSION - | SYNONYM - | SYSTEM AUDIT - | SYSTEM GRANT - | TABLE - | TABLESPACE - | TRIGGER - | TYPE - | USER - | VIEW - | ALTER SEQUENCE - | ALTER TABLE - | COMMENT TABLE - | DELETE TABLE - | EXECUTE PROCEDURE - | GRANT DIRECTORY - | GRANT PROCEDURE - | GRANT SEQUENCE - | GRANT TABLE - | GRANT TYPE - | INSERT TABLE - | LOCK TABLE - | SELECT SEQUENCE - | SELECT TABLE - | UPDATE TABLE - ; - -drop_index - : DROP INDEX index_name ';' - ; - -rename_object - : RENAME object_name TO object_name ';' - ; - -grant_statement - : GRANT (','? (role_name | system_privilege | object_privilege paren_column_list?))+ ( - ON grant_object_name - )? TO (grantee_name | PUBLIC) (',' (grantee_name | PUBLIC))* (WITH (ADMIN | DELEGATE) OPTION)? ( - WITH HIERARCHY OPTION - )? (WITH GRANT OPTION)? container_clause? ';' - ; - -container_clause - : CONTAINER EQUALS_OP (CURRENT | ALL) - ; - -create_directory - : CREATE (OR REPLACE)? DIRECTORY directory_name AS directory_path ';' - ; - -directory_name - : regular_id - ; - -directory_path - : CHAR_STRING - ; - -// https://docs.oracle.com/cd/E11882_01/appdev.112/e25519/alter_library.htm#LNPLS99946 -// https://docs.oracle.com/database/121/LNPLS/alter_library.htm#LNPLS99946 -alter_library - : ALTER LIBRARY library_name ( - COMPILE library_debug? compiler_parameters_clause* (REUSE SETTINGS)? - | library_editionable - ) ';' - ; - -library_editionable - : {self.isVersion12()}? (EDITIONABLE | NONEDITIONABLE) - ; - -library_debug - : {self.isVersion12()}? DEBUG - ; - -compiler_parameters_clause - : parameter_name EQUALS_OP parameter_value - ; - -parameter_value - : regular_id - ; - -library_name - : (regular_id '.')? regular_id - ; - -// https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_4004.htm#SQLRF01104 -// https://docs.oracle.com/database/121/SQLRF/statements_4004.htm#SQLRF01104 -alter_view - : ALTER VIEW tableview_name ( - ADD out_of_line_constraint - | MODIFY CONSTRAINT constraint_name (RELY | NORELY) - | DROP ( - CONSTRAINT constraint_name - | PRIMARY KEY - | UNIQUE '(' column_name (',' column_name)* ')' - ) - | COMPILE - | READ (ONLY | WRITE) - | alter_view_editionable? - ) ';' - ; - -alter_view_editionable - : {self.isVersion12()}? (EDITIONABLE | NONEDITIONABLE) - ; - -create_view - : CREATE (OR REPLACE)? (OR? FORCE)? EDITIONABLE? EDITIONING? VIEW tableview_name view_options? AS select_only_statement - subquery_restriction_clause? - ; - -view_options - : view_alias_constraint - | object_view_clause - // | xmltype_view_clause //TODO - ; - -view_alias_constraint - : '(' (','? (table_alias inline_constraint* | out_of_line_constraint))+ ')' - ; - -object_view_clause - : OF type_name ( - WITH OBJECT (IDENTIFIER | ID | OID) (DEFAULT | '(' REGULAR_ID (',' REGULAR_ID)* ')') - | UNDER tableview_name - ) ('(' ( ','? (out_of_line_constraint | REGULAR_ID inline_constraint))+ ')')* - ; - -inline_constraint - : (CONSTRAINT constraint_name)? ( - NOT? NULL_ - | UNIQUE - | PRIMARY KEY - | references_clause - | check_constraint - ) constraint_state? - ; - -inline_ref_constraint - : SCOPE IS tableview_name - | WITH ROWID - | (CONSTRAINT constraint_name)? references_clause constraint_state? - ; - -out_of_line_ref_constraint - : SCOPE FOR '(' ref_col_or_attr = regular_id ')' IS tableview_name - | REF '(' ref_col_or_attr = regular_id ')' WITH ROWID - | (CONSTRAINT constraint_name)? FOREIGN KEY '(' (','? ref_col_or_attr = regular_id)+ ')' references_clause constraint_state? - ; - -out_of_line_constraint - : ( - (CONSTRAINT constraint_name)? ( - UNIQUE '(' column_name (',' column_name)* ')' - | PRIMARY KEY '(' column_name (',' column_name)* ')' - | foreign_key_clause - | CHECK '(' expression ')' - ) - ) constraint_state? - ; - -constraint_state - : ( - NOT? DEFERRABLE - | INITIALLY (IMMEDIATE | DEFERRED) - | (RELY | NORELY) - | (ENABLE | DISABLE) - | (VALIDATE | NOVALIDATE) - | using_index_clause - )+ - ; - -alter_tablespace - : ALTER TABLESPACE tablespace ( - DEFAULT table_compression? storage_clause? - | MINIMUM EXTENT size_clause - | RESIZE size_clause - | COALESCE - | SHRINK SPACE_KEYWORD (KEEP size_clause)? - | RENAME TO new_tablespace_name - | begin_or_end BACKUP - | datafile_tempfile_clauses - | tablespace_logging_clauses - | tablespace_group_clause - | tablespace_state_clauses - | autoextend_clause - | flashback_mode_clause - | tablespace_retention_clause - ) ';' - ; - -datafile_tempfile_clauses - : ADD (datafile_specification | tempfile_specification) - | DROP (DATAFILE | TEMPFILE) (filename | UNSIGNED_INTEGER) (KEEP size_clause)? - | SHRINK TEMPFILE (filename | UNSIGNED_INTEGER) (KEEP size_clause)? - | RENAME DATAFILE filename (',' filename)* TO filename (',' filename)* - | (DATAFILE | TEMPFILE) (online_or_offline) - ; - -tablespace_logging_clauses - : logging_clause - | NO? FORCE LOGGING - ; - -tablespace_group_clause - : TABLESPACE GROUP (tablespace_group_name | CHAR_STRING) - ; - -tablespace_group_name - : regular_id - ; - -tablespace_state_clauses - : ONLINE - | OFFLINE (NORMAL | TEMPORARY | IMMEDIATE)? - | READ (ONLY | WRITE) - | PERMANENT - | TEMPORARY - ; - -flashback_mode_clause - : FLASHBACK (ON | OFF) - ; - -new_tablespace_name - : tablespace - ; - -create_tablespace - : CREATE (BIGFILE | SMALLFILE)? ( - permanent_tablespace_clause - | temporary_tablespace_clause - | undo_tablespace_clause - ) ';' - ; - -permanent_tablespace_clause - : TABLESPACE id_expression datafile_specification? ( - MINIMUM EXTENT size_clause - | BLOCKSIZE size_clause - | logging_clause - | FORCE LOGGING - | (ONLINE | OFFLINE) - | ENCRYPTION tablespace_encryption_spec - | DEFAULT //TODO table_compression? storage_clause? - | extent_management_clause - | segment_management_clause - | flashback_mode_clause - )* - ; - -tablespace_encryption_spec - : USING encrypt_algorithm = CHAR_STRING - ; - -logging_clause - : LOGGING - | NOLOGGING - | FILESYSTEM_LIKE_LOGGING - ; - -extent_management_clause - : EXTENT MANAGEMENT LOCAL (AUTOALLOCATE | UNIFORM (SIZE size_clause)?)? - ; - -segment_management_clause - : SEGMENT SPACE_KEYWORD MANAGEMENT (AUTO | MANUAL) - ; - -temporary_tablespace_clause - : TEMPORARY TABLESPACE tablespace_name = id_expression tempfile_specification? tablespace_group_clause? extent_management_clause? - ; - -undo_tablespace_clause - : UNDO TABLESPACE tablespace_name = id_expression datafile_specification? extent_management_clause? tablespace_retention_clause? - ; - -tablespace_retention_clause - : RETENTION (GUARANTEE | NOGUARANTEE) - ; - -// asm_filename is just a charater string. Would need to parse the string -// to find diskgroup... -datafile_specification - : DATAFILE (','? datafile_tempfile_spec) - ; - -tempfile_specification - : TEMPFILE (','? datafile_tempfile_spec) - ; - -datafile_tempfile_spec - : (CHAR_STRING)? (SIZE size_clause)? REUSE? autoextend_clause? - ; - -redo_log_file_spec - : (DATAFILE CHAR_STRING | '(' ( ','? CHAR_STRING)+ ')')? (SIZE size_clause)? ( - BLOCKSIZE size_clause - )? REUSE? - ; - -autoextend_clause - : AUTOEXTEND (OFF | ON (NEXT size_clause)? maxsize_clause?) - ; - -maxsize_clause - : MAXSIZE (UNLIMITED | size_clause) - ; - -build_clause - : BUILD (IMMEDIATE | DEFERRED) - ; - -parallel_clause - : NOPARALLEL - | PARALLEL parallel_count = UNSIGNED_INTEGER? - ; - -alter_materialized_view - : ALTER MATERIALIZED VIEW tableview_name ( - physical_attributes_clause - | modify_mv_column_clause - | table_compression - | lob_storage_clause (',' lob_storage_clause)* - | modify_lob_storage_clause (',' modify_lob_storage_clause)* - //TODO | alter_table_partitioning - | parallel_clause - | logging_clause - | allocate_extent_clause - | deallocate_unused_clause - | shrink_clause - | (cache_or_nocache) - )? alter_iot_clauses? (USING INDEX physical_attributes_clause)? alter_mv_option1? ( - enable_or_disable QUERY REWRITE - | COMPILE - | CONSIDER FRESH - )? ';' - ; - -alter_mv_option1 - : alter_mv_refresh - //TODO | MODIFY scoped_table_ref_constraint - ; - -alter_mv_refresh - : REFRESH ( - FAST - | COMPLETE - | FORCE - | ON (DEMAND | COMMIT) - | START WITH expression - | NEXT expression - | WITH PRIMARY KEY - | USING DEFAULT? MASTER ROLLBACK SEGMENT rollback_segment? - | USING (ENFORCED | TRUSTED) CONSTRAINTS - )+ - ; - -rollback_segment - : regular_id - ; - -modify_mv_column_clause - : MODIFY '(' column_name (ENCRYPT encryption_spec | DECRYPT)? ')' - ; - -alter_materialized_view_log - : ALTER MATERIALIZED VIEW LOG FORCE? ON tableview_name ( - physical_attributes_clause - | add_mv_log_column_clause - //TODO | alter_table_partitioning - | parallel_clause - | logging_clause - | allocate_extent_clause - | shrink_clause - | move_mv_log_clause - | cache_or_nocache - )? mv_log_augmentation? mv_log_purge_clause? ';' - ; - -add_mv_log_column_clause - : ADD '(' column_name ')' - ; - -move_mv_log_clause - : MOVE segment_attributes_clause parallel_clause? - ; - -mv_log_augmentation - : ADD ( - (OBJECT ID | PRIMARY KEY | ROWID | SEQUENCE) ('(' column_name (',' column_name)* ')')? - | '(' column_name (',' column_name)* ')' - ) new_values_clause? - ; - -// Should bound this to just date/time expr -datetime_expr - : expression - ; - -// Should bound this to just interval expr -interval_expr - : expression - ; - -synchronous_or_asynchronous - : SYNCHRONOUS - | ASYNCHRONOUS - ; - -including_or_excluding - : INCLUDING - | EXCLUDING - ; - -create_materialized_view_log - : CREATE MATERIALIZED VIEW LOG ON tableview_name ( - ( - physical_attributes_clause - | TABLESPACE tablespace_name = id_expression - | logging_clause - | (CACHE | NOCACHE) - )+ - )? parallel_clause? - // table_partitioning_clauses TODO - ( - WITH (','? ( OBJECT ID | PRIMARY KEY | ROWID | SEQUENCE | COMMIT SCN))* ( - '(' ( ','? regular_id)+ ')' new_values_clause? - )? mv_log_purge_clause? - )* - ; - -new_values_clause - : (INCLUDING | EXCLUDING) NEW VALUES - ; - -mv_log_purge_clause - : PURGE ( - IMMEDIATE (SYNCHRONOUS | ASYNCHRONOUS)? - // |START WITH CLAUSES TODO - ) - ; - -create_materialized_view - : CREATE MATERIALIZED VIEW tableview_name (OF type_name)? - //scoped_table_ref and column alias goes here TODO - ( - ON PREBUILT TABLE ( (WITH | WITHOUT) REDUCED PRECISION)? - | physical_properties? (CACHE | NOCACHE)? parallel_clause? build_clause? - ) ( - USING INDEX ((physical_attributes_clause | TABLESPACE mv_tablespace = id_expression)+)* - | USING NO INDEX - )? create_mv_refresh? (FOR UPDATE)? ((DISABLE | ENABLE) QUERY REWRITE)? AS select_only_statement ';' - ; - -create_mv_refresh - : ( - NEVER REFRESH - | REFRESH ( - (FAST | COMPLETE | FORCE) - | ON (DEMAND | COMMIT) - | (START WITH | NEXT) //date goes here TODO - | WITH (PRIMARY KEY | ROWID) - | USING ( - DEFAULT (MASTER | LOCAL)? ROLLBACK SEGMENT - | (MASTER | LOCAL)? ROLLBACK SEGMENT rb_segment = REGULAR_ID - ) - | USING (ENFORCED | TRUSTED) CONSTRAINTS - )+ - ) - ; - -create_context - : CREATE (OR REPLACE)? CONTEXT oracle_namespace USING (schema_object_name '.')? package_name ( - INITIALIZED (EXTERNALLY | GLOBALLY) - | ACCESSED GLOBALLY - )? ';' - ; - -oracle_namespace - : id_expression - ; - -//https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_5001.htm#SQLRF01201 -create_cluster - : CREATE CLUSTER cluster_name '(' column_name datatype SORT? (',' column_name datatype SORT?)* ')' ( - physical_attributes_clause - | SIZE size_clause - | TABLESPACE tablespace - | INDEX - | (SINGLE TABLE)? HASHKEYS UNSIGNED_INTEGER (HASH IS expression)? - )* parallel_clause? (ROWDEPENDENCIES | NOROWDEPENDENCIES)? (CACHE | NOCACHE)? ';' - ; - -create_table - : CREATE (GLOBAL TEMPORARY)? TABLE tableview_name ( - relational_table - | object_table - | xmltype_table - ) (AS select_only_statement)? ';' - ; - -xmltype_table - : OF XMLTYPE ('(' object_properties ')')? (XMLTYPE xmltype_storage)? xmlschema_spec? xmltype_virtual_columns? ( - ON COMMIT (DELETE | PRESERVE) ROWS - )? oid_clause? oid_index_clause? physical_properties? column_properties? table_partitioning_clauses? ( - CACHE - | NOCACHE - )? (RESULT_CACHE '(' MODE (DEFAULT | FORCE) ')')? parallel_clause? ( - ROWDEPENDENCIES - | NOROWDEPENDENCIES - )? (enable_disable_clause+)? row_movement_clause? flashback_archive_clause? - ; - -xmltype_virtual_columns - : VIRTUAL COLUMNS '(' column_name AS '(' expression ')' (',' column_name AS '(' expression ')')* ')' - ; - -xmltype_column_properties - : XMLTYPE COLUMN? column_name xmltype_storage? xmlschema_spec? - ; - -xmltype_storage - : STORE AS ( - OBJECT RELATIONAL - | (SECUREFILE | BASICFILE)? (CLOB | BINARY XML) ( - lob_segname ('(' lob_parameters ')')? - | '(' lob_parameters ')' - )? - ) - | STORE VARRAYS AS (LOBS | TABLES) - ; - -xmlschema_spec - : (XMLSCHEMA DELIMITED_ID)? ELEMENT DELIMITED_ID (allow_or_disallow NONSCHEMA)? ( - allow_or_disallow ANYSCHEMA - )? - ; - -object_table - : OF type_name object_table_substitution? ('(' object_properties (',' object_properties)* ')')? ( - ON COMMIT (DELETE | PRESERVE) ROWS - )? oid_clause? oid_index_clause? physical_properties? column_properties? table_partitioning_clauses? ( - CACHE - | NOCACHE - )? (RESULT_CACHE '(' MODE (DEFAULT | FORCE) ')')? parallel_clause? ( - ROWDEPENDENCIES - | NOROWDEPENDENCIES - )? (enable_disable_clause+)? row_movement_clause? flashback_archive_clause? - ; - -oid_index_clause - : OIDINDEX index_name? '(' (physical_attributes_clause | TABLESPACE tablespace)+ ')' - ; - -oid_clause - : OBJECT IDENTIFIER IS (SYSTEM GENERATED | PRIMARY KEY) - ; - -object_properties - : (column_name | attribute_name) (DEFAULT expression)? ( - inline_constraint (',' inline_constraint)* - | inline_ref_constraint - )? - | out_of_line_constraint - | out_of_line_ref_constraint - | supplemental_logging_props - ; - -object_table_substitution - : NOT? SUBSTITUTABLE AT ALL LEVELS - ; - -relational_table - : ('(' relational_property (',' relational_property)* ')')? ( - ON COMMIT (DELETE | PRESERVE) ROWS - )? physical_properties? column_properties? table_partitioning_clauses? (CACHE | NOCACHE)? ( - RESULT_CACHE '(' MODE (DEFAULT | FORCE) ')' - )? parallel_clause? (ROWDEPENDENCIES | NOROWDEPENDENCIES)? (enable_disable_clause+)? row_movement_clause? flashback_archive_clause? - ; - -relational_property - : ( - column_definition - | virtual_column_definition - | out_of_line_constraint - | out_of_line_ref_constraint - | supplemental_logging_props - ) - ; - -table_partitioning_clauses - : range_partitions - | list_partitions - | hash_partitions - | composite_range_partitions - | composite_list_partitions - | composite_hash_partitions - | reference_partitioning - | system_partitioning - ; - -range_partitions - : PARTITION BY RANGE '(' column_name (',' column_name)* ')' ( - INTERVAL '(' expression ')' (STORE IN '(' tablespace (',' tablespace)* ')')? - )? '(' PARTITION partition_name? range_values_clause table_partition_description ( - ',' PARTITION partition_name? range_values_clause table_partition_description - )* ')' - ; - -list_partitions - : PARTITION BY LIST '(' column_name ')' '(' PARTITION partition_name? list_values_clause table_partition_description ( - ',' PARTITION partition_name? list_values_clause table_partition_description - )* ')' - ; - -hash_partitions - : PARTITION BY HASH '(' column_name (',' column_name)* ')' ( - individual_hash_partitions - | hash_partitions_by_quantity - ) - ; - -individual_hash_partitions - : '(' PARTITION partition_name? partitioning_storage_clause? ( - ',' PARTITION partition_name? partitioning_storage_clause? - )* ')' - ; - -hash_partitions_by_quantity - : PARTITIONS hash_partition_quantity (STORE IN '(' tablespace (',' tablespace)* ')')? ( - table_compression - | key_compression - )? (OVERFLOW STORE IN '(' tablespace (',' tablespace)* ')')? - ; - -hash_partition_quantity - : UNSIGNED_INTEGER - ; - -composite_range_partitions - : PARTITION BY RANGE '(' column_name (',' column_name)* ')' ( - INTERVAL '(' expression ')' (STORE IN '(' tablespace (',' tablespace)* ')')? - )? (subpartition_by_range | subpartition_by_list | subpartition_by_hash) '(' range_partition_desc ( - ',' range_partition_desc - )* ')' - ; - -composite_list_partitions - : PARTITION BY LIST '(' column_name ')' ( - subpartition_by_range - | subpartition_by_list - | subpartition_by_hash - ) '(' list_partition_desc (',' list_partition_desc)* ')' - ; - -composite_hash_partitions - : PARTITION BY HASH '(' (',' column_name)+ ')' ( - subpartition_by_range - | subpartition_by_list - | subpartition_by_hash - ) (individual_hash_partitions | hash_partitions_by_quantity) - ; - -reference_partitioning - : PARTITION BY REFERENCE '(' regular_id ')' ( - '(' reference_partition_desc (',' reference_partition_desc)* ')' - )? - ; - -reference_partition_desc - : PARTITION partition_name? table_partition_description - ; - -system_partitioning - : PARTITION BY SYSTEM ( - PARTITIONS UNSIGNED_INTEGER - | reference_partition_desc (',' reference_partition_desc)* - )? - ; - -range_partition_desc - : PARTITION partition_name? range_values_clause table_partition_description ( - ( - '(' ( - range_subpartition_desc (',' range_subpartition_desc)* - | list_subpartition_desc (',' list_subpartition_desc)* - | individual_hash_subparts (',' individual_hash_subparts)* - ) ')' - | hash_subparts_by_quantity - ) - )? - ; - -list_partition_desc - : PARTITION partition_name? list_values_clause table_partition_description ( - ( - '(' ( - range_subpartition_desc (',' range_subpartition_desc)* - | list_subpartition_desc (',' list_subpartition_desc)* - | individual_hash_subparts (',' individual_hash_subparts)* - ) ')' - | hash_subparts_by_quantity - ) - )? - ; - -subpartition_template - : SUBPARTITION TEMPLATE ( - ( - '(' ( - range_subpartition_desc (',' range_subpartition_desc)* - | list_subpartition_desc (',' list_subpartition_desc)* - | individual_hash_subparts (',' individual_hash_subparts)* - ) ')' - | hash_subpartition_quantity - ) - ) - ; - -hash_subpartition_quantity - : UNSIGNED_INTEGER - ; - -subpartition_by_range - : SUBPARTITION BY RANGE '(' column_name (',' column_name)* ')' subpartition_template? - ; - -subpartition_by_list - : SUBPARTITION BY LIST '(' column_name ')' subpartition_template? - ; - -subpartition_by_hash - : SUBPARTITION BY HASH '(' column_name (',' column_name)* ')' ( - SUBPARTITIONS UNSIGNED_INTEGER (STORE IN '(' tablespace (',' tablespace)* ')')? - | subpartition_template - )? - ; - -subpartition_name - : partition_name - ; - -range_subpartition_desc - : SUBPARTITION subpartition_name? range_values_clause partitioning_storage_clause? - ; - -list_subpartition_desc - : SUBPARTITION subpartition_name? list_values_clause partitioning_storage_clause? - ; - -individual_hash_subparts - : SUBPARTITION subpartition_name? partitioning_storage_clause? - ; - -hash_subparts_by_quantity - : SUBPARTITIONS UNSIGNED_INTEGER (STORE IN '(' tablespace (',' tablespace)* ')')? - ; - -range_values_clause - : VALUES LESS THAN '(' literal (',' literal)* ')' - ; - -list_values_clause - : VALUES '(' (literal (',' literal)* | DEFAULT) ')' - ; - -table_partition_description - : deferred_segment_creation? segment_attributes_clause? (table_compression | key_compression)? ( - OVERFLOW segment_attributes_clause? - )? (lob_storage_clause | varray_col_properties | nested_table_col_properties)? - ; - -partitioning_storage_clause - : ( - TABLESPACE tablespace - | OVERFLOW (TABLESPACE tablespace)? - | table_compression - | key_compression - | lob_partitioning_storage - | VARRAY varray_item STORE AS (BASICFILE | SECUREFILE)? LOB lob_segname - )+ - ; - -lob_partitioning_storage - : LOB '(' lob_item ')' STORE AS (BASICFILE | SECUREFILE)? ( - lob_segname ('(' TABLESPACE tablespace ')')? - | '(' TABLESPACE tablespace ')' - ) - ; - -datatype_null_enable - : column_name datatype SORT? (DEFAULT expression)? ( - ENCRYPT (USING CHAR_STRING)? (IDENTIFIED BY REGULAR_ID)? CHAR_STRING? (NO? SALT)? - )? (NOT NULL_)? (ENABLE | DISABLE)? - ; - -//Technically, this should only allow 'K' | 'M' | 'G' | 'T' | 'P' | 'E' -// but having issues with examples/numbers01.sql line 11 "sysdate -1m" -size_clause - : UNSIGNED_INTEGER REGULAR_ID? - ; - -table_compression - : COMPRESS (BASIC | FOR ( OLTP | (QUERY | ARCHIVE) (LOW | HIGH)?))? - | NOCOMPRESS - ; - -physical_attributes_clause - : ( - PCTFREE pctfree = UNSIGNED_INTEGER - | PCTUSED pctused = UNSIGNED_INTEGER - | INITRANS inittrans = UNSIGNED_INTEGER - | storage_clause - )+ - ; - -storage_clause - : STORAGE '(' ( - INITIAL initial_size = size_clause - | NEXT next_size = size_clause - | MINEXTENTS minextents = (UNSIGNED_INTEGER | UNLIMITED) - | MAXEXTENTS minextents = (UNSIGNED_INTEGER | UNLIMITED) - | PCTINCREASE pctincrease = UNSIGNED_INTEGER - | FREELISTS freelists = UNSIGNED_INTEGER - | FREELIST GROUPS freelist_groups = UNSIGNED_INTEGER - | OPTIMAL (size_clause | NULL_) - | BUFFER_POOL (KEEP | RECYCLE | DEFAULT) - | FLASH_CACHE (KEEP | NONE | DEFAULT) - | ENCRYPT - )+ ')' - ; - -deferred_segment_creation - : SEGMENT CREATION (IMMEDIATE | DEFERRED) - ; - -segment_attributes_clause - : (physical_attributes_clause | TABLESPACE tablespace_name = id_expression | logging_clause)+ - ; - -physical_properties - : deferred_segment_creation? segment_attributes_clause table_compression? - ; - -row_movement_clause - : (ENABLE | DISABLE)? ROW MOVEMENT - ; - -flashback_archive_clause - : FLASHBACK ARCHIVE flashback_archive = REGULAR_ID - | NO FLASHBACK ARCHIVE - ; - -log_grp - : UNSIGNED_INTEGER - ; - -supplemental_table_logging - : ADD SUPPLEMENTAL LOG (supplemental_log_grp_clause | supplemental_id_key_clause) ( - ',' SUPPLEMENTAL LOG (supplemental_log_grp_clause | supplemental_id_key_clause) - )* - | DROP SUPPLEMENTAL LOG (supplemental_id_key_clause | GROUP log_grp) ( - ',' SUPPLEMENTAL LOG (supplemental_id_key_clause | GROUP log_grp) - )* - ; - -supplemental_log_grp_clause - : GROUP log_grp '(' regular_id (NO LOG)? (',' regular_id (NO LOG)?)* ')' ALWAYS? - ; - -supplemental_id_key_clause - : DATA '(' (','? ( ALL | PRIMARY KEY | UNIQUE | FOREIGN KEY))+ ')' COLUMNS - ; - -allocate_extent_clause - : ALLOCATE EXTENT ( - '(' ( - SIZE size_clause - | DATAFILE datafile = CHAR_STRING - | INSTANCE inst_num = UNSIGNED_INTEGER - )+ ')' - )? - ; - -deallocate_unused_clause - : DEALLOCATE UNUSED (KEEP size_clause)? - ; - -shrink_clause - : SHRINK SPACE_KEYWORD COMPACT? CASCADE? - ; - -records_per_block_clause - : (MINIMIZE | NOMINIMIZE)? RECORDS_PER_BLOCK - ; - -upgrade_table_clause - : UPGRADE (NOT? INCLUDING DATA) column_properties - ; - -truncate_table - : TRUNCATE TABLE tableview_name PURGE? SEMICOLON - ; - -drop_table - : DROP TABLE tableview_name PURGE? SEMICOLON - ; - -drop_view - : DROP VIEW tableview_name (CASCADE CONSTRAINT)? SEMICOLON - ; - -comment_on_column - : COMMENT ON COLUMN column_name IS quoted_string - ; - -enable_or_disable - : ENABLE - | DISABLE - ; - -allow_or_disallow - : ALLOW - | DISALLOW - ; - -// Synonym DDL Clauses - -create_synonym -// Synonym's schema cannot be specified for public synonyms - : CREATE (OR REPLACE)? PUBLIC SYNONYM synonym_name FOR (schema_name PERIOD)? schema_object_name ( - AT_SIGN link_name - )? - | CREATE (OR REPLACE)? SYNONYM (schema_name PERIOD)? synonym_name FOR (schema_name PERIOD)? schema_object_name ( - AT_SIGN link_name - )? - ; - -comment_on_table - : COMMENT ON TABLE tableview_name IS quoted_string - ; - -alter_cluster - : ALTER CLUSTER cluster_name ( - physical_attributes_clause - | SIZE size_clause - | allocate_extent_clause - | deallocate_unused_clause - | cache_or_nocache - )+ parallel_clause? ';' - ; - -cache_or_nocache - : CACHE - | NOCACHE - ; - -database_name - : regular_id - ; - -alter_database - : ALTER DATABASE database_name? ( - startup_clauses - | recovery_clauses - | database_file_clauses - | logfile_clauses - | controlfile_clauses - | standby_database_clauses - | default_settings_clause - | instance_clauses - | security_clause - ) ';' - ; - -startup_clauses - : MOUNT ((STANDBY | CLONE) DATABASE)? - | OPEN (READ WRITE)? resetlogs_or_noresetlogs? upgrade_or_downgrade? - | OPEN READ ONLY - ; - -resetlogs_or_noresetlogs - : RESETLOGS - | NORESETLOGS - ; - -upgrade_or_downgrade - : UPGRADE - | DOWNGRADE - ; - -recovery_clauses - : general_recovery - | managed_standby_recovery - | begin_or_end BACKUP - ; - -begin_or_end - : BEGIN - | END - ; - -general_recovery - : RECOVER AUTOMATIC? (FROM CHAR_STRING)? ( - (full_database_recovery | partial_database_recovery | LOGFILE CHAR_STRING)? ( - (TEST | ALLOW UNSIGNED_INTEGER CORRUPTION | parallel_clause)+ - )? - | CONTINUE DEFAULT? - | CANCEL - ) - ; - -//Need to come back to -full_database_recovery - : STANDBY? DATABASE ( - ( - UNTIL (CANCEL | TIME CHAR_STRING | CHANGE UNSIGNED_INTEGER | CONSISTENT) - | USING BACKUP CONTROLFILE - )+ - )? - ; - -partial_database_recovery - : TABLESPACE tablespace (',' tablespace)* - | DATAFILE CHAR_STRING - | filenumber (',' CHAR_STRING | filenumber)* - | partial_database_recovery_10g - ; - -partial_database_recovery_10g - : {self.isVersion10()}? STANDBY ( - TABLESPACE tablespace (',' tablespace)* - | DATAFILE CHAR_STRING - | filenumber (',' CHAR_STRING | filenumber)* - ) UNTIL (CONSISTENT WITH)? CONTROLFILE - ; - -managed_standby_recovery - : RECOVER ( - MANAGED STANDBY DATABASE ( - ( - USING CURRENT LOGFILE - | DISCONNECT (FROM SESSION)? - | NODELAY - | UNTIL CHANGE UNSIGNED_INTEGER - | UNTIL CONSISTENT - | parallel_clause - )+ - | FINISH - | CANCEL - )? - | TO LOGICAL STANDBY (db_name | KEEP IDENTITY) - ) - ; - -db_name - : regular_id - ; - -database_file_clauses - : RENAME FILE filename (',' filename)* TO filename - | create_datafile_clause - | alter_datafile_clause - | alter_tempfile_clause - ; - -create_datafile_clause - : CREATE DATAFILE (filename | filenumber) (',' (filename | filenumber))* ( - AS ( - //TODO (','? file_specification)+ | - NEW - ) - )? - ; - -alter_datafile_clause - : DATAFILE (filename | filenumber) (',' (filename | filenumber))* ( - ONLINE - | OFFLINE (FOR DROP)? - | RESIZE size_clause - | autoextend_clause - | END BACKUP - ) - ; - -alter_tempfile_clause - : TEMPFILE (filename | filenumber) (',' (filename | filenumber))* ( - RESIZE size_clause - | autoextend_clause - | DROP (INCLUDING DATAFILES) - | ONLINE - | OFFLINE - ) - ; - -logfile_clauses - : (ARCHIVELOG MANUAL? | NOARCHIVELOG) - | NO? FORCE LOGGING - | RENAME FILE filename (',' filename)* TO filename - | CLEAR UNARCHIVED? LOGFILE logfile_descriptor (',' logfile_descriptor)* ( - UNRECOVERABLE DATAFILE - )? - | add_logfile_clauses - | drop_logfile_clauses - | switch_logfile_clause - | supplemental_db_logging - ; - -add_logfile_clauses - : ADD STANDBY? LOGFILE ( - //TODO (INSTANCE CHAR_STRING | THREAD UNSIGNED_INTEGER)? - (log_file_group redo_log_file_spec)+ - | MEMBER filename REUSE? (',' filename REUSE?)* TO logfile_descriptor ( - ',' logfile_descriptor - )* - ) - ; - -log_file_group - : (','? (THREAD UNSIGNED_INTEGER)? GROUP UNSIGNED_INTEGER) - ; - -drop_logfile_clauses - : DROP STANDBY? LOGFILE ( - logfile_descriptor (',' logfile_descriptor)* - | MEMBER filename (',' filename)* - ) - ; - -switch_logfile_clause - : SWITCH ALL LOGFILES TO BLOCKSIZE UNSIGNED_INTEGER - ; - -supplemental_db_logging - : add_or_drop SUPPLEMENTAL LOG (DATA | supplemental_id_key_clause | supplemental_plsql_clause) - ; - -add_or_drop - : ADD - | DROP - ; - -supplemental_plsql_clause - : DATA FOR PROCEDURAL REPLICATION - ; - -logfile_descriptor - : GROUP UNSIGNED_INTEGER - | '(' filename (',' filename)* ')' - | filename - ; - -controlfile_clauses - : CREATE (LOGICAL | PHYSICAL)? STANDBY CONTROLFILE AS filename REUSE? - | BACKUP CONTROLFILE TO (filename REUSE? | trace_file_clause) - ; - -trace_file_clause - : TRACE (AS filename REUSE?)? (RESETLOGS | NORESETLOGS)? - ; - -standby_database_clauses - : ( - activate_standby_db_clause - | maximize_standby_db_clause - | register_logfile_clause - | commit_switchover_clause - | start_standby_clause - | stop_standby_clause - | convert_database_clause - ) parallel_clause? - ; - -activate_standby_db_clause - : ACTIVATE (PHYSICAL | LOGICAL)? STANDBY DATABASE (FINISH APPLY)? - ; - -maximize_standby_db_clause - : SET STANDBY DATABASE TO MAXIMIZE (PROTECTION | AVAILABILITY | PERFORMANCE) - ; - -register_logfile_clause - : REGISTER (OR REPLACE)? (PHYSICAL | LOGICAL) LOGFILE //TODO (','? file_specification)+ - //TODO (FOR logminer_session_name)? - ; - -commit_switchover_clause - : (PREPARE | COMMIT) TO SWITCHOVER ( - ( - TO ( - ((PHYSICAL | LOGICAL)? PRIMARY | PHYSICAL? STANDBY) ( - (WITH | WITHOUT)? SESSION SHUTDOWN (WAIT | NOWAIT) - )? - | LOGICAL STANDBY - ) - | LOGICAL STANDBY - ) - | CANCEL - )? - ; - -start_standby_clause - : START LOGICAL STANDBY APPLY IMMEDIATE? NODELAY? ( - NEW PRIMARY regular_id - | INITIAL scn_value = UNSIGNED_INTEGER? - | SKIP_ FAILED TRANSACTION - | FINISH - )? - ; - -stop_standby_clause - : (STOP | ABORT) LOGICAL STANDBY APPLY - ; - -convert_database_clause - : CONVERT TO (PHYSICAL | SNAPSHOT) STANDBY - ; - -default_settings_clause - : DEFAULT EDITION EQUALS_OP edition_name - | SET DEFAULT (BIGFILE | SMALLFILE) TABLESPACE - | DEFAULT TABLESPACE tablespace - | DEFAULT TEMPORARY TABLESPACE (tablespace | tablespace_group_name) - | RENAME GLOBAL_NAME TO database ('.' domain)+ - | ENABLE BLOCK CHANGE TRACKING (USING FILE filename REUSE?)? - | DISABLE BLOCK CHANGE TRACKING - | flashback_mode_clause - | set_time_zone_clause - ; - -set_time_zone_clause - : SET TIMEZONE EQUALS_OP CHAR_STRING - ; - -instance_clauses - : enable_or_disable INSTANCE CHAR_STRING - ; - -security_clause - : GUARD (ALL | STANDBY | NONE) - ; - -domain - : regular_id - ; - -database - : regular_id - ; - -edition_name - : regular_id - ; - -filenumber - : UNSIGNED_INTEGER - ; - -filename - : CHAR_STRING - ; - -alter_table - : ALTER TABLE tableview_name ( - | alter_table_properties - | constraint_clauses - | column_clauses - //TODO | alter_table_partitioning - //TODO | alter_external_table - | move_table_clause - ) ((enable_disable_clause | enable_or_disable (TABLE LOCK | ALL TRIGGERS))+)? ';' - ; - -alter_table_properties - : alter_table_properties_1 - | RENAME TO tableview_name - | shrink_clause - | READ ONLY - | READ WRITE - | REKEY CHAR_STRING - ; - -alter_table_properties_1 - : ( - physical_attributes_clause - | logging_clause - | table_compression - | supplemental_table_logging - | allocate_extent_clause - | deallocate_unused_clause - | (CACHE | NOCACHE) - | RESULT_CACHE '(' MODE (DEFAULT | FORCE) ')' - | upgrade_table_clause - | records_per_block_clause - | parallel_clause - | row_movement_clause - | flashback_archive_clause - )+ alter_iot_clauses? - ; - -alter_iot_clauses - : index_org_table_clause - | alter_overflow_clause - | alter_mapping_table_clause - | COALESCE - ; - -alter_mapping_table_clause - : MAPPING TABLE (allocate_extent_clause | deallocate_unused_clause) - ; - -alter_overflow_clause - : add_overflow_clause - | OVERFLOW ( - segment_attributes_clause - | allocate_extent_clause - | shrink_clause - | deallocate_unused_clause - )+ - ; - -add_overflow_clause - : ADD OVERFLOW segment_attributes_clause? ( - '(' PARTITION segment_attributes_clause? (',' PARTITION segment_attributes_clause?)* ')' - )? - ; - -enable_disable_clause - : (ENABLE | DISABLE) (VALIDATE | NOVALIDATE)? ( - UNIQUE '(' column_name (',' column_name)* ')' - | PRIMARY KEY - | CONSTRAINT constraint_name - ) using_index_clause? exceptions_clause? CASCADE? ((KEEP | DROP) INDEX)? - ; - -using_index_clause - : USING INDEX (index_name | '(' create_index ')' | index_attributes)? - ; - -index_attributes - : ( - physical_attributes_clause - | logging_clause - | TABLESPACE (tablespace | DEFAULT) - | key_compression - | sort_or_nosort - | REVERSE - | visible_or_invisible - | parallel_clause - )+ - ; - -sort_or_nosort - : SORT - | NOSORT - ; - -exceptions_clause - : EXCEPTIONS INTO tableview_name - ; - -move_table_clause - : MOVE ONLINE? segment_attributes_clause? table_compression? index_org_table_clause? ( - (lob_storage_clause | varray_col_properties)+ - )? parallel_clause? - ; - -index_org_table_clause - : (mapping_table_clause | PCTTHRESHOLD UNSIGNED_INTEGER | key_compression) index_org_overflow_clause? - ; - -mapping_table_clause - : MAPPING TABLE - | NOMAPPING - ; - -key_compression - : NOCOMPRESS - | COMPRESS UNSIGNED_INTEGER - ; - -index_org_overflow_clause - : (INCLUDING column_name)? OVERFLOW segment_attributes_clause? - ; - -column_clauses - : add_modify_drop_column_clauses - | rename_column_clause - | modify_collection_retrieval - | modify_lob_storage_clause - ; - -modify_collection_retrieval - : MODIFY NESTED TABLE collection_item RETURN AS (LOCATOR | VALUE) - ; - -collection_item - : tableview_name - ; - -rename_column_clause - : RENAME COLUMN old_column_name TO new_column_name - ; - -old_column_name - : column_name - ; - -new_column_name - : column_name - ; - -add_modify_drop_column_clauses - : (add_column_clause | modify_column_clauses | drop_column_clause)+ - ; - -drop_column_clause - : SET UNUSED (COLUMN column_name | ('(' column_name (',' column_name)* ')')) ( - CASCADE CONSTRAINTS - | INVALIDATE - )* - | DROP (COLUMN column_name | '(' column_name (',' column_name)* ')') ( - CASCADE CONSTRAINTS - | INVALIDATE - )* (CHECKPOINT UNSIGNED_INTEGER)? - | DROP (UNUSED COLUMNS | COLUMNS CONTINUE) (CHECKPOINT UNSIGNED_INTEGER) - ; - -modify_column_clauses - : MODIFY ( - '(' modify_col_properties (',' modify_col_properties)* ')' - | modify_col_properties - | modify_col_substitutable - ) - ; - -modify_col_properties - : column_name datatype? (DEFAULT expression)? (ENCRYPT encryption_spec | DECRYPT)? inline_constraint* lob_storage_clause? - //TODO alter_xmlschema_clause - ; - -modify_col_substitutable - : COLUMN column_name NOT? SUBSTITUTABLE AT ALL LEVELS FORCE? - ; - -add_column_clause - : ADD ( - '(' (column_definition | virtual_column_definition) ( - ',' (column_definition | virtual_column_definition) - )* ')' - | ( column_definition | virtual_column_definition) - ) column_properties? - //TODO (','? out_of_line_part_storage ) - ; - -alter_varray_col_properties - : MODIFY VARRAY varray_item '(' modify_lob_parameters ')' - ; - -varray_col_properties - : VARRAY varray_item ( - substitutable_column_clause? varray_storage_clause - | substitutable_column_clause - ) - ; - -varray_storage_clause - : STORE AS (SECUREFILE | BASICFILE)? LOB ( - lob_segname? '(' lob_storage_parameters ')' - | lob_segname - ) - ; - -lob_segname - : regular_id - ; - -lob_item - : regular_id - ; - -lob_storage_parameters - : TABLESPACE tablespace - | (lob_parameters storage_clause?) - | storage_clause - ; - -lob_storage_clause - : LOB ( - '(' lob_item (',' lob_item)* ')' STORE AS ( - (SECUREFILE | BASICFILE) - | '(' lob_storage_parameters ')' - )+ - | '(' lob_item ')' STORE AS ( - (SECUREFILE | BASICFILE) - | lob_segname - | '(' lob_storage_parameters ')' - )+ - ) - ; - -modify_lob_storage_clause - : MODIFY LOB '(' lob_item ')' '(' modify_lob_parameters ')' - ; - -modify_lob_parameters - : ( - storage_clause - | (PCTVERSION | FREEPOOLS) UNSIGNED_INTEGER - | REBUILD FREEPOOLS - | lob_retention_clause - | lob_deduplicate_clause - | lob_compression_clause - | ENCRYPT encryption_spec - | DECRYPT - | CACHE - | (CACHE | NOCACHE | CACHE READS) logging_clause? - | allocate_extent_clause - | shrink_clause - | deallocate_unused_clause - )+ - ; - -lob_parameters - : ( - (ENABLE | DISABLE) STORAGE IN ROW - | CHUNK UNSIGNED_INTEGER - | PCTVERSION UNSIGNED_INTEGER - | FREEPOOLS UNSIGNED_INTEGER - | lob_retention_clause - | lob_deduplicate_clause - | lob_compression_clause - | ENCRYPT encryption_spec - | DECRYPT - | (CACHE | NOCACHE | CACHE READS) logging_clause? - )+ - ; - -lob_deduplicate_clause - : DEDUPLICATE - | KEEP_DUPLICATES - ; - -lob_compression_clause - : NOCOMPRESS - | COMPRESS (HIGH | MEDIUM | LOW)? - ; - -lob_retention_clause - : RETENTION (MAX | MIN UNSIGNED_INTEGER | AUTO | NONE)? - ; - -encryption_spec - : (USING CHAR_STRING)? (IDENTIFIED BY REGULAR_ID)? CHAR_STRING? (NO? SALT)? - ; - -tablespace - : regular_id - ; - -varray_item - : (id_expression '.')? (id_expression '.')? id_expression - ; - -column_properties - : object_type_col_properties - | nested_table_col_properties - | (varray_col_properties | lob_storage_clause) //TODO '(' ( ','? lob_partition_storage)+ ')' - | xmltype_column_properties - ; - -period_definition - : {self.isVersion12()}? PERIOD FOR column_name ('(' start_time_column ',' end_time_column ')')? - ; - -start_time_column - : column_name - ; - -end_time_column - : column_name - ; - -column_definition - : column_name (datatype | type_name) SORT? (DEFAULT expression)? ( - ENCRYPT (USING CHAR_STRING)? (IDENTIFIED BY regular_id)? CHAR_STRING? (NO? SALT)? - )? (inline_constraint* | inline_ref_constraint) - ; - -virtual_column_definition - : column_name datatype? autogenerated_sequence_definition? VIRTUAL? inline_constraint* - ; - -autogenerated_sequence_definition - : GENERATED (ALWAYS | BY DEFAULT (ON NULL_)?)? AS IDENTITY ( - '(' (sequence_start_clause | sequence_spec)* ')' - )? - ; - -out_of_line_part_storage - : PARTITION partition_name - ; - -nested_table_col_properties - : NESTED TABLE (nested_item | COLUMN_VALUE) substitutable_column_clause? (LOCAL | GLOBAL)? STORE AS tableview_name ( - '(' ('(' object_properties ')' | physical_properties | column_properties)+ ')' - )? (RETURN AS? (LOCATOR | VALUE))? - ; - -nested_item - : regular_id - ; - -substitutable_column_clause - : ELEMENT? IS OF TYPE? '(' type_name ')' - | NOT? SUBSTITUTABLE AT ALL LEVELS - ; - -partition_name - : regular_id - ; - -supplemental_logging_props - : SUPPLEMENTAL LOG (supplemental_log_grp_clause | supplemental_id_key_clause) - ; - -column_or_attribute - : regular_id - ; - -object_type_col_properties - : COLUMN column = regular_id substitutable_column_clause - ; - -constraint_clauses - : ADD '(' (out_of_line_constraint* | out_of_line_ref_constraint) ')' - | ADD (out_of_line_constraint* | out_of_line_ref_constraint) - | MODIFY ( - CONSTRAINT constraint_name - | PRIMARY KEY - | UNIQUE '(' column_name (',' column_name)* ')' - ) constraint_state CASCADE? - | RENAME CONSTRAINT old_constraint_name TO new_constraint_name - | drop_constraint_clause+ - ; - -old_constraint_name - : constraint_name - ; - -new_constraint_name - : constraint_name - ; - -drop_constraint_clause - : DROP drop_primary_key_or_unique_or_generic_clause - ; - -drop_primary_key_or_unique_or_generic_clause - : (PRIMARY KEY | UNIQUE '(' column_name (',' column_name)* ')') CASCADE? (KEEP | DROP)? - | CONSTRAINT constraint_name CASCADE? - ; - -add_constraint - : ADD (CONSTRAINT constraint_name)? add_constraint_clause ( - ',' (CONSTRAINT constraint_name)? add_constraint_clause - )+ - ; - -add_constraint_clause - : primary_key_clause - | foreign_key_clause - | unique_key_clause - | check_constraint - ; - -check_constraint - : CHECK '(' condition ')' DISABLE? - ; - -drop_constraint - : DROP CONSTRAINT constraint_name - ; - -enable_constraint - : ENABLE CONSTRAINT constraint_name - ; - -disable_constraint - : DISABLE CONSTRAINT constraint_name - ; - -foreign_key_clause - : FOREIGN KEY paren_column_list references_clause on_delete_clause? - ; - -references_clause - : REFERENCES tableview_name paren_column_list - ; - -on_delete_clause - : ON DELETE (CASCADE | SET NULL_) - ; - -unique_key_clause - : UNIQUE paren_column_list using_index_clause? - ; - -primary_key_clause - : PRIMARY KEY paren_column_list using_index_clause? - ; - -// Anonymous PL/SQL code block - -anonymous_block - : (DECLARE seq_of_declare_specs)? BEGIN seq_of_statements (EXCEPTION exception_handler+)? END SEMICOLON - ; - -// Common DDL Clauses - -invoker_rights_clause - : AUTHID (CURRENT_USER | DEFINER) - ; - -call_spec - : LANGUAGE (java_spec | c_spec) - ; - -// Call Spec Specific Clauses - -java_spec - : JAVA NAME CHAR_STRING - ; - -c_spec - : C_LETTER (NAME CHAR_STRING)? LIBRARY identifier c_agent_in_clause? (WITH CONTEXT)? c_parameters_clause? - ; - -c_agent_in_clause - : AGENT IN '(' expressions_ ')' - ; - -c_parameters_clause - : PARAMETERS '(' (expressions_ | '.' '.' '.') ')' - ; - -parameter - : parameter_name (IN | OUT | INOUT | NOCOPY)* type_spec? default_value_part? - ; - -default_value_part - : (ASSIGN_OP | DEFAULT) expression - ; - -// Elements Declarations - -seq_of_declare_specs - : declare_spec+ - ; - -declare_spec - : pragma_declaration - | variable_declaration - | subtype_declaration - | cursor_declaration - | exception_declaration - | type_declaration - | procedure_spec - | function_spec - | procedure_body - | function_body - ; - -// incorporates constant_declaration -variable_declaration - : identifier CONSTANT? type_spec (NOT NULL_)? default_value_part? ';' - ; - -subtype_declaration - : SUBTYPE identifier IS type_spec (RANGE expression '..' expression)? (NOT NULL_)? ';' - ; - -// cursor_declaration incorportates curscursor_body and cursor_spec - -cursor_declaration - : CURSOR identifier ('(' parameter_spec (',' parameter_spec)* ')')? (RETURN type_spec)? ( - IS select_statement - )? ';' - ; - -parameter_spec - : parameter_name (IN? type_spec)? default_value_part? - ; - -exception_declaration - : identifier EXCEPTION ';' - ; - -pragma_declaration - : PRAGMA ( - SERIALLY_REUSABLE - | AUTONOMOUS_TRANSACTION - | EXCEPTION_INIT '(' exception_name ',' numeric_negative ')' - | INLINE '(' id1 = identifier ',' expression ')' - | RESTRICT_REFERENCES '(' (identifier | DEFAULT) (',' identifier)+ ')' - ) ';' - ; - -// Record Declaration Specific Clauses - -// incorporates ref_cursor_type_definition - -record_type_def - : RECORD '(' field_spec (',' field_spec)* ')' - ; - -field_spec - : column_name type_spec? (NOT NULL_)? default_value_part? - ; - -ref_cursor_type_def - : REF CURSOR (RETURN type_spec)? - ; - -type_declaration - : TYPE identifier IS (table_type_def | varray_type_def | record_type_def | ref_cursor_type_def) ';' - ; - -table_type_def - : TABLE OF type_spec table_indexed_by_part? (NOT NULL_)? - ; - -table_indexed_by_part - : (idx1 = INDEXED | idx2 = INDEX) BY type_spec - ; - -varray_type_def - : (VARRAY | VARYING ARRAY) '(' expression ')' OF type_spec (NOT NULL_)? - ; - -// Statements - -seq_of_statements - : (statement (';' | EOF) | label_declaration)+ - ; - -label_declaration - : ltp1 = '<' '<' label_name '>' '>' - ; - -statement - : body - | block - | assignment_statement - | continue_statement - | exit_statement - | goto_statement - | if_statement - | loop_statement - | forall_statement - | null_statement - | raise_statement - | return_statement - | case_statement - | sql_statement - | function_call - | pipe_row_statement - | procedure_call - ; - -swallow_to_semi - : ~';'+ - ; - -assignment_statement - : (general_element | bind_variable) ASSIGN_OP expression - ; - -continue_statement - : CONTINUE label_name? (WHEN condition)? - ; - -exit_statement - : EXIT label_name? (WHEN condition)? - ; - -goto_statement - : GOTO label_name - ; - -if_statement - : IF condition THEN seq_of_statements elsif_part* else_part? END IF - ; - -elsif_part - : ELSIF condition THEN seq_of_statements - ; - -else_part - : ELSE seq_of_statements - ; - -loop_statement - : label_declaration? (WHILE condition | FOR cursor_loop_param)? LOOP seq_of_statements END LOOP label_name? - ; - -// Loop Specific Clause - -cursor_loop_param - : index_name IN REVERSE? lower_bound range_separator = '..' upper_bound - | record_name IN (cursor_name ('(' expressions_? ')')? | '(' select_statement ')') - ; - -forall_statement - : FORALL index_name IN bounds_clause sql_statement (SAVE EXCEPTIONS)? - ; - -bounds_clause - : lower_bound '..' upper_bound - | INDICES OF collection_name between_bound? - | VALUES OF index_name - ; - -between_bound - : BETWEEN lower_bound AND upper_bound - ; - -lower_bound - : concatenation - ; - -upper_bound - : concatenation - ; - -null_statement - : NULL_ - ; - -raise_statement - : RAISE exception_name? - ; - -return_statement - : RETURN expression? - ; - -function_call - : CALL? routine_name function_argument? - ; - -procedure_call - : routine_name function_argument? - ; - -pipe_row_statement - : PIPE ROW '(' expression ')' - ; - -body - : BEGIN seq_of_statements (EXCEPTION exception_handler+)? END label_name? - ; - -// Body Specific Clause - -exception_handler - : WHEN exception_name (OR exception_name)* THEN seq_of_statements - ; - -trigger_block - : (DECLARE declare_spec*)? body - ; - -block - : DECLARE? declare_spec+ body - ; - -// SQL Statements - -sql_statement - : execute_immediate - | data_manipulation_language_statements - | cursor_manipulation_statements - | transaction_control_statements - ; - -execute_immediate - : EXECUTE IMMEDIATE expression ( - into_clause using_clause? - | using_clause dynamic_returning_clause? - | dynamic_returning_clause - )? - ; - -// Execute Immediate Specific Clause - -dynamic_returning_clause - : (RETURNING | RETURN) into_clause - ; - -// DML Statements - -data_manipulation_language_statements - : merge_statement - | lock_table_statement - | select_statement - | update_statement - | delete_statement - | insert_statement - | explain_statement - ; - -// Cursor Manipulation Statements - -cursor_manipulation_statements - : close_statement - | open_statement - | fetch_statement - | open_for_statement - ; - -close_statement - : CLOSE cursor_name - ; - -open_statement - : OPEN cursor_name ('(' expressions_? ')')? - ; - -fetch_statement - : FETCH cursor_name ( - it1 = INTO variable_name (',' variable_name)* - | BULK COLLECT INTO variable_name (',' variable_name)* (LIMIT (numeric | variable_name))? - ) - ; - -open_for_statement - : OPEN variable_name FOR (select_statement | expression) using_clause? - ; - -// Transaction Control SQL Statements - -transaction_control_statements - : set_transaction_command - | set_constraint_command - | commit_statement - | rollback_statement - | savepoint_statement - ; - -set_transaction_command - : SET TRANSACTION ( - READ (ONLY | WRITE) - | ISOLATION LEVEL (SERIALIZABLE | READ COMMITTED) - | USE ROLLBACK SEGMENT rollback_segment_name - )? (NAME quoted_string)? - ; - -set_constraint_command - : SET (CONSTRAINT | CONSTRAINTS) (ALL | constraint_name (',' constraint_name)*) ( - IMMEDIATE - | DEFERRED - ) - ; - -commit_statement - : COMMIT WORK? ( - COMMENT expression - | FORCE (CORRUPT_XID expression | CORRUPT_XID_ALL | expression (',' expression)?) - )? write_clause? - ; - -write_clause - : WRITE (WAIT | NOWAIT)? (IMMEDIATE | BATCH)? - ; - -rollback_statement - : ROLLBACK WORK? (TO SAVEPOINT? savepoint_name | FORCE quoted_string)? - ; - -savepoint_statement - : SAVEPOINT savepoint_name - ; - -// Dml - -/* TODO -//SHOULD BE OVERRIDEN! -compilation_unit - : seq_of_statements* EOF - ; - -//SHOULD BE OVERRIDEN! -seq_of_statements - : select_statement - | update_statement - | delete_statement - | insert_statement - | lock_table_statement - | merge_statement - | explain_statement -// | case_statement[true] - ; -*/ - -explain_statement - : EXPLAIN PLAN (SET STATEMENT_ID '=' quoted_string)? (INTO tableview_name)? FOR ( - select_statement - | update_statement - | delete_statement - | insert_statement - | merge_statement - ) - ; - -select_only_statement - : subquery_factoring_clause? subquery - ; - -select_statement - : select_only_statement (for_update_clause | order_by_clause | offset_clause | fetch_clause)* - ; - -// Select Specific Clauses - -subquery_factoring_clause - : WITH factoring_element (',' factoring_element)* - ; - -factoring_element - : query_name paren_column_list? AS '(' subquery order_by_clause? ')' search_clause? cycle_clause? - ; - -search_clause - : SEARCH (DEPTH | BREADTH) FIRST BY column_name ASC? DESC? (NULLS FIRST)? (NULLS LAST)? ( - ',' column_name ASC? DESC? (NULLS FIRST)? (NULLS LAST)? - )* SET column_name - ; - -cycle_clause - : CYCLE column_list SET column_name TO expression DEFAULT expression - ; - -subquery - : subquery_basic_elements subquery_operation_part* - ; - -subquery_basic_elements - : query_block - | '(' subquery ')' - ; - -subquery_operation_part - : (UNION ALL? | INTERSECT | MINUS) subquery_basic_elements - ; - -query_block - : SELECT (DISTINCT | UNIQUE | ALL)? selected_list into_clause? from_clause where_clause? hierarchical_query_clause? group_by_clause? model_clause? - order_by_clause? fetch_clause? - ; - -selected_list - : '*' - | select_list_elements (',' select_list_elements)* - ; - -from_clause - : FROM table_ref_list - ; - -select_list_elements - : tableview_name '.' ASTERISK - | expression column_alias? - ; - -table_ref_list - : table_ref (',' table_ref)* - ; - -// NOTE to PIVOT clause -// according the SQL reference this should not be possible -// according to he reality it is. Here we probably apply pivot/unpivot onto whole join clause -// eventhough it is not enclosed in parenthesis. See pivot examples 09,10,11 - -table_ref - : table_ref_aux join_clause* (pivot_clause | unpivot_clause)? - ; - -table_ref_aux - : table_ref_aux_internal flashback_query_clause* (/*{isTableAlias()}?*/ table_alias)? - ; - -table_ref_aux_internal - : dml_table_expression_clause (pivot_clause | unpivot_clause)? # table_ref_aux_internal_one - | '(' table_ref subquery_operation_part* ')' (pivot_clause | unpivot_clause)? # table_ref_aux_internal_two - | ONLY '(' dml_table_expression_clause ')' # table_ref_aux_internal_three - ; - -join_clause - : query_partition_clause? (CROSS | NATURAL)? (INNER | outer_join_type)? JOIN table_ref_aux query_partition_clause? ( - join_on_part - | join_using_part - )* - ; - -join_on_part - : ON condition - ; - -join_using_part - : USING paren_column_list - ; - -outer_join_type - : (FULL | LEFT | RIGHT) OUTER? - ; - -query_partition_clause - : PARTITION BY (('(' (subquery | expressions_)? ')') | expressions_) - ; - -flashback_query_clause - : VERSIONS BETWEEN (SCN | TIMESTAMP) expression - | AS OF (SCN | TIMESTAMP | SNAPSHOT) expression - ; - -pivot_clause - : PIVOT XML? '(' pivot_element (',' pivot_element)* pivot_for_clause pivot_in_clause ')' - ; - -pivot_element - : aggregate_function_name '(' expression ')' column_alias? - ; - -pivot_for_clause - : FOR (column_name | paren_column_list) - ; - -pivot_in_clause - : IN '(' (subquery | ANY (',' ANY)* | pivot_in_clause_element (',' pivot_in_clause_element)*) ')' - ; - -pivot_in_clause_element - : pivot_in_clause_elements column_alias? - ; - -pivot_in_clause_elements - : expression - | '(' expressions_? ')' - ; - -unpivot_clause - : UNPIVOT ((INCLUDE | EXCLUDE) NULLS)? '(' (column_name | paren_column_list) pivot_for_clause unpivot_in_clause ')' - ; - -unpivot_in_clause - : IN '(' unpivot_in_elements (',' unpivot_in_elements)* ')' - ; - -unpivot_in_elements - : (column_name | paren_column_list) (AS (constant | '(' constant (',' constant)* ')'))? - ; - -hierarchical_query_clause - : CONNECT BY NOCYCLE? condition start_part? - | start_part CONNECT BY NOCYCLE? condition - ; - -start_part - : START WITH condition - ; - -group_by_clause - : GROUP BY group_by_elements (',' group_by_elements)* having_clause? - | having_clause (GROUP BY group_by_elements (',' group_by_elements)*)? - ; - -group_by_elements - : grouping_sets_clause - | rollup_cube_clause - | expression - ; - -rollup_cube_clause - : (ROLLUP | CUBE) '(' grouping_sets_elements (',' grouping_sets_elements)* ')' - ; - -grouping_sets_clause - : GROUPING SETS '(' grouping_sets_elements (',' grouping_sets_elements)* ')' - ; - -grouping_sets_elements - : rollup_cube_clause - | '(' expressions_? ')' - | expression - ; - -having_clause - : HAVING condition - ; - -model_clause - : MODEL cell_reference_options* return_rows_clause? reference_model* main_model - ; - -cell_reference_options - : (IGNORE | KEEP) NAV - | UNIQUE (DIMENSION | SINGLE REFERENCE) - ; - -return_rows_clause - : RETURN (UPDATED | ALL) ROWS - ; - -reference_model - : REFERENCE reference_model_name ON '(' subquery ')' model_column_clauses cell_reference_options* - ; - -main_model - : (MAIN main_model_name)? model_column_clauses cell_reference_options* model_rules_clause - ; - -model_column_clauses - : model_column_partition_part? DIMENSION BY model_column_list MEASURES model_column_list - ; - -model_column_partition_part - : PARTITION BY model_column_list - ; - -model_column_list - : '(' model_column (',' model_column)* ')' - ; - -model_column - : (expression | query_block) column_alias? - ; - -model_rules_clause - : model_rules_part? '(' (model_rules_element (',' model_rules_element)*)? ')' - ; - -model_rules_part - : RULES (UPDATE | UPSERT ALL?)? ((AUTOMATIC | SEQUENTIAL) ORDER)? model_iterate_clause? - ; - -model_rules_element - : (UPDATE | UPSERT ALL?)? cell_assignment order_by_clause? '=' expression - ; - -cell_assignment - : model_expression - ; - -model_iterate_clause - : ITERATE '(' expression ')' until_part? - ; - -until_part - : UNTIL '(' condition ')' - ; - -order_by_clause - : ORDER SIBLINGS? BY order_by_elements (',' order_by_elements)* - ; - -order_by_elements - : expression (ASC | DESC)? (NULLS (FIRST | LAST))? - ; - -offset_clause - : OFFSET expression (ROW | ROWS) - ; - -fetch_clause - : FETCH (FIRST | NEXT) (expression PERCENT_KEYWORD?)? (ROW | ROWS) (ONLY | WITH TIES) - ; - -for_update_clause - : FOR UPDATE for_update_of_part? for_update_options? - ; - -for_update_of_part - : OF column_list - ; - -for_update_options - : SKIP_ LOCKED - | NOWAIT - | WAIT expression - ; - -update_statement - : UPDATE general_table_ref update_set_clause where_clause? static_returning_clause? error_logging_clause? - ; - -// Update Specific Clauses - -update_set_clause - : SET ( - column_based_update_set_clause (',' column_based_update_set_clause)* - | VALUE '(' identifier ')' '=' expression - ) - ; - -column_based_update_set_clause - : column_name '=' expression - | paren_column_list '=' subquery - ; - -delete_statement - : DELETE FROM? general_table_ref where_clause? static_returning_clause? error_logging_clause? - ; - -insert_statement - : INSERT (single_table_insert | multi_table_insert) - ; - -// Insert Specific Clauses - -single_table_insert - : insert_into_clause (values_clause static_returning_clause? | select_statement) error_logging_clause? - ; - -multi_table_insert - : (ALL multi_table_element+ | conditional_insert_clause) select_statement - ; - -multi_table_element - : insert_into_clause values_clause? error_logging_clause? - ; - -conditional_insert_clause - : (ALL | FIRST)? conditional_insert_when_part+ conditional_insert_else_part? - ; - -conditional_insert_when_part - : WHEN condition THEN multi_table_element+ - ; - -conditional_insert_else_part - : ELSE multi_table_element+ - ; - -insert_into_clause - : INTO general_table_ref paren_column_list? - ; - -values_clause - : VALUES (REGULAR_ID | '(' expressions_ ')') - ; - -merge_statement - : MERGE INTO tableview_name table_alias? USING selected_tableview ON '(' condition ')' ( - merge_update_clause merge_insert_clause? - | merge_insert_clause merge_update_clause? - )? error_logging_clause? - ; - -// Merge Specific Clauses - -merge_update_clause - : WHEN MATCHED THEN UPDATE SET merge_element (',' merge_element)* where_clause? merge_update_delete_part? - ; - -merge_element - : column_name '=' expression - ; - -merge_update_delete_part - : DELETE where_clause - ; - -merge_insert_clause - : WHEN NOT MATCHED THEN INSERT paren_column_list? values_clause where_clause? - ; - -selected_tableview - : (tableview_name | '(' select_statement ')') table_alias? - ; - -lock_table_statement - : LOCK TABLE lock_table_element (',' lock_table_element)* IN lock_mode MODE wait_nowait_part? - ; - -wait_nowait_part - : WAIT expression - | NOWAIT - ; - -// Lock Specific Clauses - -lock_table_element - : tableview_name partition_extension_clause? - ; - -lock_mode - : ROW SHARE - | ROW EXCLUSIVE - | SHARE UPDATE? - | SHARE ROW EXCLUSIVE - | EXCLUSIVE - ; - -// Common DDL Clauses - -general_table_ref - : (dml_table_expression_clause | ONLY '(' dml_table_expression_clause ')') table_alias? - ; - -static_returning_clause - : (RETURNING | RETURN) expressions_ into_clause - ; - -error_logging_clause - : LOG ERRORS error_logging_into_part? expression? error_logging_reject_part? - ; - -error_logging_into_part - : INTO tableview_name - ; - -error_logging_reject_part - : REJECT LIMIT (UNLIMITED | expression) - ; - -dml_table_expression_clause - : table_collection_expression - | '(' select_statement subquery_restriction_clause? ')' - | tableview_name sample_clause? - ; - -table_collection_expression - : (TABLE | THE) ('(' subquery ')' | '(' expression ')' outer_join_sign?) - ; - -subquery_restriction_clause - : WITH (READ ONLY | CHECK OPTION (CONSTRAINT constraint_name)?) - ; - -sample_clause - : SAMPLE BLOCK? '(' expression (',' expression)? ')' seed_part? - ; - -seed_part - : SEED '(' expression ')' - ; - -// Expression & Condition - -condition - : expression - ; - -expressions_ - : expression (',' expression)* - ; - -expression - : cursor_expression - | logical_expression - ; - -cursor_expression - : CURSOR '(' subquery ')' - ; - -logical_expression - : unary_logical_expression - | logical_expression AND logical_expression - | logical_expression OR logical_expression - ; - -unary_logical_expression - : NOT? multiset_expression (IS NOT? logical_operation)* - ; - -logical_operation - : ( - NULL_ - | NAN - | PRESENT - | INFINITE - | A_LETTER SET - | EMPTY - | OF TYPE? '(' ONLY? type_spec (',' type_spec)* ')' - ) - ; - -multiset_expression - : relational_expression (multiset_type = (MEMBER | SUBMULTISET) OF? concatenation)? - ; - -relational_expression - : relational_expression relational_operator relational_expression - | compound_expression - ; - -compound_expression - : concatenation ( - NOT? ( - IN in_elements - | BETWEEN between_elements - | like_type = (LIKE | LIKEC | LIKE2 | LIKE4) concatenation (ESCAPE concatenation)? - ) - )? - ; - -relational_operator - : '=' - | (NOT_EQUAL_OP | '<' '>' | '!' '=' | '^' '=') - | ('<' | '>') '='? - ; - -in_elements - : '(' subquery ')' - | '(' concatenation (',' concatenation)* ')' - | constant - | bind_variable - | general_element - ; - -between_elements - : concatenation AND concatenation - ; - -concatenation - : model_expression (AT (LOCAL | TIME ZONE concatenation) | interval_expression)? ( - ON OVERFLOW (TRUNCATE | ERROR) - )? - | concatenation op = (ASTERISK | SOLIDUS) concatenation - | concatenation op = (PLUS_SIGN | MINUS_SIGN) concatenation - | concatenation BAR BAR concatenation - ; - -interval_expression - : DAY ('(' concatenation ')')? TO SECOND ('(' concatenation ')')? - | YEAR ('(' concatenation ')')? TO MONTH - ; - -model_expression - : unary_expression ('[' model_expression_element ']')? - ; - -model_expression_element - : (ANY | expression) (',' (ANY | expression))* - | single_column_for_loop (',' single_column_for_loop)* - | multi_column_for_loop - ; - -single_column_for_loop - : FOR column_name ( - IN '(' expressions_? ')' - | (LIKE expression)? FROM fromExpr = expression TO toExpr = expression action_type = ( - INCREMENT - | DECREMENT - ) action_expr = expression - ) - ; - -multi_column_for_loop - : FOR paren_column_list IN '(' (subquery | '(' expressions_? ')') ')' - ; - -unary_expression - : ('-' | '+') unary_expression - | PRIOR unary_expression - | CONNECT_BY_ROOT unary_expression - | /*TODO {input.LT(1).getText().equalsIgnoreCase("new") && !input.LT(2).getText().equals(".")}?*/ NEW unary_expression - | DISTINCT unary_expression - | ALL unary_expression - | /*TODO{(input.LA(1) == CASE || input.LA(2) == CASE)}?*/ case_statement /*[false]*/ - | quantified_expression - | standard_function - | atom - ; - -case_statement /*TODO [boolean isStatementParameter] -TODO scope { - boolean isStatement; -} -@init {$case_statement::isStatement = $isStatementParameter;}*/ - : searched_case_statement - | simple_case_statement - ; - -// CASE - -simple_case_statement - : label_name? ck1 = CASE expression simple_case_when_part+ case_else_part? END CASE? label_name? - ; - -simple_case_when_part - : WHEN expression THEN (/*TODO{$case_statement::isStatement}?*/ seq_of_statements | expression) - ; - -searched_case_statement - : label_name? ck1 = CASE searched_case_when_part+ case_else_part? END CASE? label_name? - ; - -searched_case_when_part - : WHEN expression THEN (/*TODO{$case_statement::isStatement}?*/ seq_of_statements | expression) - ; - -case_else_part - : ELSE (/*{$case_statement::isStatement}?*/ seq_of_statements | expression) - ; - -atom - : table_element outer_join_sign - | bind_variable - | constant - | general_element - | '(' subquery ')' subquery_operation_part* - | '(' expressions_ ')' - ; - -quantified_expression - : (SOME | EXISTS | ALL | ANY) ('(' select_only_statement ')' | '(' expression ')') - ; - -string_function - : SUBSTR '(' expression ',' expression (',' expression)? ')' - | TO_CHAR '(' (table_element | standard_function | expression) (',' quoted_string)? ( - ',' quoted_string - )? ')' - | DECODE '(' expressions_ ')' - | CHR '(' concatenation USING NCHAR_CS ')' - | NVL '(' expression ',' expression ')' - | TRIM '(' ((LEADING | TRAILING | BOTH)? quoted_string? FROM)? concatenation ')' - | TO_DATE '(' (table_element | standard_function | expression) (',' quoted_string)? ')' - ; - -standard_function - : string_function - | numeric_function_wrapper - | other_function - ; - -literal - : CHAR_STRING - | string_function - | numeric - | MAXVALUE - ; - -numeric_function_wrapper - : numeric_function (single_column_for_loop | multi_column_for_loop)? - ; - -numeric_function - : SUM '(' (DISTINCT | ALL)? expression ')' - | COUNT '(' (ASTERISK | ((DISTINCT | UNIQUE | ALL)? concatenation)?) ')' over_clause? - | ROUND '(' expression (',' UNSIGNED_INTEGER)? ')' - | AVG '(' (DISTINCT | ALL)? expression ')' - | MAX '(' (DISTINCT | ALL)? expression ')' - | LEAST '(' expressions_ ')' - | GREATEST '(' expressions_ ')' - ; - -other_function - : over_clause_keyword function_argument_analytic over_clause? - | /*TODO stantard_function_enabling_using*/ regular_id function_argument_modeling using_clause? - | COUNT '(' (ASTERISK | (DISTINCT | UNIQUE | ALL)? concatenation) ')' over_clause? - | (CAST | XMLCAST) '(' (MULTISET '(' subquery ')' | concatenation) AS type_spec ')' - | COALESCE '(' table_element (',' (numeric | quoted_string))? ')' - | COLLECT '(' (DISTINCT | UNIQUE)? concatenation collect_order_by_part? ')' - | within_or_over_clause_keyword function_argument within_or_over_part+ - | cursor_name (PERCENT_ISOPEN | PERCENT_FOUND | PERCENT_NOTFOUND | PERCENT_ROWCOUNT) - | DECOMPOSE '(' concatenation (CANONICAL | COMPATIBILITY)? ')' - | EXTRACT '(' regular_id FROM concatenation ')' - | (FIRST_VALUE | LAST_VALUE) function_argument_analytic respect_or_ignore_nulls? over_clause - | standard_prediction_function_keyword '(' expressions_ cost_matrix_clause? using_clause? ')' - | TRANSLATE '(' expression (USING (CHAR_CS | NCHAR_CS))? (',' expression)* ')' - | TREAT '(' expression AS REF? type_spec ')' - | TRIM '(' ((LEADING | TRAILING | BOTH)? quoted_string? FROM)? concatenation ')' - | XMLAGG '(' expression order_by_clause? ')' ('.' general_element_part)? - | (XMLCOLATTVAL | XMLFOREST) '(' xml_multiuse_expression_element ( - ',' xml_multiuse_expression_element - )* ')' ('.' general_element_part)? - | XMLELEMENT '(' (ENTITYESCAPING | NOENTITYESCAPING)? (NAME | EVALNAME)? expression ( - /*TODO{input.LT(2).getText().equalsIgnoreCase("xmlattributes")}?*/ ',' xml_attributes_clause - )? (',' expression column_alias?)* ')' ('.' general_element_part)? - | XMLEXISTS '(' expression xml_passing_clause? ')' - | XMLPARSE '(' (DOCUMENT | CONTENT) concatenation WELLFORMED? ')' ('.' general_element_part)? - | XMLPI '(' (NAME identifier | EVALNAME concatenation) (',' concatenation)? ')' ( - '.' general_element_part - )? - | XMLQUERY '(' concatenation xml_passing_clause? RETURNING CONTENT (NULL_ ON EMPTY)? ')' ( - '.' general_element_part - )? - | XMLROOT '(' concatenation (',' xmlroot_param_version_part)? ( - ',' xmlroot_param_standalone_part - )? ')' ('.' general_element_part)? - | XMLSERIALIZE '(' (DOCUMENT | CONTENT) concatenation (AS type_spec)? xmlserialize_param_enconding_part? xmlserialize_param_version_part? - xmlserialize_param_ident_part? ((HIDE | SHOW) DEFAULTS)? ')' ('.' general_element_part)? - | xmltable - ; - -over_clause_keyword - : AVG - | CORR - | LAG - | LEAD - | MAX - | MEDIAN - | MIN - | NTILE - | RATIO_TO_REPORT - | ROW_NUMBER - | SUM - | VARIANCE - | REGR_ - | STDDEV - | VAR_ - | COVAR_ - ; - -within_or_over_clause_keyword - : CUME_DIST - | DENSE_RANK - | LISTAGG - | PERCENT_RANK - | PERCENTILE_CONT - | PERCENTILE_DISC - | RANK - ; - -standard_prediction_function_keyword - : PREDICTION - | PREDICTION_BOUNDS - | PREDICTION_COST - | PREDICTION_DETAILS - | PREDICTION_PROBABILITY - | PREDICTION_SET - ; - -over_clause - : OVER '(' query_partition_clause? (order_by_clause windowing_clause?)? ')' - ; - -windowing_clause - : windowing_type (BETWEEN windowing_elements AND windowing_elements | windowing_elements) - ; - -windowing_type - : ROWS - | RANGE - ; - -windowing_elements - : UNBOUNDED PRECEDING - | CURRENT ROW - | concatenation (PRECEDING | FOLLOWING) - ; - -using_clause - : USING (ASTERISK | using_element (',' using_element)*) - ; - -using_element - : (IN OUT? | OUT)? select_list_elements - ; - -collect_order_by_part - : ORDER BY concatenation - ; - -within_or_over_part - : WITHIN GROUP '(' order_by_clause ')' - | over_clause - ; - -cost_matrix_clause - : COST ( - MODEL AUTO? - | '(' cost_class_name (',' cost_class_name)* ')' VALUES '(' expressions_? ')' - ) - ; - -xml_passing_clause - : PASSING (BY VALUE)? expression column_alias? (',' expression column_alias?)* - ; - -xml_attributes_clause - : XMLATTRIBUTES '(' (ENTITYESCAPING | NOENTITYESCAPING)? (SCHEMACHECK | NOSCHEMACHECK)? xml_multiuse_expression_element ( - ',' xml_multiuse_expression_element - )* ')' - ; - -xml_namespaces_clause - : XMLNAMESPACES '(' (concatenation column_alias)? (',' concatenation column_alias)* xml_general_default_part? ')' - ; - -xml_table_column - : xml_column_name (FOR ORDINALITY | type_spec (PATH concatenation)? xml_general_default_part?) - ; - -xml_general_default_part - : DEFAULT concatenation - ; - -xml_multiuse_expression_element - : expression (AS (id_expression | EVALNAME concatenation))? - ; - -xmlroot_param_version_part - : VERSION (NO VALUE | expression) - ; - -xmlroot_param_standalone_part - : STANDALONE (YES | NO VALUE?) - ; - -xmlserialize_param_enconding_part - : ENCODING concatenation - ; - -xmlserialize_param_version_part - : VERSION concatenation - ; - -xmlserialize_param_ident_part - : NO INDENT - | INDENT (SIZE '=' concatenation)? - ; - -// SqlPlus - -sql_plus_command - : '/' - | EXIT - | PROMPT_MESSAGE - | SHOW (ERR | ERRORS) - | START_CMD - | whenever_command - | set_command - ; - -whenever_command - : WHENEVER (SQLERROR | OSERROR) ( - EXIT (SUCCESS | FAILURE | WARNING | variable_name) (COMMIT | ROLLBACK) - | CONTINUE (COMMIT | ROLLBACK | NONE) - ) - ; - -set_command - : SET regular_id (CHAR_STRING | ON | OFF | /*EXACT_NUM_LIT*/ numeric | regular_id) - ; - -// Common - -partition_extension_clause - : (SUBPARTITION | PARTITION) FOR? '(' expressions_? ')' - ; - -column_alias - : AS? (identifier | quoted_string) - | AS - ; - -table_alias - : identifier - | quoted_string - ; - -where_clause - : WHERE (CURRENT OF cursor_name | expression) - ; - -into_clause - : (BULK COLLECT)? INTO variable_name (',' variable_name)* - ; - -// Common Named Elements - -xml_column_name - : identifier - | quoted_string - ; - -cost_class_name - : identifier - ; - -attribute_name - : identifier - ; - -savepoint_name - : identifier - ; - -rollback_segment_name - : identifier - ; - -table_var_name - : identifier - ; - -schema_name - : identifier - ; - -routine_name - : identifier ('.' id_expression)* ('@' link_name)? - ; - -package_name - : identifier - ; - -implementation_type_name - : identifier ('.' id_expression)? - ; - -parameter_name - : identifier - ; - -reference_model_name - : identifier - ; - -main_model_name - : identifier - ; - -container_tableview_name - : identifier ('.' id_expression)? - ; - -aggregate_function_name - : identifier ('.' id_expression)* - ; - -query_name - : identifier - ; - -grantee_name - : id_expression identified_by? - ; - -role_name - : id_expression - | CONNECT - ; - -constraint_name - : identifier ('.' id_expression)* ('@' link_name)? - ; - -label_name - : id_expression - ; - -type_name - : id_expression ('.' id_expression)* - ; - -sequence_name - : id_expression ('.' id_expression)* - ; - -exception_name - : identifier ('.' id_expression)* - ; - -function_name - : identifier ('.' id_expression)? - ; - -procedure_name - : identifier ('.' id_expression)? - ; - -trigger_name - : identifier ('.' id_expression)? - ; - -variable_name - : (INTRODUCER char_set_name)? id_expression ('.' id_expression)? - | bind_variable - ; - -index_name - : identifier ('.' id_expression)? - ; - -cursor_name - : general_element - | bind_variable - ; - -record_name - : identifier - | bind_variable - ; - -collection_name - : identifier ('.' id_expression)? - ; - -link_name - : identifier - ; - -column_name - : identifier ('.' id_expression)* - ; - -tableview_name - : identifier ('.' id_expression)? ( - AT_SIGN link_name (PERIOD link_name)? - | /*TODO{!(input.LA(2) == BY)}?*/ partition_extension_clause - )? - | xmltable outer_join_sign? - ; - -xmltable - : XMLTABLE '(' (xml_namespaces_clause ',')? concatenation xml_passing_clause? ( - COLUMNS xml_table_column (',' xml_table_column)* - )? ')' ('.' general_element_part)? - ; - -char_set_name - : id_expression ('.' id_expression)* - ; - -synonym_name - : identifier - ; - -// Represents a valid DB object name in DDL commands which are valid for several DB (or schema) objects. -// For instance, create synonym ... for , or rename to . -// Both are valid for sequences, tables, views, etc. -schema_object_name - : id_expression - ; - -dir_object_name - : id_expression - ; - -user_object_name - : id_expression - ; - -grant_object_name - : tableview_name - | USER user_object_name (',' user_object_name)* - | DIRECTORY dir_object_name - | EDITION schema_object_name - | MINING MODEL schema_object_name - | JAVA (SOURCE | RESOURCE) schema_object_name - | SQL TRANSLATION PROFILE schema_object_name - ; - -column_list - : column_name (',' column_name)* - ; - -paren_column_list - : LEFT_PAREN column_list RIGHT_PAREN - ; - -// PL/SQL Specs - -// NOTE: In reality this applies to aggregate functions only -keep_clause - : KEEP '(' DENSE_RANK (FIRST | LAST) order_by_clause ')' over_clause? - ; - -function_argument - : '(' (argument (',' argument)*)? ')' keep_clause? - ; - -function_argument_analytic - : '(' (argument respect_or_ignore_nulls? (',' argument respect_or_ignore_nulls?)*)? ')' keep_clause? - ; - -function_argument_modeling - : '(' column_name (',' (numeric | NULL_) (',' (numeric | NULL_))?)? USING ( - tableview_name '.' ASTERISK - | ASTERISK - | expression column_alias? (',' expression column_alias?)* - ) ')' keep_clause? - ; - -respect_or_ignore_nulls - : (RESPECT | IGNORE) NULLS - ; - -argument - : (identifier '=' '>')? expression - ; - -type_spec - : datatype - | REF? type_name (PERCENT_ROWTYPE | PERCENT_TYPE)? - ; - -datatype - : native_datatype_element precision_part? (WITH LOCAL? TIME ZONE | CHARACTER SET char_set_name)? - | INTERVAL (YEAR | DAY) ('(' expression ')')? TO (MONTH | SECOND) ('(' expression ')')? - ; - -precision_part - : '(' (numeric | ASTERISK) (',' (numeric | numeric_negative))? (CHAR | BYTE)? ')' - ; - -native_datatype_element - : BINARY_INTEGER - | PLS_INTEGER - | NATURAL - | BINARY_FLOAT - | BINARY_DOUBLE - | NATURALN - | POSITIVE - | POSITIVEN - | SIGNTYPE - | SIMPLE_INTEGER - | NVARCHAR2 - | DEC - | INTEGER - | INT - | NUMERIC - | SMALLINT - | NUMBER - | DECIMAL - | DOUBLE PRECISION? - | FLOAT - | REAL - | NCHAR - | LONG RAW? - | CHAR - | CHARACTER - | VARCHAR2 - | VARCHAR - | STRING - | RAW - | BOOLEAN - | DATE - | ROWID - | UROWID - | YEAR - | MONTH - | DAY - | HOUR - | MINUTE - | SECOND - | TIMEZONE_HOUR - | TIMEZONE_MINUTE - | TIMEZONE_REGION - | TIMEZONE_ABBR - | TIMESTAMP - | TIMESTAMP_UNCONSTRAINED - | TIMESTAMP_TZ_UNCONSTRAINED - | TIMESTAMP_LTZ_UNCONSTRAINED - | YMINTERVAL_UNCONSTRAINED - | DSINTERVAL_UNCONSTRAINED - | BFILE - | BLOB - | CLOB - | NCLOB - | MLSLABEL - ; - -bind_variable - : (BINDVAR | ':' UNSIGNED_INTEGER) - // Pro*C/C++ indicator variables - (INDICATOR? (BINDVAR | ':' UNSIGNED_INTEGER))? ('.' general_element_part)* - ; - -general_element - : general_element_part ('.' general_element_part)* - ; - -general_element_part - : (INTRODUCER char_set_name)? id_expression ('.' id_expression)* ('@' link_name)? function_argument? - ; - -table_element - : (INTRODUCER char_set_name)? id_expression ('.' id_expression)* - ; - -object_privilege - : ALL PRIVILEGES? - | ALTER - | DEBUG - | DELETE - | EXECUTE - | FLASHBACK ARCHIVE - | INDEX - | INHERIT PRIVILEGES - | INSERT - | KEEP SEQUENCE - | MERGE VIEW - | ON COMMIT REFRESH - | QUERY REWRITE - | READ - | REFERENCES - | SELECT - | TRANSLATE SQL - | UNDER - | UPDATE - | USE - | WRITE - ; - -//Ordered by type rather than alphabetically -system_privilege - : ALL PRIVILEGES - | ADVISOR - | ADMINISTER ANY? SQL TUNING SET - | (ALTER | CREATE | DROP) ANY SQL PROFILE - | ADMINISTER SQL MANAGEMENT OBJECT - | CREATE ANY? CLUSTER - | (ALTER | DROP) ANY CLUSTER - | (CREATE | DROP) ANY CONTEXT - | EXEMPT REDACTION POLICY - | ALTER DATABASE - | (ALTER | CREATE) PUBLIC? DATABASE LINK - | DROP PUBLIC DATABASE LINK - | DEBUG CONNECT SESSION - | DEBUG ANY PROCEDURE - | ANALYZE ANY DICTIONARY - | CREATE ANY? DIMENSION - | (ALTER | DROP) ANY DIMENSION - | (CREATE | DROP) ANY DIRECTORY - | (CREATE | DROP) ANY EDITION - | FLASHBACK (ARCHIVE ADMINISTER | ANY TABLE) - | (ALTER | CREATE | DROP) ANY INDEX - | CREATE ANY? INDEXTYPE - | (ALTER | DROP | EXECUTE) ANY INDEXTYPE - | CREATE (ANY | EXTERNAL)? JOB - | EXECUTE ANY (CLASS | PROGRAM) - | MANAGE SCHEDULER - | ADMINISTER KEY MANAGEMENT - | CREATE ANY? LIBRARY - | (ALTER | DROP | EXECUTE) ANY LIBRARY - | LOGMINING - | CREATE ANY? MATERIALIZED VIEW - | (ALTER | DROP) ANY MATERIALIZED VIEW - | GLOBAL? QUERY REWRITE - | ON COMMIT REFRESH - | CREATE ANY? MINING MODEL - | (ALTER | DROP | SELECT | COMMENT) ANY MINING MODEL - | CREATE ANY? CUBE - | (ALTER | DROP | SELECT | UPDATE) ANY CUBE - | CREATE ANY? MEASURE FOLDER - | (DELETE | DROP | INSERT) ANY MEASURE FOLDER - | CREATE ANY? CUBE DIMENSION - | (ALTER | DELETE | DROP | INSERT | SELECT | UPDATE) ANY CUBE DIMENSION - | CREATE ANY? CUBE BUILD PROCESS - | (DROP | UPDATE) ANY CUBE BUILD PROCESS - | CREATE ANY? OPERATOR - | (ALTER | DROP | EXECUTE) ANY OPERATOR - | (CREATE | ALTER | DROP) ANY OUTLINE - | CREATE PLUGGABLE DATABASE - | SET CONTAINER - | CREATE ANY? PROCEDURE - | (ALTER | DROP | EXECUTE) ANY PROCEDURE - | (CREATE | ALTER | DROP) PROFILE - | CREATE ROLE - | (ALTER | DROP | GRANT) ANY ROLE - | (CREATE | ALTER | DROP) ROLLBACK SEGMENT - | CREATE ANY? SEQUENCE - | (ALTER | DROP | SELECT) ANY SEQUENCE - | (ALTER | CREATE | RESTRICTED) SESSION - | ALTER RESOURCE COST - | CREATE ANY? SQL TRANSLATION PROFILE - | (ALTER | DROP | USE) ANY SQL TRANSLATION PROFILE - | TRANSLATE ANY SQL - | CREATE ANY? SYNONYM - | DROP ANY SYNONYM - | (CREATE | DROP) PUBLIC SYNONYM - | CREATE ANY? TABLE - | (ALTER | BACKUP | COMMENT | DELETE | DROP | INSERT | LOCK | READ | SELECT | UPDATE) ANY TABLE - | (CREATE | ALTER | DROP | MANAGE | UNLIMITED) TABLESPACE - | CREATE ANY? TRIGGER - | (ALTER | DROP) ANY TRIGGER - | ADMINISTER DATABASE TRIGGER - | CREATE ANY? TYPE - | (ALTER | DROP | EXECUTE | UNDER) ANY TYPE - | (CREATE | ALTER | DROP) USER - | CREATE ANY? VIEW - | (DROP | UNDER | MERGE) ANY VIEW - | (ANALYZE | AUDIT) ANY - | BECOME USER - | CHANGE NOTIFICATION - | EXEMPT ACCESS POLICY - | FORCE ANY? TRANSACTION - | GRANT ANY OBJECT? PRIVILEGE - | INHERIT ANY PRIVILEGES - | KEEP DATE TIME - | KEEP SYSGUID - | PURGE DBA_RECYCLEBIN - | RESUMABLE - | SELECT ANY (DICTIONARY | TRANSACTION) - | SYSBACKUP - | SYSDBA - | SYSDG - | SYSKM - | SYSOPER - ; - -// $> - -// $ -} +// Insert here @header for C++ lexer. ABORT : 'ABORT'; ABS : 'ABS'; @@ -977,7 +975,7 @@ MV_MERGE : 'MV_MERGE'; NAMED : 'NAMED'; NAME : 'NAME'; NAMESPACE : 'NAMESPACE'; -NAN : 'NAN'; +NAN_ : 'NAN'; NANVL : 'NANVL'; NATIONAL : 'NATIONAL'; NATIVE_FULL_OUTER_JOIN : 'NATIVE_FULL_OUTER_JOIN'; @@ -1281,7 +1279,7 @@ OUTLINE : 'OUTLINE'; OUT_OF_LINE : 'OUT_OF_LINE'; OUT : 'OUT'; OVERFLOW_NOMOVE : 'OVERFLOW_NOMOVE'; -OVERFLOW : 'OVERFLOW'; +OVERFLOW_ : 'OVERFLOW'; OVERLAPS : 'OVERLAPS'; OVER : 'OVER'; OVERRIDING : 'OVERRIDING'; diff --git a/sql/plsql/PlSqlParser.g4 b/sql/plsql/PlSqlParser.g4 index 668b07f593..66f3cf1e2d 100644 --- a/sql/plsql/PlSqlParser.g4 +++ b/sql/plsql/PlSqlParser.g4 @@ -28,9 +28,7 @@ options { superClass = PlSqlParserBase; } -@parser::postinclude { -#include -} +// Insert here @header for C++ parser. sql_script : sql_plus_command_no_semicolon? ( @@ -3610,7 +3608,7 @@ hash_partitions_by_quantity : PARTITIONS hash_partition_quantity (STORE IN '(' tablespace (',' tablespace)* ')')? ( table_compression | key_compression - )? (OVERFLOW STORE IN '(' tablespace (',' tablespace)* ')')? + )? (OVERFLOW_ STORE IN '(' tablespace (',' tablespace)* ')')? ; hash_partition_quantity @@ -3751,14 +3749,14 @@ list_values_clause table_partition_description : deferred_segment_creation? segment_attributes_clause? (table_compression | key_compression)? ( - OVERFLOW segment_attributes_clause? + OVERFLOW_ segment_attributes_clause? )? (lob_storage_clause | varray_col_properties | nested_table_col_properties)* ; partitioning_storage_clause : ( TABLESPACE tablespace - | OVERFLOW (TABLESPACE tablespace)? + | OVERFLOW_ (TABLESPACE tablespace)? | table_compression | key_compression | lob_partitioning_storage @@ -4877,7 +4875,7 @@ alter_mapping_table_clause alter_overflow_clause : add_overflow_clause - | OVERFLOW ( + | OVERFLOW_ ( segment_attributes_clause | allocate_extent_clause | shrink_clause @@ -4886,7 +4884,7 @@ alter_overflow_clause ; add_overflow_clause - : ADD OVERFLOW segment_attributes_clause? ( + : ADD OVERFLOW_ segment_attributes_clause? ( '(' PARTITION segment_attributes_clause? (',' PARTITION segment_attributes_clause?)* ')' )? ; @@ -4975,7 +4973,7 @@ key_compression ; index_org_overflow_clause - : (INCLUDING column_name)? OVERFLOW segment_attributes_clause? + : (INCLUDING column_name)? OVERFLOW_ segment_attributes_clause? ; column_clauses @@ -5406,7 +5404,7 @@ c_spec ; c_agent_in_clause - : AGENT IN '(' expressions ')' + : AGENT IN '(' expressions_ ')' ; c_parameters_clause @@ -5594,7 +5592,7 @@ loop_statement cursor_loop_param : index_name IN REVERSE? lower_bound range_separator = '..' upper_bound - | record_name IN (cursor_name ('(' expressions? ')')? | '(' select_statement ')') + | record_name IN (cursor_name ('(' expressions_? ')')? | '(' select_statement ')') ; //https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/FORALL-statement.html#GUID-C45B8241-F9DF-4C93-8577-C840A25963DB @@ -5734,7 +5732,7 @@ close_statement ; open_statement - : OPEN cursor_name ('(' expressions? ')')? + : OPEN cursor_name ('(' expressions_? ')')? ; fetch_statement @@ -5979,7 +5977,7 @@ outer_join_type ; query_partition_clause - : PARTITION BY (('(' (subquery | expressions)? ')') | expressions) + : PARTITION BY (('(' (subquery | expressions_)? ')') | expressions_) ; flashback_query_clause @@ -6009,7 +6007,7 @@ pivot_in_clause_element pivot_in_clause_elements : expression - | '(' expressions? ')' + | '(' expressions_? ')' ; unpivot_clause @@ -6054,7 +6052,7 @@ grouping_sets_clause grouping_sets_elements : rollup_cube_clause - | '(' expressions? ')' + | '(' expressions_? ')' | expression ; @@ -6210,7 +6208,7 @@ insert_into_clause ; values_clause - : VALUES (REGULAR_ID | '(' expressions ')' | collection_expression) + : VALUES (REGULAR_ID | '(' expressions_ ')' | collection_expression) ; merge_statement @@ -6272,7 +6270,7 @@ general_table_ref ; static_returning_clause - : (RETURNING | RETURN) expressions into_clause + : (RETURNING | RETURN) expressions_ into_clause ; error_logging_clause @@ -6315,10 +6313,10 @@ seed_part condition : expression - | JSON_EQUAL '(' expressions ')' + | JSON_EQUAL '(' expressions_ ')' ; -expressions +expressions_ : expression (',' expression)* ; @@ -6348,7 +6346,7 @@ unary_logical_operation logical_operation : ( NULL_ - | NAN + | NAN_ | PRESENT | INFINITE | A_LETTER SET @@ -6401,7 +6399,7 @@ between_elements concatenation : model_expression (AT (LOCAL | TIME ZONE concatenation) | interval_expression)? ( - ON OVERFLOW (TRUNCATE | ERROR) + ON OVERFLOW_ (TRUNCATE | ERROR) )? | concatenation op = DOUBLE_ASTERISK concatenation | concatenation op = (ASTERISK | SOLIDUS | MOD) concatenation @@ -6428,7 +6426,7 @@ model_expression_element single_column_for_loop : FOR column_name ( - IN '(' expressions? ')' + IN '(' expressions_? ')' | (LIKE expression)? FROM fromExpr = expression TO toExpr = expression action_type = ( INCREMENT | DECREMENT @@ -6437,7 +6435,7 @@ single_column_for_loop ; multi_column_for_loop - : FOR paren_column_list IN '(' (subquery | '(' expressions? ')') ')' + : FOR paren_column_list IN '(' (subquery | '(' expressions_? ')') ')' ; unary_expression @@ -6507,7 +6505,7 @@ atom | inquiry_directive | general_element outer_join_sign? | '(' subquery ')' subquery_operation_part* - | '(' expressions ')' + | '(' expressions_ ')' ; quantified_expression @@ -6522,7 +6520,7 @@ string_function | TO_CHAR '(' (table_element | standard_function | expression) (',' quoted_string)? ( ',' quoted_string )? ')' - | DECODE '(' expressions ')' + | DECODE '(' expressions_ ')' | CHR '(' concatenation USING NCHAR_CS ')' | NVL '(' expression ',' expression ')' | TRIM '(' ((LEADING | TRAILING | BOTH)? expression? FROM)? concatenation ')' @@ -6676,12 +6674,12 @@ numeric_function | ROUND '(' expression (',' UNSIGNED_INTEGER)? ')' | AVG '(' (DISTINCT | ALL)? expression ')' | MAX '(' (DISTINCT | ALL)? expression ')' - | LEAST '(' expressions ')' - | GREATEST '(' expressions ')' + | LEAST '(' expressions_ ')' + | GREATEST '(' expressions_ ')' ; listagg_overflow_clause - : ON OVERFLOW (ERROR | TRUNCATE) CHAR_STRING? ((WITH | WITHOUT) COUNT)? + : ON OVERFLOW_ (ERROR | TRUNCATE) CHAR_STRING? ((WITH | WITHOUT) COUNT)? ; other_function @@ -6702,7 +6700,7 @@ other_function | EXTRACT '(' regular_id FROM concatenation ')' | (FIRST_VALUE | LAST_VALUE) function_argument_analytic respect_or_ignore_nulls? over_clause | (LEAD | LAG) function_argument_analytic respect_or_ignore_nulls? over_clause - | standard_prediction_function_keyword '(' expressions cost_matrix_clause? using_clause? ')' + | standard_prediction_function_keyword '(' expressions_ cost_matrix_clause? using_clause? ')' | (TO_BINARY_DOUBLE | TO_BINARY_FLOAT | TO_NUMBER | TO_TIMESTAMP | TO_TIMESTAMP_TZ) '(' concatenation ( DEFAULT concatenation ON CONVERSION ERROR )? (',' quoted_string (',' quoted_string)?)? ')' @@ -6825,7 +6823,7 @@ string_delimiter cost_matrix_clause : COST ( MODEL AUTO? - | '(' cost_class_name (',' cost_class_name)* ')' VALUES '(' expressions? ')' + | '(' cost_class_name (',' cost_class_name)* ')' VALUES '(' expressions_? ')' ) ; @@ -6913,7 +6911,7 @@ timing_command // Common partition_extension_clause - : (SUBPARTITION | PARTITION) FOR? '(' expressions? ')' + : (SUBPARTITION | PARTITION) FOR? '(' expressions_? ')' ; column_alias @@ -8628,7 +8626,7 @@ non_reserved_keywords_pre12c | NAMED | NAME | NAMESPACE - | NAN + | NAN_ | NANVL | NATIONAL | NATIVE_FULL_OUTER_JOIN @@ -8868,7 +8866,7 @@ non_reserved_keywords_pre12c | OUTLINE_LEAF | OUTLINE | OUT_OF_LINE - | OVERFLOW + | OVERFLOW_ | OVERFLOW_NOMOVE | OVERLAPS | OVER diff --git a/sql/plsql/README.md b/sql/plsql/README.md index 6dc69c1b57..a3ce6e08ee 100644 --- a/sql/plsql/README.md +++ b/sql/plsql/README.md @@ -19,3 +19,11 @@ User's Guide and Reference [html](https://docs.oracle.com/en/database/oracle/ora [pldb](https://pldb.pub/concepts/pl-sql.html) +## Issues +* The grammar is ambiguous, but generally performs well. + +## Performance + +data.zip +te.sh +gr.sh diff --git a/sql/plsql/data.zip b/sql/plsql/data.zip new file mode 100644 index 0000000000..bc1cb6a67a Binary files /dev/null and b/sql/plsql/data.zip differ diff --git a/sql/plsql/desc.xml b/sql/plsql/desc.xml index 5a31bb1a8c..0bf8c091af 100644 --- a/sql/plsql/desc.xml +++ b/sql/plsql/desc.xml @@ -1,20 +1,14 @@ ^4.12.0 - CSharp;Java;JavaScript;Python3;TypeScript + Antlr4ng;Cpp;CSharp;Dart;Go;Java;JavaScript;Python3;TypeScript - full - CSharp;Java - examples + Antlr4ng;Cpp;CSharp;Dart;Go;Java;JavaScript;Python3;TypeScript + examples/**/*.sql - hw - JavaScript;Python3;TypeScript - hw-examples - - - examples-sql-script - CSharp;Java - examples-sql-script + more + Antlr4ng;Cpp;CSharp;Dart;Go;Java + examples-more/**/*.sql diff --git a/sql/plsql/examples/create_package.sql.tree b/sql/plsql/examples/create_package.sql.tree deleted file mode 100644 index 828ab475c2..0000000000 --- a/sql/plsql/examples/create_package.sql.tree +++ /dev/null @@ -1 +0,0 @@ -(sql_script (unit_statement (create_package CREATE PACKAGE (package_name (identifier (id_expression (regular_id EMP_BONUS)))) AS (package_obj_spec (variable_declaration (identifier (id_expression (regular_id LOCAL_PARAM))) (type_spec (datatype (native_datatype_element NUMBER))) ;)) (package_obj_spec (exception_declaration (identifier (id_expression (regular_id USER_EXCEPTION))) EXCEPTION ;)) (package_obj_spec (procedure_spec PROCEDURE (identifier (id_expression (regular_id CALC_BONUS))) ( (parameter (parameter_name (identifier (id_expression (regular_id DATE_HIRED)))) (type_spec (datatype (native_datatype_element DATE)))) ) ;)) END (package_name (identifier (id_expression (regular_id EMP_BONUS)))))) ; ) \ No newline at end of file diff --git a/sql/plsql/examples-sql-script/anonymous_block.sql b/sql/plsql/examples/examples-sql-script/anonymous_block.sql similarity index 100% rename from sql/plsql/examples-sql-script/anonymous_block.sql rename to sql/plsql/examples/examples-sql-script/anonymous_block.sql diff --git a/sql/plsql/examples-sql-script/cursor-attributes-with-spaces.sql b/sql/plsql/examples/examples-sql-script/cursor-attributes-with-spaces.sql similarity index 100% rename from sql/plsql/examples-sql-script/cursor-attributes-with-spaces.sql rename to sql/plsql/examples/examples-sql-script/cursor-attributes-with-spaces.sql diff --git a/sql/plsql/examples-sql-script/declare_procedure_no_args.sql b/sql/plsql/examples/examples-sql-script/declare_procedure_no_args.sql similarity index 100% rename from sql/plsql/examples-sql-script/declare_procedure_no_args.sql rename to sql/plsql/examples/examples-sql-script/declare_procedure_no_args.sql diff --git a/sql/plsql/examples-sql-script/delete_as_regular_id.pkb b/sql/plsql/examples/examples-sql-script/delete_as_regular_id.pkb similarity index 100% rename from sql/plsql/examples-sql-script/delete_as_regular_id.pkb rename to sql/plsql/examples/examples-sql-script/delete_as_regular_id.pkb diff --git a/sql/plsql/examples-sql-script/deterministic_function.pks b/sql/plsql/examples/examples-sql-script/deterministic_function.pks similarity index 100% rename from sql/plsql/examples-sql-script/deterministic_function.pks rename to sql/plsql/examples/examples-sql-script/deterministic_function.pks diff --git a/sql/plsql/examples-sql-script/e_in_out_parameters.pks b/sql/plsql/examples/examples-sql-script/e_in_out_parameters.pks similarity index 100% rename from sql/plsql/examples-sql-script/e_in_out_parameters.pks rename to sql/plsql/examples/examples-sql-script/e_in_out_parameters.pks diff --git a/sql/plsql/examples-sql-script/grants.sql b/sql/plsql/examples/examples-sql-script/grants.sql similarity index 100% rename from sql/plsql/examples-sql-script/grants.sql rename to sql/plsql/examples/examples-sql-script/grants.sql diff --git a/sql/plsql/examples-sql-script/green_run.sql b/sql/plsql/examples/examples-sql-script/green_run.sql similarity index 100% rename from sql/plsql/examples-sql-script/green_run.sql rename to sql/plsql/examples/examples-sql-script/green_run.sql diff --git a/sql/plsql/examples-sql-script/green_table.sql b/sql/plsql/examples/examples-sql-script/green_table.sql similarity index 100% rename from sql/plsql/examples-sql-script/green_table.sql rename to sql/plsql/examples/examples-sql-script/green_table.sql diff --git a/sql/plsql/examples-sql-script/green_tools.pkb b/sql/plsql/examples/examples-sql-script/green_tools.pkb similarity index 100% rename from sql/plsql/examples-sql-script/green_tools.pkb rename to sql/plsql/examples/examples-sql-script/green_tools.pkb diff --git a/sql/plsql/examples-sql-script/green_tools.pks b/sql/plsql/examples/examples-sql-script/green_tools.pks similarity index 100% rename from sql/plsql/examples-sql-script/green_tools.pks rename to sql/plsql/examples/examples-sql-script/green_tools.pks diff --git a/sql/plsql/examples-sql-script/green_tools_review.sql b/sql/plsql/examples/examples-sql-script/green_tools_review.sql similarity index 100% rename from sql/plsql/examples-sql-script/green_tools_review.sql rename to sql/plsql/examples/examples-sql-script/green_tools_review.sql diff --git a/sql/plsql/examples-sql-script/in_out_parameters.pks b/sql/plsql/examples/examples-sql-script/in_out_parameters.pks similarity index 100% rename from sql/plsql/examples-sql-script/in_out_parameters.pks rename to sql/plsql/examples/examples-sql-script/in_out_parameters.pks diff --git a/sql/plsql/examples-sql-script/key_word_as_param.pkb b/sql/plsql/examples/examples-sql-script/key_word_as_param.pkb similarity index 100% rename from sql/plsql/examples-sql-script/key_word_as_param.pkb rename to sql/plsql/examples/examples-sql-script/key_word_as_param.pkb diff --git a/sql/plsql/examples-sql-script/logical_expressions.sql b/sql/plsql/examples/examples-sql-script/logical_expressions.sql similarity index 100% rename from sql/plsql/examples-sql-script/logical_expressions.sql rename to sql/plsql/examples/examples-sql-script/logical_expressions.sql diff --git a/sql/plsql/examples-sql-script/package_body_null.pkb b/sql/plsql/examples/examples-sql-script/package_body_null.pkb similarity index 100% rename from sql/plsql/examples-sql-script/package_body_null.pkb rename to sql/plsql/examples/examples-sql-script/package_body_null.pkb diff --git a/sql/plsql/examples-sql-script/package_with_cursor.sql b/sql/plsql/examples/examples-sql-script/package_with_cursor.sql similarity index 100% rename from sql/plsql/examples-sql-script/package_with_cursor.sql rename to sql/plsql/examples/examples-sql-script/package_with_cursor.sql diff --git a/sql/plsql/examples-sql-script/package_with_schema.pkb b/sql/plsql/examples/examples-sql-script/package_with_schema.pkb similarity index 100% rename from sql/plsql/examples-sql-script/package_with_schema.pkb rename to sql/plsql/examples/examples-sql-script/package_with_schema.pkb diff --git a/sql/plsql/examples-sql-script/package_with_schema.pks b/sql/plsql/examples/examples-sql-script/package_with_schema.pks similarity index 100% rename from sql/plsql/examples-sql-script/package_with_schema.pks rename to sql/plsql/examples/examples-sql-script/package_with_schema.pks diff --git a/sql/plsql/examples-sql-script/package_with_simple_init_block.pkb b/sql/plsql/examples/examples-sql-script/package_with_simple_init_block.pkb similarity index 100% rename from sql/plsql/examples-sql-script/package_with_simple_init_block.pkb rename to sql/plsql/examples/examples-sql-script/package_with_simple_init_block.pkb diff --git a/sql/plsql/examples-sql-script/pipe_row.pkb b/sql/plsql/examples/examples-sql-script/pipe_row.pkb similarity index 100% rename from sql/plsql/examples-sql-script/pipe_row.pkb rename to sql/plsql/examples/examples-sql-script/pipe_row.pkb diff --git a/sql/plsql/examples-sql-script/pltables.sql b/sql/plsql/examples/examples-sql-script/pltables.sql similarity index 100% rename from sql/plsql/examples-sql-script/pltables.sql rename to sql/plsql/examples/examples-sql-script/pltables.sql diff --git a/sql/plsql/examples-sql-script/pragma_autonomous_transaction.sql b/sql/plsql/examples/examples-sql-script/pragma_autonomous_transaction.sql similarity index 100% rename from sql/plsql/examples-sql-script/pragma_autonomous_transaction.sql rename to sql/plsql/examples/examples-sql-script/pragma_autonomous_transaction.sql diff --git a/sql/plsql/examples-sql-script/pragma_exception_init.pkb b/sql/plsql/examples/examples-sql-script/pragma_exception_init.pkb similarity index 100% rename from sql/plsql/examples-sql-script/pragma_exception_init.pkb rename to sql/plsql/examples/examples-sql-script/pragma_exception_init.pkb diff --git a/sql/plsql/examples-sql-script/pragma_exception_init.pks b/sql/plsql/examples/examples-sql-script/pragma_exception_init.pks similarity index 100% rename from sql/plsql/examples-sql-script/pragma_exception_init.pks rename to sql/plsql/examples/examples-sql-script/pragma_exception_init.pks diff --git a/sql/plsql/examples-sql-script/proc_over_dblink_as_nvl_param.pkb b/sql/plsql/examples/examples-sql-script/proc_over_dblink_as_nvl_param.pkb similarity index 100% rename from sql/plsql/examples-sql-script/proc_over_dblink_as_nvl_param.pkb rename to sql/plsql/examples/examples-sql-script/proc_over_dblink_as_nvl_param.pkb diff --git a/sql/plsql/examples-sql-script/procedure_with_cursor_and_limit.sql b/sql/plsql/examples/examples-sql-script/procedure_with_cursor_and_limit.sql similarity index 100% rename from sql/plsql/examples-sql-script/procedure_with_cursor_and_limit.sql rename to sql/plsql/examples/examples-sql-script/procedure_with_cursor_and_limit.sql diff --git a/sql/plsql/examples-sql-script/result_cache_function.pks b/sql/plsql/examples/examples-sql-script/result_cache_function.pks similarity index 100% rename from sql/plsql/examples-sql-script/result_cache_function.pks rename to sql/plsql/examples/examples-sql-script/result_cache_function.pks diff --git a/sql/plsql/examples-sql-script/select_into.sql b/sql/plsql/examples/examples-sql-script/select_into.sql similarity index 100% rename from sql/plsql/examples-sql-script/select_into.sql rename to sql/plsql/examples/examples-sql-script/select_into.sql diff --git a/sql/plsql/examples-sql-script/show_errors.pks b/sql/plsql/examples/examples-sql-script/show_errors.pks similarity index 100% rename from sql/plsql/examples-sql-script/show_errors.pks rename to sql/plsql/examples/examples-sql-script/show_errors.pks diff --git a/sql/plsql/examples-sql-script/substr_as_regular_id.pkb b/sql/plsql/examples/examples-sql-script/substr_as_regular_id.pkb similarity index 100% rename from sql/plsql/examples-sql-script/substr_as_regular_id.pkb rename to sql/plsql/examples/examples-sql-script/substr_as_regular_id.pkb diff --git a/sql/plsql/examples-sql-script/synonym_with_database_link.sql b/sql/plsql/examples/examples-sql-script/synonym_with_database_link.sql similarity index 100% rename from sql/plsql/examples-sql-script/synonym_with_database_link.sql rename to sql/plsql/examples/examples-sql-script/synonym_with_database_link.sql diff --git a/sql/plsql/examples-sql-script/trigger_examples.sql b/sql/plsql/examples/examples-sql-script/trigger_examples.sql similarity index 100% rename from sql/plsql/examples-sql-script/trigger_examples.sql rename to sql/plsql/examples/examples-sql-script/trigger_examples.sql diff --git a/sql/plsql/examples-sql-script/type_body_elements.sql b/sql/plsql/examples/examples-sql-script/type_body_elements.sql similarity index 100% rename from sql/plsql/examples-sql-script/type_body_elements.sql rename to sql/plsql/examples/examples-sql-script/type_body_elements.sql diff --git a/sql/plsql/examples-sql-script/user.sql b/sql/plsql/examples/examples-sql-script/user.sql similarity index 100% rename from sql/plsql/examples-sql-script/user.sql rename to sql/plsql/examples/examples-sql-script/user.sql diff --git a/sql/plsql/examples-sql-script/with_clause_in_exists_block_in_procedure.sql b/sql/plsql/examples/examples-sql-script/with_clause_in_exists_block_in_procedure.sql similarity index 100% rename from sql/plsql/examples-sql-script/with_clause_in_exists_block_in_procedure.sql rename to sql/plsql/examples/examples-sql-script/with_clause_in_exists_block_in_procedure.sql diff --git a/sql/plsql/examples/lexer02.sql b/sql/plsql/examples/lexer02.sql index bd9dab4130..b81d841921 100644 --- a/sql/plsql/examples/lexer02.sql +++ b/sql/plsql/examples/lexer02.sql @@ -4,4 +4,4 @@ select a ä, b Ḅ from dual; CREATE OR REPLACE PACKAGE ACCESS_SECURITY AS -- omitted -END; +END; \ No newline at end of file diff --git a/sql/plsql/gr.sh b/sql/plsql/gr.sh new file mode 100644 index 0000000000..b02034bf46 --- /dev/null +++ b/sql/plsql/gr.sh @@ -0,0 +1,60 @@ + +# Compute graphs. +# Grouped +rm -f times.txt + +targets=( Antlr4ng CSharp Cpp Dart Go Java JavaScript TypeScript Python3 ) +c=${#targets[@]} +sq=`seq -s " " 1 $c | tr -d '\n'` +n=`grep SampleSize= Generated-${targets[0]}-0/parse.txt | sed 's/^[^=]*=//'` +name=`head -2 Generated-${targets[0]}-0/parse.txt | tail -1 | tr -d '\n' | tr -d '\r'` + +# collect grouped data in one file. Order important. +for t in ${targets[@]} +do + echo $t + grep "group Total Time" Generated-$t-0/parse.txt >> times.txt +done + +rm -f zzz.m +cat > zzz.m << EOF +pkg load statistics +n=$n; +c=$c; +x=[ $sq ]; +disp(x) +p=[ `cat times.txt | awk '{print $4}'` ]; +s=[ `echo ${targets[@]} | sed 's/\([a-zA-Z0-9/._-]\+\)/"\1"/g' | awk 'NR==1 {printf "%s", $0; next} {printf "; %s", $0} END {print ""}' ` ]; +h={ `echo ${targets[@]} | sed 's/\([a-zA-Z0-9/._-]\+\)/"\1"/g' | awk 'NR==1 {printf "%s", $0; next} {printf "; %s", $0} END {print ""}' ` }; +rp=reshape(p, n, c); +mq=mean(rp); +y=mq; +disp(x) +sq=std(rp); +colours = { '#88085c', '#e8600a', '#5468ff', '#ee243c', '#FCD34D', '#7ee787', '#F17FA2', '#5BC1D7', '#56C271' }; +disp(n) +disp(c) +disp(mq) +disp(sq) +hold on +for i = 1 : length(mq) + H(i) = bar( x(i), y(i), 0.4, 'facecolor', colours{i} ); +endfor +xlim([0 10]) +hold off; +hold on +er = errorbar(x, mq, sq); +set(er, "color", [0 0 0]) +set(er, "linewidth", 1); +set(er, "linestyle", "none"); +hold off +set(gca, 'XTickLabel', x, 'XTick', 1:numel(x)); +set(gca, "fontsize", 6) +xlabel("Target"); +ylabel("Runtime (s)"); +title("Comparison of Runtimes for $name") +l=legend(h, "location", "northwest"); +print("./times.svg", "-dsvg") +EOF + +cat zzz.m | octave diff --git a/sql/plsql/hw-examples/alter_operator.sql b/sql/plsql/hw-examples/alter_operator.sql deleted file mode 100644 index 2176427c5a..0000000000 --- a/sql/plsql/hw-examples/alter_operator.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER OPERATOR eq_op COMPILE; diff --git a/sql/plsql/hw-examples/alter_outline.sql b/sql/plsql/hw-examples/alter_outline.sql deleted file mode 100644 index 67d6aa7c26..0000000000 --- a/sql/plsql/hw-examples/alter_outline.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER OUTLINE salaries REBUILD; diff --git a/sql/plsql/hw-examples/drop_operator.sql b/sql/plsql/hw-examples/drop_operator.sql deleted file mode 100644 index 952e7c3a41..0000000000 --- a/sql/plsql/hw-examples/drop_operator.sql +++ /dev/null @@ -1 +0,0 @@ -DROP OPERATOR eq_op; diff --git a/sql/plsql/hw-examples/keywordasidentifier02.sql b/sql/plsql/hw-examples/keywordasidentifier02.sql deleted file mode 100644 index a2b6c0ae73..0000000000 --- a/sql/plsql/hw-examples/keywordasidentifier02.sql +++ /dev/null @@ -1 +0,0 @@ -select m.model from model diff --git a/sql/plsql/hw-examples/lexer01.sql b/sql/plsql/hw-examples/lexer01.sql deleted file mode 100644 index f9eae8c007..0000000000 --- a/sql/plsql/hw-examples/lexer01.sql +++ /dev/null @@ -1,2 +0,0 @@ -select * from dual where 1 < > 2 and 1 ! = 2 and 1 ^ /*aaa */ = 2 - diff --git a/sql/plsql/hw-examples/lexer02.sql b/sql/plsql/hw-examples/lexer02.sql deleted file mode 100644 index 15aaf848a4..0000000000 --- a/sql/plsql/hw-examples/lexer02.sql +++ /dev/null @@ -1,2 +0,0 @@ -select 'A' | | 'B' from dual - diff --git a/sql/plsql/hw-examples/lexer03.sql b/sql/plsql/hw-examples/lexer03.sql deleted file mode 100644 index 488fba03a1..0000000000 --- a/sql/plsql/hw-examples/lexer03.sql +++ /dev/null @@ -1,2 +0,0 @@ -select :1, :X, :1 + 1, 1 + :2 from A where A=:3 and b= : 4 and c= :5and :A = :b - diff --git a/sql/plsql/hw-examples/lexer04.sql b/sql/plsql/hw-examples/lexer04.sql deleted file mode 100644 index c3931e035d..0000000000 --- a/sql/plsql/hw-examples/lexer04.sql +++ /dev/null @@ -1 +0,0 @@ -select tbl$or$idx$part$num("sys"."wrh$_seg_stat",0,4,0,"rowid") as c1 from t1 diff --git a/sql/plsql/hw-examples/lexer05.sql b/sql/plsql/hw-examples/lexer05.sql deleted file mode 100644 index 8dcc674cfa..0000000000 --- a/sql/plsql/hw-examples/lexer05.sql +++ /dev/null @@ -1 +0,0 @@ -select tbl$or$idx$part$num("sys"."wrh:_seg_stat",0,4,0,"rowid") as c1 from t1 diff --git a/sql/plsql/hw-examples/simple11.sql b/sql/plsql/hw-examples/simple11.sql deleted file mode 100644 index ed2205330f..0000000000 --- a/sql/plsql/hw-examples/simple11.sql +++ /dev/null @@ -1 +0,0 @@ -select a.* from dual diff --git a/sql/plsql/hw-examples/truncate_table.sql b/sql/plsql/hw-examples/truncate_table.sql deleted file mode 100644 index 3d7f0b9722..0000000000 --- a/sql/plsql/hw-examples/truncate_table.sql +++ /dev/null @@ -1 +0,0 @@ -truncate table test; \ No newline at end of file diff --git a/sql/plsql/examples/4357.sql b/sql/plsql/more/4357.sql similarity index 100% rename from sql/plsql/examples/4357.sql rename to sql/plsql/more/4357.sql diff --git a/sql/plsql/examples/administer_key_management.sql b/sql/plsql/more/administer_key_management.sql similarity index 100% rename from sql/plsql/examples/administer_key_management.sql rename to sql/plsql/more/administer_key_management.sql diff --git a/sql/plsql/examples/aggregate_functions.sql b/sql/plsql/more/aggregate_functions.sql similarity index 100% rename from sql/plsql/examples/aggregate_functions.sql rename to sql/plsql/more/aggregate_functions.sql diff --git a/sql/plsql/examples/alter_analytic_view.sql b/sql/plsql/more/alter_analytic_view.sql similarity index 100% rename from sql/plsql/examples/alter_analytic_view.sql rename to sql/plsql/more/alter_analytic_view.sql diff --git a/sql/plsql/examples/alter_audit_policy.sql b/sql/plsql/more/alter_audit_policy.sql similarity index 100% rename from sql/plsql/examples/alter_audit_policy.sql rename to sql/plsql/more/alter_audit_policy.sql diff --git a/sql/plsql/examples/alter_database.sql b/sql/plsql/more/alter_database.sql similarity index 100% rename from sql/plsql/examples/alter_database.sql rename to sql/plsql/more/alter_database.sql diff --git a/sql/plsql/examples/alter_dimension.sql b/sql/plsql/more/alter_dimension.sql similarity index 100% rename from sql/plsql/examples/alter_dimension.sql rename to sql/plsql/more/alter_dimension.sql diff --git a/sql/plsql/examples/alter_diskgroup.sql b/sql/plsql/more/alter_diskgroup.sql similarity index 100% rename from sql/plsql/examples/alter_diskgroup.sql rename to sql/plsql/more/alter_diskgroup.sql diff --git a/sql/plsql/examples/alter_flashback_archive.sql b/sql/plsql/more/alter_flashback_archive.sql similarity index 100% rename from sql/plsql/examples/alter_flashback_archive.sql rename to sql/plsql/more/alter_flashback_archive.sql diff --git a/sql/plsql/examples/alter_inmemory_join_group.sql b/sql/plsql/more/alter_inmemory_join_group.sql similarity index 100% rename from sql/plsql/examples/alter_inmemory_join_group.sql rename to sql/plsql/more/alter_inmemory_join_group.sql diff --git a/sql/plsql/examples/alter_java.sql b/sql/plsql/more/alter_java.sql similarity index 100% rename from sql/plsql/examples/alter_java.sql rename to sql/plsql/more/alter_java.sql diff --git a/sql/plsql/examples/alter_lockdown_profile.sql b/sql/plsql/more/alter_lockdown_profile.sql similarity index 100% rename from sql/plsql/examples/alter_lockdown_profile.sql rename to sql/plsql/more/alter_lockdown_profile.sql diff --git a/sql/plsql/examples/alter_materialized_zonemap.sql b/sql/plsql/more/alter_materialized_zonemap.sql similarity index 100% rename from sql/plsql/examples/alter_materialized_zonemap.sql rename to sql/plsql/more/alter_materialized_zonemap.sql diff --git a/sql/plsql/examples/alter_mv.sql b/sql/plsql/more/alter_mv.sql similarity index 100% rename from sql/plsql/examples/alter_mv.sql rename to sql/plsql/more/alter_mv.sql diff --git a/sql/plsql/examples/alter_mv_log.sql b/sql/plsql/more/alter_mv_log.sql similarity index 100% rename from sql/plsql/examples/alter_mv_log.sql rename to sql/plsql/more/alter_mv_log.sql diff --git a/sql/plsql/examples/alter_pmem_filestore.sql b/sql/plsql/more/alter_pmem_filestore.sql similarity index 100% rename from sql/plsql/examples/alter_pmem_filestore.sql rename to sql/plsql/more/alter_pmem_filestore.sql diff --git a/sql/plsql/examples/alter_resource_cost.sql b/sql/plsql/more/alter_resource_cost.sql similarity index 100% rename from sql/plsql/examples/alter_resource_cost.sql rename to sql/plsql/more/alter_resource_cost.sql diff --git a/sql/plsql/examples/alter_role.sql b/sql/plsql/more/alter_role.sql similarity index 100% rename from sql/plsql/examples/alter_role.sql rename to sql/plsql/more/alter_role.sql diff --git a/sql/plsql/examples/alter_session.sql b/sql/plsql/more/alter_session.sql similarity index 100% rename from sql/plsql/examples/alter_session.sql rename to sql/plsql/more/alter_session.sql diff --git a/sql/plsql/examples/alter_synonym01.sql b/sql/plsql/more/alter_synonym01.sql similarity index 100% rename from sql/plsql/examples/alter_synonym01.sql rename to sql/plsql/more/alter_synonym01.sql diff --git a/sql/plsql/examples/alter_table.sql b/sql/plsql/more/alter_table.sql similarity index 100% rename from sql/plsql/examples/alter_table.sql rename to sql/plsql/more/alter_table.sql diff --git a/sql/plsql/examples/alter_table_inmemory.sql b/sql/plsql/more/alter_table_inmemory.sql similarity index 100% rename from sql/plsql/examples/alter_table_inmemory.sql rename to sql/plsql/more/alter_table_inmemory.sql diff --git a/sql/plsql/examples/alter_table_modify_partition_by_range.sql b/sql/plsql/more/alter_table_modify_partition_by_range.sql similarity index 100% rename from sql/plsql/examples/alter_table_modify_partition_by_range.sql rename to sql/plsql/more/alter_table_modify_partition_by_range.sql diff --git a/sql/plsql/examples/alter_tablespaces.sql b/sql/plsql/more/alter_tablespaces.sql similarity index 100% rename from sql/plsql/examples/alter_tablespaces.sql rename to sql/plsql/more/alter_tablespaces.sql diff --git a/sql/plsql/examples/alter_view.sql b/sql/plsql/more/alter_view.sql similarity index 100% rename from sql/plsql/examples/alter_view.sql rename to sql/plsql/more/alter_view.sql diff --git a/sql/plsql/examples/analytic_query.sql b/sql/plsql/more/analytic_query.sql similarity index 100% rename from sql/plsql/examples/analytic_query.sql rename to sql/plsql/more/analytic_query.sql diff --git a/sql/plsql/examples/analyze.sql b/sql/plsql/more/analyze.sql similarity index 100% rename from sql/plsql/examples/analyze.sql rename to sql/plsql/more/analyze.sql diff --git a/sql/plsql/examples/audit.sql b/sql/plsql/more/audit.sql similarity index 100% rename from sql/plsql/examples/audit.sql rename to sql/plsql/more/audit.sql diff --git a/sql/plsql/examples/bindvar01.sql b/sql/plsql/more/bindvar01.sql similarity index 100% rename from sql/plsql/examples/bindvar01.sql rename to sql/plsql/more/bindvar01.sql diff --git a/sql/plsql/examples/bindvar02.sql b/sql/plsql/more/bindvar02.sql similarity index 100% rename from sql/plsql/examples/bindvar02.sql rename to sql/plsql/more/bindvar02.sql diff --git a/sql/plsql/examples/bindvar03.sql b/sql/plsql/more/bindvar03.sql similarity index 100% rename from sql/plsql/examples/bindvar03.sql rename to sql/plsql/more/bindvar03.sql diff --git a/sql/plsql/examples/bindvar04.sql b/sql/plsql/more/bindvar04.sql similarity index 100% rename from sql/plsql/examples/bindvar04.sql rename to sql/plsql/more/bindvar04.sql diff --git a/sql/plsql/examples/bindvar05.sql b/sql/plsql/more/bindvar05.sql similarity index 100% rename from sql/plsql/examples/bindvar05.sql rename to sql/plsql/more/bindvar05.sql diff --git a/sql/plsql/examples/block01.sql b/sql/plsql/more/block01.sql similarity index 100% rename from sql/plsql/examples/block01.sql rename to sql/plsql/more/block01.sql diff --git a/sql/plsql/examples/block02.sql b/sql/plsql/more/block02.sql similarity index 100% rename from sql/plsql/examples/block02.sql rename to sql/plsql/more/block02.sql diff --git a/sql/plsql/examples/bulk_collect_fetch_clause01.sql b/sql/plsql/more/bulk_collect_fetch_clause01.sql similarity index 100% rename from sql/plsql/examples/bulk_collect_fetch_clause01.sql rename to sql/plsql/more/bulk_collect_fetch_clause01.sql diff --git a/sql/plsql/examples/call.sql b/sql/plsql/more/call.sql similarity index 100% rename from sql/plsql/examples/call.sql rename to sql/plsql/more/call.sql diff --git a/sql/plsql/examples/case_when01.sql b/sql/plsql/more/case_when01.sql similarity index 100% rename from sql/plsql/examples/case_when01.sql rename to sql/plsql/more/case_when01.sql diff --git a/sql/plsql/examples/case_when02.sql b/sql/plsql/more/case_when02.sql similarity index 100% rename from sql/plsql/examples/case_when02.sql rename to sql/plsql/more/case_when02.sql diff --git a/sql/plsql/examples/case_when03.sql b/sql/plsql/more/case_when03.sql similarity index 100% rename from sql/plsql/examples/case_when03.sql rename to sql/plsql/more/case_when03.sql diff --git a/sql/plsql/examples/case_when04.sql b/sql/plsql/more/case_when04.sql similarity index 100% rename from sql/plsql/examples/case_when04.sql rename to sql/plsql/more/case_when04.sql diff --git a/sql/plsql/examples/case_when05.sql b/sql/plsql/more/case_when05.sql similarity index 100% rename from sql/plsql/examples/case_when05.sql rename to sql/plsql/more/case_when05.sql diff --git a/sql/plsql/examples/case_when06.sql b/sql/plsql/more/case_when06.sql similarity index 100% rename from sql/plsql/examples/case_when06.sql rename to sql/plsql/more/case_when06.sql diff --git a/sql/plsql/examples/case_when07.sql b/sql/plsql/more/case_when07.sql similarity index 100% rename from sql/plsql/examples/case_when07.sql rename to sql/plsql/more/case_when07.sql diff --git a/sql/plsql/examples/case_when08.sql b/sql/plsql/more/case_when08.sql similarity index 100% rename from sql/plsql/examples/case_when08.sql rename to sql/plsql/more/case_when08.sql diff --git a/sql/plsql/examples/cast.sql b/sql/plsql/more/cast.sql similarity index 100% rename from sql/plsql/examples/cast.sql rename to sql/plsql/more/cast.sql diff --git a/sql/plsql/examples/cast_multiset01.sql b/sql/plsql/more/cast_multiset01.sql similarity index 100% rename from sql/plsql/examples/cast_multiset01.sql rename to sql/plsql/more/cast_multiset01.sql diff --git a/sql/plsql/examples/cast_multiset02.sql b/sql/plsql/more/cast_multiset02.sql similarity index 100% rename from sql/plsql/examples/cast_multiset02.sql rename to sql/plsql/more/cast_multiset02.sql diff --git a/sql/plsql/examples/cast_multiset03.sql b/sql/plsql/more/cast_multiset03.sql similarity index 100% rename from sql/plsql/examples/cast_multiset03.sql rename to sql/plsql/more/cast_multiset03.sql diff --git a/sql/plsql/examples/cast_multiset05.sql b/sql/plsql/more/cast_multiset05.sql similarity index 100% rename from sql/plsql/examples/cast_multiset05.sql rename to sql/plsql/more/cast_multiset05.sql diff --git a/sql/plsql/examples/cast_multiset06.sql b/sql/plsql/more/cast_multiset06.sql similarity index 100% rename from sql/plsql/examples/cast_multiset06.sql rename to sql/plsql/more/cast_multiset06.sql diff --git a/sql/plsql/examples/cluster.sql b/sql/plsql/more/cluster.sql similarity index 100% rename from sql/plsql/examples/cluster.sql rename to sql/plsql/more/cluster.sql diff --git a/sql/plsql/examples/collection_method_invocation.sql b/sql/plsql/more/collection_method_invocation.sql similarity index 100% rename from sql/plsql/examples/collection_method_invocation.sql rename to sql/plsql/more/collection_method_invocation.sql diff --git a/sql/plsql/examples/columns01.sql b/sql/plsql/more/columns01.sql similarity index 100% rename from sql/plsql/examples/columns01.sql rename to sql/plsql/more/columns01.sql diff --git a/sql/plsql/examples/comment_on.sql b/sql/plsql/more/comment_on.sql similarity index 100% rename from sql/plsql/examples/comment_on.sql rename to sql/plsql/more/comment_on.sql diff --git a/sql/plsql/examples/comments.sql b/sql/plsql/more/comments.sql similarity index 100% rename from sql/plsql/examples/comments.sql rename to sql/plsql/more/comments.sql diff --git a/sql/plsql/examples/commit.sql b/sql/plsql/more/commit.sql similarity index 100% rename from sql/plsql/examples/commit.sql rename to sql/plsql/more/commit.sql diff --git a/sql/plsql/examples/concatenation-double_asterisk.sql b/sql/plsql/more/concatenation-double_asterisk.sql similarity index 100% rename from sql/plsql/examples/concatenation-double_asterisk.sql rename to sql/plsql/more/concatenation-double_asterisk.sql diff --git a/sql/plsql/examples/concatenation-mod.sql b/sql/plsql/more/concatenation-mod.sql similarity index 100% rename from sql/plsql/examples/concatenation-mod.sql rename to sql/plsql/more/concatenation-mod.sql diff --git a/sql/plsql/examples/condition01.sql b/sql/plsql/more/condition01.sql similarity index 100% rename from sql/plsql/examples/condition01.sql rename to sql/plsql/more/condition01.sql diff --git a/sql/plsql/examples/condition02.sql b/sql/plsql/more/condition02.sql similarity index 100% rename from sql/plsql/examples/condition02.sql rename to sql/plsql/more/condition02.sql diff --git a/sql/plsql/examples/condition03.sql b/sql/plsql/more/condition03.sql similarity index 100% rename from sql/plsql/examples/condition03.sql rename to sql/plsql/more/condition03.sql diff --git a/sql/plsql/examples/condition04.sql b/sql/plsql/more/condition04.sql similarity index 100% rename from sql/plsql/examples/condition04.sql rename to sql/plsql/more/condition04.sql diff --git a/sql/plsql/examples/condition05.sql b/sql/plsql/more/condition05.sql similarity index 100% rename from sql/plsql/examples/condition05.sql rename to sql/plsql/more/condition05.sql diff --git a/sql/plsql/examples/condition06.sql b/sql/plsql/more/condition06.sql similarity index 100% rename from sql/plsql/examples/condition06.sql rename to sql/plsql/more/condition06.sql diff --git a/sql/plsql/examples/condition07.sql b/sql/plsql/more/condition07.sql similarity index 100% rename from sql/plsql/examples/condition07.sql rename to sql/plsql/more/condition07.sql diff --git a/sql/plsql/examples/condition08.sql b/sql/plsql/more/condition08.sql similarity index 100% rename from sql/plsql/examples/condition08.sql rename to sql/plsql/more/condition08.sql diff --git a/sql/plsql/examples/condition09.sql b/sql/plsql/more/condition09.sql similarity index 100% rename from sql/plsql/examples/condition09.sql rename to sql/plsql/more/condition09.sql diff --git a/sql/plsql/examples/condition10.sql b/sql/plsql/more/condition10.sql similarity index 100% rename from sql/plsql/examples/condition10.sql rename to sql/plsql/more/condition10.sql diff --git a/sql/plsql/examples/condition11.sql b/sql/plsql/more/condition11.sql similarity index 100% rename from sql/plsql/examples/condition11.sql rename to sql/plsql/more/condition11.sql diff --git a/sql/plsql/examples/condition12.sql b/sql/plsql/more/condition12.sql similarity index 100% rename from sql/plsql/examples/condition12.sql rename to sql/plsql/more/condition12.sql diff --git a/sql/plsql/examples/condition15.sql b/sql/plsql/more/condition15.sql similarity index 100% rename from sql/plsql/examples/condition15.sql rename to sql/plsql/more/condition15.sql diff --git a/sql/plsql/examples/connect_by01.sql b/sql/plsql/more/connect_by01.sql similarity index 100% rename from sql/plsql/examples/connect_by01.sql rename to sql/plsql/more/connect_by01.sql diff --git a/sql/plsql/examples/connect_by02.sql b/sql/plsql/more/connect_by02.sql similarity index 100% rename from sql/plsql/examples/connect_by02.sql rename to sql/plsql/more/connect_by02.sql diff --git a/sql/plsql/examples/connect_by03.sql b/sql/plsql/more/connect_by03.sql similarity index 100% rename from sql/plsql/examples/connect_by03.sql rename to sql/plsql/more/connect_by03.sql diff --git a/sql/plsql/examples/connect_by04.sql b/sql/plsql/more/connect_by04.sql similarity index 100% rename from sql/plsql/examples/connect_by04.sql rename to sql/plsql/more/connect_by04.sql diff --git a/sql/plsql/examples/connect_by05.sql b/sql/plsql/more/connect_by05.sql similarity index 100% rename from sql/plsql/examples/connect_by05.sql rename to sql/plsql/more/connect_by05.sql diff --git a/sql/plsql/examples/create_analytic_view.sql b/sql/plsql/more/create_analytic_view.sql similarity index 100% rename from sql/plsql/examples/create_analytic_view.sql rename to sql/plsql/more/create_analytic_view.sql diff --git a/sql/plsql/examples/create_attribute_dimension.sql b/sql/plsql/more/create_attribute_dimension.sql similarity index 100% rename from sql/plsql/examples/create_attribute_dimension.sql rename to sql/plsql/more/create_attribute_dimension.sql diff --git a/sql/plsql/examples/create_audit_policy.sql b/sql/plsql/more/create_audit_policy.sql similarity index 100% rename from sql/plsql/examples/create_audit_policy.sql rename to sql/plsql/more/create_audit_policy.sql diff --git a/sql/plsql/examples/create_controlfile.sql b/sql/plsql/more/create_controlfile.sql similarity index 100% rename from sql/plsql/examples/create_controlfile.sql rename to sql/plsql/more/create_controlfile.sql diff --git a/sql/plsql/examples/create_database.sql b/sql/plsql/more/create_database.sql similarity index 100% rename from sql/plsql/examples/create_database.sql rename to sql/plsql/more/create_database.sql diff --git a/sql/plsql/examples/create_dimension.sql b/sql/plsql/more/create_dimension.sql similarity index 100% rename from sql/plsql/examples/create_dimension.sql rename to sql/plsql/more/create_dimension.sql diff --git a/sql/plsql/examples/create_directory.sql b/sql/plsql/more/create_directory.sql similarity index 100% rename from sql/plsql/examples/create_directory.sql rename to sql/plsql/more/create_directory.sql diff --git a/sql/plsql/examples/create_flashback_archive.sql b/sql/plsql/more/create_flashback_archive.sql similarity index 100% rename from sql/plsql/examples/create_flashback_archive.sql rename to sql/plsql/more/create_flashback_archive.sql diff --git a/sql/plsql/examples/create_function01.sql b/sql/plsql/more/create_function01.sql similarity index 100% rename from sql/plsql/examples/create_function01.sql rename to sql/plsql/more/create_function01.sql diff --git a/sql/plsql/examples/create_function02.sql b/sql/plsql/more/create_function02.sql similarity index 100% rename from sql/plsql/examples/create_function02.sql rename to sql/plsql/more/create_function02.sql diff --git a/sql/plsql/examples/create_function04.sql b/sql/plsql/more/create_function04.sql similarity index 100% rename from sql/plsql/examples/create_function04.sql rename to sql/plsql/more/create_function04.sql diff --git a/sql/plsql/examples/create_function05.sql b/sql/plsql/more/create_function05.sql similarity index 100% rename from sql/plsql/examples/create_function05.sql rename to sql/plsql/more/create_function05.sql diff --git a/sql/plsql/examples/create_function06.sql b/sql/plsql/more/create_function06.sql similarity index 100% rename from sql/plsql/examples/create_function06.sql rename to sql/plsql/more/create_function06.sql diff --git a/sql/plsql/examples/create_hierarchy.sql b/sql/plsql/more/create_hierarchy.sql similarity index 100% rename from sql/plsql/examples/create_hierarchy.sql rename to sql/plsql/more/create_hierarchy.sql diff --git a/sql/plsql/examples/create_index.sql b/sql/plsql/more/create_index.sql similarity index 100% rename from sql/plsql/examples/create_index.sql rename to sql/plsql/more/create_index.sql diff --git a/sql/plsql/examples/create_inmemory_join_group.sql b/sql/plsql/more/create_inmemory_join_group.sql similarity index 100% rename from sql/plsql/examples/create_inmemory_join_group.sql rename to sql/plsql/more/create_inmemory_join_group.sql diff --git a/sql/plsql/examples/create_java.sql b/sql/plsql/more/create_java.sql similarity index 100% rename from sql/plsql/examples/create_java.sql rename to sql/plsql/more/create_java.sql diff --git a/sql/plsql/examples/create_library.sql b/sql/plsql/more/create_library.sql similarity index 100% rename from sql/plsql/examples/create_library.sql rename to sql/plsql/more/create_library.sql diff --git a/sql/plsql/examples/create_materialized_zonemap.sql b/sql/plsql/more/create_materialized_zonemap.sql similarity index 100% rename from sql/plsql/examples/create_materialized_zonemap.sql rename to sql/plsql/more/create_materialized_zonemap.sql diff --git a/sql/plsql/examples/create_operator.sql b/sql/plsql/more/create_operator.sql similarity index 100% rename from sql/plsql/examples/create_operator.sql rename to sql/plsql/more/create_operator.sql diff --git a/sql/plsql/examples/create_outline.sql b/sql/plsql/more/create_outline.sql similarity index 100% rename from sql/plsql/examples/create_outline.sql rename to sql/plsql/more/create_outline.sql diff --git a/sql/plsql/examples/create_package01.sql b/sql/plsql/more/create_package01.sql similarity index 100% rename from sql/plsql/examples/create_package01.sql rename to sql/plsql/more/create_package01.sql diff --git a/sql/plsql/examples/create_package02.sql b/sql/plsql/more/create_package02.sql similarity index 100% rename from sql/plsql/examples/create_package02.sql rename to sql/plsql/more/create_package02.sql diff --git a/sql/plsql/examples/create_package03.sql b/sql/plsql/more/create_package03.sql similarity index 100% rename from sql/plsql/examples/create_package03.sql rename to sql/plsql/more/create_package03.sql diff --git a/sql/plsql/examples/create_package04.sql b/sql/plsql/more/create_package04.sql similarity index 100% rename from sql/plsql/examples/create_package04.sql rename to sql/plsql/more/create_package04.sql diff --git a/sql/plsql/examples/create_package05.sql b/sql/plsql/more/create_package05.sql similarity index 100% rename from sql/plsql/examples/create_package05.sql rename to sql/plsql/more/create_package05.sql diff --git a/sql/plsql/examples/create_pmem_filestore.sql b/sql/plsql/more/create_pmem_filestore.sql similarity index 100% rename from sql/plsql/examples/create_pmem_filestore.sql rename to sql/plsql/more/create_pmem_filestore.sql diff --git a/sql/plsql/examples/create_procedure01.sql b/sql/plsql/more/create_procedure01.sql similarity index 100% rename from sql/plsql/examples/create_procedure01.sql rename to sql/plsql/more/create_procedure01.sql diff --git a/sql/plsql/examples/create_procedure01.sql.tree b/sql/plsql/more/create_procedure01.sql.tree similarity index 100% rename from sql/plsql/examples/create_procedure01.sql.tree rename to sql/plsql/more/create_procedure01.sql.tree diff --git a/sql/plsql/examples/create_procedure02.sql b/sql/plsql/more/create_procedure02.sql similarity index 100% rename from sql/plsql/examples/create_procedure02.sql rename to sql/plsql/more/create_procedure02.sql diff --git a/sql/plsql/examples/create_procedure03.sql b/sql/plsql/more/create_procedure03.sql similarity index 100% rename from sql/plsql/examples/create_procedure03.sql rename to sql/plsql/more/create_procedure03.sql diff --git a/sql/plsql/examples/create_profile.sql b/sql/plsql/more/create_profile.sql similarity index 100% rename from sql/plsql/examples/create_profile.sql rename to sql/plsql/more/create_profile.sql diff --git a/sql/plsql/examples/create_restore_point.sql b/sql/plsql/more/create_restore_point.sql similarity index 100% rename from sql/plsql/examples/create_restore_point.sql rename to sql/plsql/more/create_restore_point.sql diff --git a/sql/plsql/examples/create_role.sql b/sql/plsql/more/create_role.sql similarity index 100% rename from sql/plsql/examples/create_role.sql rename to sql/plsql/more/create_role.sql diff --git a/sql/plsql/examples/create_rollback_segment.sql b/sql/plsql/more/create_rollback_segment.sql similarity index 100% rename from sql/plsql/examples/create_rollback_segment.sql rename to sql/plsql/more/create_rollback_segment.sql diff --git a/sql/plsql/examples/create_spfile.sql b/sql/plsql/more/create_spfile.sql similarity index 100% rename from sql/plsql/examples/create_spfile.sql rename to sql/plsql/more/create_spfile.sql diff --git a/sql/plsql/examples/create_table.sql b/sql/plsql/more/create_table.sql similarity index 100% rename from sql/plsql/examples/create_table.sql rename to sql/plsql/more/create_table.sql diff --git a/sql/plsql/examples/create_tablespace.sql b/sql/plsql/more/create_tablespace.sql similarity index 100% rename from sql/plsql/examples/create_tablespace.sql rename to sql/plsql/more/create_tablespace.sql diff --git a/sql/plsql/examples/create_tablespace_set.sql b/sql/plsql/more/create_tablespace_set.sql similarity index 100% rename from sql/plsql/examples/create_tablespace_set.sql rename to sql/plsql/more/create_tablespace_set.sql diff --git a/sql/plsql/examples/create_trigger01.sql b/sql/plsql/more/create_trigger01.sql similarity index 100% rename from sql/plsql/examples/create_trigger01.sql rename to sql/plsql/more/create_trigger01.sql diff --git a/sql/plsql/examples/create_trigger02.sql b/sql/plsql/more/create_trigger02.sql similarity index 100% rename from sql/plsql/examples/create_trigger02.sql rename to sql/plsql/more/create_trigger02.sql diff --git a/sql/plsql/examples/create_type.sql b/sql/plsql/more/create_type.sql similarity index 100% rename from sql/plsql/examples/create_type.sql rename to sql/plsql/more/create_type.sql diff --git a/sql/plsql/examples/create_view.sql b/sql/plsql/more/create_view.sql similarity index 100% rename from sql/plsql/examples/create_view.sql rename to sql/plsql/more/create_view.sql diff --git a/sql/plsql/examples/ctas.sql b/sql/plsql/more/ctas.sql similarity index 100% rename from sql/plsql/examples/ctas.sql rename to sql/plsql/more/ctas.sql diff --git a/sql/plsql/examples/datetime03.sql b/sql/plsql/more/datetime03.sql similarity index 100% rename from sql/plsql/examples/datetime03.sql rename to sql/plsql/more/datetime03.sql diff --git a/sql/plsql/examples/datetime04.sql b/sql/plsql/more/datetime04.sql similarity index 100% rename from sql/plsql/examples/datetime04.sql rename to sql/plsql/more/datetime04.sql diff --git a/sql/plsql/examples/dblink.sql b/sql/plsql/more/dblink.sql similarity index 100% rename from sql/plsql/examples/dblink.sql rename to sql/plsql/more/dblink.sql diff --git a/sql/plsql/examples/dblink01.sql b/sql/plsql/more/dblink01.sql similarity index 100% rename from sql/plsql/examples/dblink01.sql rename to sql/plsql/more/dblink01.sql diff --git a/sql/plsql/examples/directory.sql b/sql/plsql/more/directory.sql similarity index 100% rename from sql/plsql/examples/directory.sql rename to sql/plsql/more/directory.sql diff --git a/sql/plsql/examples/drop_materialized_view.sql b/sql/plsql/more/drop_materialized_view.sql similarity index 100% rename from sql/plsql/examples/drop_materialized_view.sql rename to sql/plsql/more/drop_materialized_view.sql diff --git a/sql/plsql/examples/drop_materialized_view.sql.tree b/sql/plsql/more/drop_materialized_view.sql.tree similarity index 100% rename from sql/plsql/examples/drop_materialized_view.sql.tree rename to sql/plsql/more/drop_materialized_view.sql.tree diff --git a/sql/plsql/examples/drop_synonym01.sql b/sql/plsql/more/drop_synonym01.sql similarity index 100% rename from sql/plsql/examples/drop_synonym01.sql rename to sql/plsql/more/drop_synonym01.sql diff --git a/sql/plsql/examples/drop_tablespace.sql b/sql/plsql/more/drop_tablespace.sql similarity index 100% rename from sql/plsql/examples/drop_tablespace.sql rename to sql/plsql/more/drop_tablespace.sql diff --git a/sql/plsql/examples/editionable_function.sql b/sql/plsql/more/editionable_function.sql similarity index 100% rename from sql/plsql/examples/editionable_function.sql rename to sql/plsql/more/editionable_function.sql diff --git a/sql/plsql/examples/editionable_packagebody_function.sql b/sql/plsql/more/editionable_packagebody_function.sql similarity index 100% rename from sql/plsql/examples/editionable_packagebody_function.sql rename to sql/plsql/more/editionable_packagebody_function.sql diff --git a/sql/plsql/examples/editionable_packagespec_function.sql b/sql/plsql/more/editionable_packagespec_function.sql similarity index 100% rename from sql/plsql/examples/editionable_packagespec_function.sql rename to sql/plsql/more/editionable_packagespec_function.sql diff --git a/sql/plsql/examples/explain01.sql b/sql/plsql/more/explain01.sql similarity index 100% rename from sql/plsql/examples/explain01.sql rename to sql/plsql/more/explain01.sql diff --git a/sql/plsql/examples/fetch_clause01.sql b/sql/plsql/more/fetch_clause01.sql similarity index 100% rename from sql/plsql/examples/fetch_clause01.sql rename to sql/plsql/more/fetch_clause01.sql diff --git a/sql/plsql/examples/fetch_clause02.sql b/sql/plsql/more/fetch_clause02.sql similarity index 100% rename from sql/plsql/examples/fetch_clause02.sql rename to sql/plsql/more/fetch_clause02.sql diff --git a/sql/plsql/examples/fetch_clause03.sql b/sql/plsql/more/fetch_clause03.sql similarity index 100% rename from sql/plsql/examples/fetch_clause03.sql rename to sql/plsql/more/fetch_clause03.sql diff --git a/sql/plsql/examples/fetch_clause04.sql b/sql/plsql/more/fetch_clause04.sql similarity index 100% rename from sql/plsql/examples/fetch_clause04.sql rename to sql/plsql/more/fetch_clause04.sql diff --git a/sql/plsql/examples/fetch_statement.sql b/sql/plsql/more/fetch_statement.sql similarity index 100% rename from sql/plsql/examples/fetch_statement.sql rename to sql/plsql/more/fetch_statement.sql diff --git a/sql/plsql/examples/for_update01.sql b/sql/plsql/more/for_update01.sql similarity index 100% rename from sql/plsql/examples/for_update01.sql rename to sql/plsql/more/for_update01.sql diff --git a/sql/plsql/examples/for_update02.sql b/sql/plsql/more/for_update02.sql similarity index 100% rename from sql/plsql/examples/for_update02.sql rename to sql/plsql/more/for_update02.sql diff --git a/sql/plsql/examples/for_update03.sql b/sql/plsql/more/for_update03.sql similarity index 100% rename from sql/plsql/examples/for_update03.sql rename to sql/plsql/more/for_update03.sql diff --git a/sql/plsql/examples/for_update04.sql b/sql/plsql/more/for_update04.sql similarity index 100% rename from sql/plsql/examples/for_update04.sql rename to sql/plsql/more/for_update04.sql diff --git a/sql/plsql/examples/for_update05.sql b/sql/plsql/more/for_update05.sql similarity index 100% rename from sql/plsql/examples/for_update05.sql rename to sql/plsql/more/for_update05.sql diff --git a/sql/plsql/examples/for_update06.sql b/sql/plsql/more/for_update06.sql similarity index 100% rename from sql/plsql/examples/for_update06.sql rename to sql/plsql/more/for_update06.sql diff --git a/sql/plsql/examples/for_update07.sql b/sql/plsql/more/for_update07.sql similarity index 100% rename from sql/plsql/examples/for_update07.sql rename to sql/plsql/more/for_update07.sql diff --git a/sql/plsql/examples/for_update08.sql b/sql/plsql/more/for_update08.sql similarity index 100% rename from sql/plsql/examples/for_update08.sql rename to sql/plsql/more/for_update08.sql diff --git a/sql/plsql/examples/forall_bulk_rowcount.sql b/sql/plsql/more/forall_bulk_rowcount.sql similarity index 100% rename from sql/plsql/examples/forall_bulk_rowcount.sql rename to sql/plsql/more/forall_bulk_rowcount.sql diff --git a/sql/plsql/examples/forall_indices_of.sql b/sql/plsql/more/forall_indices_of.sql similarity index 100% rename from sql/plsql/examples/forall_indices_of.sql rename to sql/plsql/more/forall_indices_of.sql diff --git a/sql/plsql/examples/forall_statement_and_exception_handling.sql b/sql/plsql/more/forall_statement_and_exception_handling.sql similarity index 100% rename from sql/plsql/examples/forall_statement_and_exception_handling.sql rename to sql/plsql/more/forall_statement_and_exception_handling.sql diff --git a/sql/plsql/examples/function03.sql b/sql/plsql/more/function03.sql similarity index 100% rename from sql/plsql/examples/function03.sql rename to sql/plsql/more/function03.sql diff --git a/sql/plsql/examples/function05.sql b/sql/plsql/more/function05.sql similarity index 100% rename from sql/plsql/examples/function05.sql rename to sql/plsql/more/function05.sql diff --git a/sql/plsql/examples/function07.sql b/sql/plsql/more/function07.sql similarity index 100% rename from sql/plsql/examples/function07.sql rename to sql/plsql/more/function07.sql diff --git a/sql/plsql/examples/general_element_part.sql b/sql/plsql/more/general_element_part.sql similarity index 100% rename from sql/plsql/examples/general_element_part.sql rename to sql/plsql/more/general_element_part.sql diff --git a/sql/plsql/examples/groupby01.sql b/sql/plsql/more/groupby01.sql similarity index 100% rename from sql/plsql/examples/groupby01.sql rename to sql/plsql/more/groupby01.sql diff --git a/sql/plsql/examples/groupby02.sql b/sql/plsql/more/groupby02.sql similarity index 100% rename from sql/plsql/examples/groupby02.sql rename to sql/plsql/more/groupby02.sql diff --git a/sql/plsql/examples/groupby03.sql b/sql/plsql/more/groupby03.sql similarity index 100% rename from sql/plsql/examples/groupby03.sql rename to sql/plsql/more/groupby03.sql diff --git a/sql/plsql/examples/groupby04.sql b/sql/plsql/more/groupby04.sql similarity index 100% rename from sql/plsql/examples/groupby04.sql rename to sql/plsql/more/groupby04.sql diff --git a/sql/plsql/examples/groupby05.sql b/sql/plsql/more/groupby05.sql similarity index 100% rename from sql/plsql/examples/groupby05.sql rename to sql/plsql/more/groupby05.sql diff --git a/sql/plsql/examples/groupby06.sql b/sql/plsql/more/groupby06.sql similarity index 100% rename from sql/plsql/examples/groupby06.sql rename to sql/plsql/more/groupby06.sql diff --git a/sql/plsql/examples/groupby07.sql b/sql/plsql/more/groupby07.sql similarity index 100% rename from sql/plsql/examples/groupby07.sql rename to sql/plsql/more/groupby07.sql diff --git a/sql/plsql/examples/index.sql b/sql/plsql/more/index.sql similarity index 100% rename from sql/plsql/examples/index.sql rename to sql/plsql/more/index.sql diff --git a/sql/plsql/examples/insert_statement.sql b/sql/plsql/more/insert_statement.sql similarity index 100% rename from sql/plsql/examples/insert_statement.sql rename to sql/plsql/more/insert_statement.sql diff --git a/sql/plsql/examples/interval03.sql b/sql/plsql/more/interval03.sql similarity index 100% rename from sql/plsql/examples/interval03.sql rename to sql/plsql/more/interval03.sql diff --git a/sql/plsql/examples/join01.sql b/sql/plsql/more/join01.sql similarity index 100% rename from sql/plsql/examples/join01.sql rename to sql/plsql/more/join01.sql diff --git a/sql/plsql/examples/join02.sql b/sql/plsql/more/join02.sql similarity index 100% rename from sql/plsql/examples/join02.sql rename to sql/plsql/more/join02.sql diff --git a/sql/plsql/examples/join03.sql b/sql/plsql/more/join03.sql similarity index 100% rename from sql/plsql/examples/join03.sql rename to sql/plsql/more/join03.sql diff --git a/sql/plsql/examples/join04.sql b/sql/plsql/more/join04.sql similarity index 100% rename from sql/plsql/examples/join04.sql rename to sql/plsql/more/join04.sql diff --git a/sql/plsql/examples/join05.sql b/sql/plsql/more/join05.sql similarity index 100% rename from sql/plsql/examples/join05.sql rename to sql/plsql/more/join05.sql diff --git a/sql/plsql/examples/join06.sql b/sql/plsql/more/join06.sql similarity index 100% rename from sql/plsql/examples/join06.sql rename to sql/plsql/more/join06.sql diff --git a/sql/plsql/examples/join07.sql b/sql/plsql/more/join07.sql similarity index 100% rename from sql/plsql/examples/join07.sql rename to sql/plsql/more/join07.sql diff --git a/sql/plsql/examples/join08.sql b/sql/plsql/more/join08.sql similarity index 100% rename from sql/plsql/examples/join08.sql rename to sql/plsql/more/join08.sql diff --git a/sql/plsql/examples/join09.sql b/sql/plsql/more/join09.sql similarity index 100% rename from sql/plsql/examples/join09.sql rename to sql/plsql/more/join09.sql diff --git a/sql/plsql/examples/join10.sql b/sql/plsql/more/join10.sql similarity index 100% rename from sql/plsql/examples/join10.sql rename to sql/plsql/more/join10.sql diff --git a/sql/plsql/examples/join13.sql b/sql/plsql/more/join13.sql similarity index 100% rename from sql/plsql/examples/join13.sql rename to sql/plsql/more/join13.sql diff --git a/sql/plsql/examples/join14.sql b/sql/plsql/more/join14.sql similarity index 100% rename from sql/plsql/examples/join14.sql rename to sql/plsql/more/join14.sql diff --git a/sql/plsql/examples/join15.sql b/sql/plsql/more/join15.sql similarity index 100% rename from sql/plsql/examples/join15.sql rename to sql/plsql/more/join15.sql diff --git a/sql/plsql/examples/join16.sql b/sql/plsql/more/join16.sql similarity index 100% rename from sql/plsql/examples/join16.sql rename to sql/plsql/more/join16.sql diff --git a/sql/plsql/examples/join17.sql b/sql/plsql/more/join17.sql similarity index 100% rename from sql/plsql/examples/join17.sql rename to sql/plsql/more/join17.sql diff --git a/sql/plsql/examples/join18.sql b/sql/plsql/more/join18.sql similarity index 100% rename from sql/plsql/examples/join18.sql rename to sql/plsql/more/join18.sql diff --git a/sql/plsql/examples/join22.sql b/sql/plsql/more/join22.sql similarity index 100% rename from sql/plsql/examples/join22.sql rename to sql/plsql/more/join22.sql diff --git a/sql/plsql/examples/join23.sql b/sql/plsql/more/join23.sql similarity index 100% rename from sql/plsql/examples/join23.sql rename to sql/plsql/more/join23.sql diff --git a/sql/plsql/examples/json_query.sql b/sql/plsql/more/json_query.sql similarity index 100% rename from sql/plsql/examples/json_query.sql rename to sql/plsql/more/json_query.sql diff --git a/sql/plsql/examples/json_query.sql.tree b/sql/plsql/more/json_query.sql.tree similarity index 100% rename from sql/plsql/examples/json_query.sql.tree rename to sql/plsql/more/json_query.sql.tree diff --git a/sql/plsql/examples/json_sql.sql b/sql/plsql/more/json_sql.sql similarity index 100% rename from sql/plsql/examples/json_sql.sql rename to sql/plsql/more/json_sql.sql diff --git a/sql/plsql/examples/keywordasidentifier03.sql b/sql/plsql/more/keywordasidentifier03.sql similarity index 100% rename from sql/plsql/examples/keywordasidentifier03.sql rename to sql/plsql/more/keywordasidentifier03.sql diff --git a/sql/plsql/examples/keywordasidentifier04.sql b/sql/plsql/more/keywordasidentifier04.sql similarity index 100% rename from sql/plsql/examples/keywordasidentifier04.sql rename to sql/plsql/more/keywordasidentifier04.sql diff --git a/sql/plsql/examples/keywordasidentifier06.sql b/sql/plsql/more/keywordasidentifier06.sql similarity index 100% rename from sql/plsql/examples/keywordasidentifier06.sql rename to sql/plsql/more/keywordasidentifier06.sql diff --git a/sql/plsql/examples/like01.sql b/sql/plsql/more/like01.sql similarity index 100% rename from sql/plsql/examples/like01.sql rename to sql/plsql/more/like01.sql diff --git a/sql/plsql/long-running/aggregate01.sql b/sql/plsql/more/long-running/aggregate01.sql similarity index 100% rename from sql/plsql/long-running/aggregate01.sql rename to sql/plsql/more/long-running/aggregate01.sql diff --git a/sql/plsql/long-running/cast_multiset07.sql b/sql/plsql/more/long-running/cast_multiset07.sql similarity index 100% rename from sql/plsql/long-running/cast_multiset07.sql rename to sql/plsql/more/long-running/cast_multiset07.sql diff --git a/sql/plsql/long-running/datetime02.sql b/sql/plsql/more/long-running/datetime02.sql similarity index 100% rename from sql/plsql/long-running/datetime02.sql rename to sql/plsql/more/long-running/datetime02.sql diff --git a/sql/plsql/long-running/order_by07.sql b/sql/plsql/more/long-running/order_by07.sql similarity index 100% rename from sql/plsql/long-running/order_by07.sql rename to sql/plsql/more/long-running/order_by07.sql diff --git a/sql/plsql/long-running/query_factoring07.sql b/sql/plsql/more/long-running/query_factoring07.sql similarity index 100% rename from sql/plsql/long-running/query_factoring07.sql rename to sql/plsql/more/long-running/query_factoring07.sql diff --git a/sql/plsql/examples/materialized_views.sql b/sql/plsql/more/materialized_views.sql similarity index 100% rename from sql/plsql/examples/materialized_views.sql rename to sql/plsql/more/materialized_views.sql diff --git a/sql/plsql/examples/max_001.sql b/sql/plsql/more/max_001.sql similarity index 100% rename from sql/plsql/examples/max_001.sql rename to sql/plsql/more/max_001.sql diff --git a/sql/plsql/examples/merge01.sql b/sql/plsql/more/merge01.sql similarity index 100% rename from sql/plsql/examples/merge01.sql rename to sql/plsql/more/merge01.sql diff --git a/sql/plsql/examples/merge02.sql b/sql/plsql/more/merge02.sql similarity index 100% rename from sql/plsql/examples/merge02.sql rename to sql/plsql/more/merge02.sql diff --git a/sql/plsql/examples/merge03.sql b/sql/plsql/more/merge03.sql similarity index 100% rename from sql/plsql/examples/merge03.sql rename to sql/plsql/more/merge03.sql diff --git a/sql/plsql/examples/merge04.sql b/sql/plsql/more/merge04.sql similarity index 100% rename from sql/plsql/examples/merge04.sql rename to sql/plsql/more/merge04.sql diff --git a/sql/plsql/examples/merge05.sql b/sql/plsql/more/merge05.sql similarity index 100% rename from sql/plsql/examples/merge05.sql rename to sql/plsql/more/merge05.sql diff --git a/sql/plsql/examples/model_clause01.sql b/sql/plsql/more/model_clause01.sql similarity index 100% rename from sql/plsql/examples/model_clause01.sql rename to sql/plsql/more/model_clause01.sql diff --git a/sql/plsql/examples/model_clause02.sql b/sql/plsql/more/model_clause02.sql similarity index 100% rename from sql/plsql/examples/model_clause02.sql rename to sql/plsql/more/model_clause02.sql diff --git a/sql/plsql/examples/model_clause03.sql b/sql/plsql/more/model_clause03.sql similarity index 100% rename from sql/plsql/examples/model_clause03.sql rename to sql/plsql/more/model_clause03.sql diff --git a/sql/plsql/examples/model_clause04.sql b/sql/plsql/more/model_clause04.sql similarity index 100% rename from sql/plsql/examples/model_clause04.sql rename to sql/plsql/more/model_clause04.sql diff --git a/sql/plsql/examples/model_clause05.sql b/sql/plsql/more/model_clause05.sql similarity index 100% rename from sql/plsql/examples/model_clause05.sql rename to sql/plsql/more/model_clause05.sql diff --git a/sql/plsql/examples/multiset_operators.sql b/sql/plsql/more/multiset_operators.sql similarity index 100% rename from sql/plsql/examples/multiset_operators.sql rename to sql/plsql/more/multiset_operators.sql diff --git a/sql/plsql/examples/noaudit_statement.sql b/sql/plsql/more/noaudit_statement.sql similarity index 100% rename from sql/plsql/examples/noaudit_statement.sql rename to sql/plsql/more/noaudit_statement.sql diff --git a/sql/plsql/examples/not_member_of.sql b/sql/plsql/more/not_member_of.sql similarity index 100% rename from sql/plsql/examples/not_member_of.sql rename to sql/plsql/more/not_member_of.sql diff --git a/sql/plsql/examples/numbers01.sql b/sql/plsql/more/numbers01.sql similarity index 100% rename from sql/plsql/examples/numbers01.sql rename to sql/plsql/more/numbers01.sql diff --git a/sql/plsql/examples/nvl_001.sql b/sql/plsql/more/nvl_001.sql similarity index 100% rename from sql/plsql/examples/nvl_001.sql rename to sql/plsql/more/nvl_001.sql diff --git a/sql/plsql/examples/object_access01.sql b/sql/plsql/more/object_access01.sql similarity index 100% rename from sql/plsql/examples/object_access01.sql rename to sql/plsql/more/object_access01.sql diff --git a/sql/plsql/examples/object_access_expressions.sql b/sql/plsql/more/object_access_expressions.sql similarity index 100% rename from sql/plsql/examples/object_access_expressions.sql rename to sql/plsql/more/object_access_expressions.sql diff --git a/sql/plsql/examples/package_body.sql b/sql/plsql/more/package_body.sql similarity index 100% rename from sql/plsql/examples/package_body.sql rename to sql/plsql/more/package_body.sql diff --git a/sql/plsql/examples/package_body.sql.tree b/sql/plsql/more/package_body.sql.tree similarity index 100% rename from sql/plsql/examples/package_body.sql.tree rename to sql/plsql/more/package_body.sql.tree diff --git a/sql/plsql/examples/packagebody_function.sql b/sql/plsql/more/packagebody_function.sql similarity index 100% rename from sql/plsql/examples/packagebody_function.sql rename to sql/plsql/more/packagebody_function.sql diff --git a/sql/plsql/examples/packagespec_function.sql b/sql/plsql/more/packagespec_function.sql similarity index 100% rename from sql/plsql/examples/packagespec_function.sql rename to sql/plsql/more/packagespec_function.sql diff --git a/sql/plsql/examples/partitioned_tables.sql b/sql/plsql/more/partitioned_tables.sql similarity index 100% rename from sql/plsql/examples/partitioned_tables.sql rename to sql/plsql/more/partitioned_tables.sql diff --git a/sql/plsql/examples/pivot01.sql b/sql/plsql/more/pivot01.sql similarity index 100% rename from sql/plsql/examples/pivot01.sql rename to sql/plsql/more/pivot01.sql diff --git a/sql/plsql/examples/pivot02.sql b/sql/plsql/more/pivot02.sql similarity index 100% rename from sql/plsql/examples/pivot02.sql rename to sql/plsql/more/pivot02.sql diff --git a/sql/plsql/examples/pivot03.sql b/sql/plsql/more/pivot03.sql similarity index 100% rename from sql/plsql/examples/pivot03.sql rename to sql/plsql/more/pivot03.sql diff --git a/sql/plsql/examples/pivot04.sql b/sql/plsql/more/pivot04.sql similarity index 100% rename from sql/plsql/examples/pivot04.sql rename to sql/plsql/more/pivot04.sql diff --git a/sql/plsql/examples/pivot05.sql b/sql/plsql/more/pivot05.sql similarity index 100% rename from sql/plsql/examples/pivot05.sql rename to sql/plsql/more/pivot05.sql diff --git a/sql/plsql/examples/pivot06.sql b/sql/plsql/more/pivot06.sql similarity index 100% rename from sql/plsql/examples/pivot06.sql rename to sql/plsql/more/pivot06.sql diff --git a/sql/plsql/examples/pivot07.sql b/sql/plsql/more/pivot07.sql similarity index 100% rename from sql/plsql/examples/pivot07.sql rename to sql/plsql/more/pivot07.sql diff --git a/sql/plsql/examples/pivot08.sql b/sql/plsql/more/pivot08.sql similarity index 100% rename from sql/plsql/examples/pivot08.sql rename to sql/plsql/more/pivot08.sql diff --git a/sql/plsql/examples/pivot09.sql b/sql/plsql/more/pivot09.sql similarity index 100% rename from sql/plsql/examples/pivot09.sql rename to sql/plsql/more/pivot09.sql diff --git a/sql/plsql/examples/pivot10.sql b/sql/plsql/more/pivot10.sql similarity index 100% rename from sql/plsql/examples/pivot10.sql rename to sql/plsql/more/pivot10.sql diff --git a/sql/plsql/examples/pivot11.sql b/sql/plsql/more/pivot11.sql similarity index 100% rename from sql/plsql/examples/pivot11.sql rename to sql/plsql/more/pivot11.sql diff --git a/sql/plsql/examples/pivot12.sql b/sql/plsql/more/pivot12.sql similarity index 100% rename from sql/plsql/examples/pivot12.sql rename to sql/plsql/more/pivot12.sql diff --git a/sql/plsql/examples/pivot13.sql b/sql/plsql/more/pivot13.sql similarity index 100% rename from sql/plsql/examples/pivot13.sql rename to sql/plsql/more/pivot13.sql diff --git a/sql/plsql/examples/purge_statement.sql b/sql/plsql/more/purge_statement.sql similarity index 100% rename from sql/plsql/examples/purge_statement.sql rename to sql/plsql/more/purge_statement.sql diff --git a/sql/plsql/examples/query_factoring01.sql b/sql/plsql/more/query_factoring01.sql similarity index 100% rename from sql/plsql/examples/query_factoring01.sql rename to sql/plsql/more/query_factoring01.sql diff --git a/sql/plsql/examples/query_factoring02.sql b/sql/plsql/more/query_factoring02.sql similarity index 100% rename from sql/plsql/examples/query_factoring02.sql rename to sql/plsql/more/query_factoring02.sql diff --git a/sql/plsql/examples/query_factoring03.sql b/sql/plsql/more/query_factoring03.sql similarity index 100% rename from sql/plsql/examples/query_factoring03.sql rename to sql/plsql/more/query_factoring03.sql diff --git a/sql/plsql/examples/query_factoring04.sql b/sql/plsql/more/query_factoring04.sql similarity index 100% rename from sql/plsql/examples/query_factoring04.sql rename to sql/plsql/more/query_factoring04.sql diff --git a/sql/plsql/examples/query_factoring05.sql b/sql/plsql/more/query_factoring05.sql similarity index 100% rename from sql/plsql/examples/query_factoring05.sql rename to sql/plsql/more/query_factoring05.sql diff --git a/sql/plsql/examples/query_factoring06.sql b/sql/plsql/more/query_factoring06.sql similarity index 100% rename from sql/plsql/examples/query_factoring06.sql rename to sql/plsql/more/query_factoring06.sql diff --git a/sql/plsql/examples/query_factoring08.sql b/sql/plsql/more/query_factoring08.sql similarity index 100% rename from sql/plsql/examples/query_factoring08.sql rename to sql/plsql/more/query_factoring08.sql diff --git a/sql/plsql/examples/query_factoring09.sql b/sql/plsql/more/query_factoring09.sql similarity index 100% rename from sql/plsql/examples/query_factoring09.sql rename to sql/plsql/more/query_factoring09.sql diff --git a/sql/plsql/examples/query_factoring10.sql b/sql/plsql/more/query_factoring10.sql similarity index 100% rename from sql/plsql/examples/query_factoring10.sql rename to sql/plsql/more/query_factoring10.sql diff --git a/sql/plsql/examples/query_factoring11.sql b/sql/plsql/more/query_factoring11.sql similarity index 100% rename from sql/plsql/examples/query_factoring11.sql rename to sql/plsql/more/query_factoring11.sql diff --git a/sql/plsql/examples/quntitative_expression.sql b/sql/plsql/more/quntitative_expression.sql similarity index 100% rename from sql/plsql/examples/quntitative_expression.sql rename to sql/plsql/more/quntitative_expression.sql diff --git a/sql/plsql/examples/revoke_statement.sql b/sql/plsql/more/revoke_statement.sql similarity index 100% rename from sql/plsql/examples/revoke_statement.sql rename to sql/plsql/more/revoke_statement.sql diff --git a/sql/plsql/examples/round_001.sql b/sql/plsql/more/round_001.sql similarity index 100% rename from sql/plsql/examples/round_001.sql rename to sql/plsql/more/round_001.sql diff --git a/sql/plsql/examples/round_decode_001.sql b/sql/plsql/more/round_decode_001.sql similarity index 100% rename from sql/plsql/examples/round_decode_001.sql rename to sql/plsql/more/round_decode_001.sql diff --git a/sql/plsql/examples/row_number_001.sql b/sql/plsql/more/row_number_001.sql similarity index 100% rename from sql/plsql/examples/row_number_001.sql rename to sql/plsql/more/row_number_001.sql diff --git a/sql/plsql/examples/sample01.sql b/sql/plsql/more/sample01.sql similarity index 100% rename from sql/plsql/examples/sample01.sql rename to sql/plsql/more/sample01.sql diff --git a/sql/plsql/examples/select_all_some_any.sql b/sql/plsql/more/select_all_some_any.sql similarity index 100% rename from sql/plsql/examples/select_all_some_any.sql rename to sql/plsql/more/select_all_some_any.sql diff --git a/sql/plsql/examples/select_analytic_view.sql b/sql/plsql/more/select_analytic_view.sql similarity index 100% rename from sql/plsql/examples/select_analytic_view.sql rename to sql/plsql/more/select_analytic_view.sql diff --git a/sql/plsql/examples/select_cte.sql b/sql/plsql/more/select_cte.sql similarity index 100% rename from sql/plsql/examples/select_cte.sql rename to sql/plsql/more/select_cte.sql diff --git a/sql/plsql/examples/select_dense_rank.sql b/sql/plsql/more/select_dense_rank.sql similarity index 100% rename from sql/plsql/examples/select_dense_rank.sql rename to sql/plsql/more/select_dense_rank.sql diff --git a/sql/plsql/examples/select_flashback_query.sql b/sql/plsql/more/select_flashback_query.sql similarity index 100% rename from sql/plsql/examples/select_flashback_query.sql rename to sql/plsql/more/select_flashback_query.sql diff --git a/sql/plsql/examples/select_hierarchical_query.sql b/sql/plsql/more/select_hierarchical_query.sql similarity index 100% rename from sql/plsql/examples/select_hierarchical_query.sql rename to sql/plsql/more/select_hierarchical_query.sql diff --git a/sql/plsql/examples/select_time.sql b/sql/plsql/more/select_time.sql similarity index 100% rename from sql/plsql/examples/select_time.sql rename to sql/plsql/more/select_time.sql diff --git a/sql/plsql/examples/simple02.sql b/sql/plsql/more/simple02.sql similarity index 100% rename from sql/plsql/examples/simple02.sql rename to sql/plsql/more/simple02.sql diff --git a/sql/plsql/examples/simple03.sql b/sql/plsql/more/simple03.sql similarity index 100% rename from sql/plsql/examples/simple03.sql rename to sql/plsql/more/simple03.sql diff --git a/sql/plsql/examples/simple04.sql b/sql/plsql/more/simple04.sql similarity index 100% rename from sql/plsql/examples/simple04.sql rename to sql/plsql/more/simple04.sql diff --git a/sql/plsql/examples/simple05.sql b/sql/plsql/more/simple05.sql similarity index 100% rename from sql/plsql/examples/simple05.sql rename to sql/plsql/more/simple05.sql diff --git a/sql/plsql/examples/simple09.sql b/sql/plsql/more/simple09.sql similarity index 100% rename from sql/plsql/examples/simple09.sql rename to sql/plsql/more/simple09.sql diff --git a/sql/plsql/examples/simple12.sql b/sql/plsql/more/simple12.sql similarity index 100% rename from sql/plsql/examples/simple12.sql rename to sql/plsql/more/simple12.sql diff --git a/sql/plsql/examples/single_statement.sql b/sql/plsql/more/single_statement.sql similarity index 100% rename from sql/plsql/examples/single_statement.sql rename to sql/plsql/more/single_statement.sql diff --git a/sql/plsql/examples/string01.sql b/sql/plsql/more/string01.sql similarity index 100% rename from sql/plsql/examples/string01.sql rename to sql/plsql/more/string01.sql diff --git a/sql/plsql/examples/timing.sql b/sql/plsql/more/timing.sql similarity index 100% rename from sql/plsql/examples/timing.sql rename to sql/plsql/more/timing.sql diff --git a/sql/plsql/examples/timing.sql.tree b/sql/plsql/more/timing.sql.tree similarity index 100% rename from sql/plsql/examples/timing.sql.tree rename to sql/plsql/more/timing.sql.tree diff --git a/sql/plsql/examples/to_binary_double.sql b/sql/plsql/more/to_binary_double.sql similarity index 100% rename from sql/plsql/examples/to_binary_double.sql rename to sql/plsql/more/to_binary_double.sql diff --git a/sql/plsql/examples/to_binary_float.sql b/sql/plsql/more/to_binary_float.sql similarity index 100% rename from sql/plsql/examples/to_binary_float.sql rename to sql/plsql/more/to_binary_float.sql diff --git a/sql/plsql/examples/to_date.sql b/sql/plsql/more/to_date.sql similarity index 100% rename from sql/plsql/examples/to_date.sql rename to sql/plsql/more/to_date.sql diff --git a/sql/plsql/examples/to_dsinterval.sql b/sql/plsql/more/to_dsinterval.sql similarity index 100% rename from sql/plsql/examples/to_dsinterval.sql rename to sql/plsql/more/to_dsinterval.sql diff --git a/sql/plsql/examples/to_number.sql b/sql/plsql/more/to_number.sql similarity index 100% rename from sql/plsql/examples/to_number.sql rename to sql/plsql/more/to_number.sql diff --git a/sql/plsql/examples/to_timestamp.sql b/sql/plsql/more/to_timestamp.sql similarity index 100% rename from sql/plsql/examples/to_timestamp.sql rename to sql/plsql/more/to_timestamp.sql diff --git a/sql/plsql/examples/to_timestamp_tz.sql b/sql/plsql/more/to_timestamp_tz.sql similarity index 100% rename from sql/plsql/examples/to_timestamp_tz.sql rename to sql/plsql/more/to_timestamp_tz.sql diff --git a/sql/plsql/examples/to_yminterval.sql b/sql/plsql/more/to_yminterval.sql similarity index 100% rename from sql/plsql/examples/to_yminterval.sql rename to sql/plsql/more/to_yminterval.sql diff --git a/sql/plsql/examples/unified.sql b/sql/plsql/more/unified.sql similarity index 100% rename from sql/plsql/examples/unified.sql rename to sql/plsql/more/unified.sql diff --git a/sql/plsql/examples/union01.sql b/sql/plsql/more/union01.sql similarity index 100% rename from sql/plsql/examples/union01.sql rename to sql/plsql/more/union01.sql diff --git a/sql/plsql/examples/union02.sql b/sql/plsql/more/union02.sql similarity index 100% rename from sql/plsql/examples/union02.sql rename to sql/plsql/more/union02.sql diff --git a/sql/plsql/examples/union03.sql b/sql/plsql/more/union03.sql similarity index 100% rename from sql/plsql/examples/union03.sql rename to sql/plsql/more/union03.sql diff --git a/sql/plsql/examples/union04.sql b/sql/plsql/more/union04.sql similarity index 100% rename from sql/plsql/examples/union04.sql rename to sql/plsql/more/union04.sql diff --git a/sql/plsql/examples/union05.sql b/sql/plsql/more/union05.sql similarity index 100% rename from sql/plsql/examples/union05.sql rename to sql/plsql/more/union05.sql diff --git a/sql/plsql/examples/union06.sql b/sql/plsql/more/union06.sql similarity index 100% rename from sql/plsql/examples/union06.sql rename to sql/plsql/more/union06.sql diff --git a/sql/plsql/examples/union07.sql b/sql/plsql/more/union07.sql similarity index 100% rename from sql/plsql/examples/union07.sql rename to sql/plsql/more/union07.sql diff --git a/sql/plsql/examples/union08.sql b/sql/plsql/more/union08.sql similarity index 100% rename from sql/plsql/examples/union08.sql rename to sql/plsql/more/union08.sql diff --git a/sql/plsql/examples/union09.sql b/sql/plsql/more/union09.sql similarity index 100% rename from sql/plsql/examples/union09.sql rename to sql/plsql/more/union09.sql diff --git a/sql/plsql/examples/union10.sql b/sql/plsql/more/union10.sql similarity index 100% rename from sql/plsql/examples/union10.sql rename to sql/plsql/more/union10.sql diff --git a/sql/plsql/examples/validate_conversion.sql b/sql/plsql/more/validate_conversion.sql similarity index 100% rename from sql/plsql/examples/validate_conversion.sql rename to sql/plsql/more/validate_conversion.sql diff --git a/sql/plsql/examples/values_clause.sql b/sql/plsql/more/values_clause.sql similarity index 100% rename from sql/plsql/examples/values_clause.sql rename to sql/plsql/more/values_clause.sql diff --git a/sql/plsql/examples/varray_type_def.sql b/sql/plsql/more/varray_type_def.sql similarity index 100% rename from sql/plsql/examples/varray_type_def.sql rename to sql/plsql/more/varray_type_def.sql diff --git a/sql/plsql/examples/views.sql b/sql/plsql/more/views.sql similarity index 100% rename from sql/plsql/examples/views.sql rename to sql/plsql/more/views.sql diff --git a/sql/plsql/examples/whenever_sqlerror.sql b/sql/plsql/more/whenever_sqlerror.sql similarity index 100% rename from sql/plsql/examples/whenever_sqlerror.sql rename to sql/plsql/more/whenever_sqlerror.sql diff --git a/sql/plsql/examples/whenever_sqlerror.sql.tree b/sql/plsql/more/whenever_sqlerror.sql.tree similarity index 100% rename from sql/plsql/examples/whenever_sqlerror.sql.tree rename to sql/plsql/more/whenever_sqlerror.sql.tree diff --git a/sql/plsql/examples/xml_function.sql b/sql/plsql/more/xml_function.sql similarity index 100% rename from sql/plsql/examples/xml_function.sql rename to sql/plsql/more/xml_function.sql diff --git a/sql/plsql/examples/xmltable01.sql b/sql/plsql/more/xmltable01.sql similarity index 100% rename from sql/plsql/examples/xmltable01.sql rename to sql/plsql/more/xmltable01.sql diff --git a/sql/plsql/examples/xmltable03.sql b/sql/plsql/more/xmltable03.sql similarity index 100% rename from sql/plsql/examples/xmltable03.sql rename to sql/plsql/more/xmltable03.sql diff --git a/sql/plsql/te.sh b/sql/plsql/te.sh new file mode 100644 index 0000000000..fe43deffad --- /dev/null +++ b/sql/plsql/te.sh @@ -0,0 +1,10 @@ + +# Gather data. +for t in Antlr4ng CSharp Cpp Dart Go Java JavaScript TypeScript Python3 +do + dotnet trgen -t $t + pushd Generated-$t-0 + make + bash perf.sh 5 group + popd +done diff --git a/sql/plsql/times.svg b/sql/plsql/times.svg new file mode 100644 index 0000000000..c274bc3844 --- /dev/null +++ b/sql/plsql/times.svg @@ -0,0 +1,200 @@ + + + Figure 1 + +Creator: GL2PS 1.4.2, (C) 1999-2020 C. Geuzaine +For: Octave +CreationDate: Fri Dec 20 07:20:45 2024 + + + + + + + + + + + + + + + + + + + + + 1 + + + 2 + + + 3 + + + 4 + + + 5 + + + 6 + + + 7 + + + 8 + + + 9 + + + + + + + + + 0 + + + 20 + + + 40 + + + 60 + + + 80 + + + 100 + + + + + Target + + + Runtime (s) + + + Comparison of Runtimes for PlSqlParser + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Antlr4ng + + + + + CSharp + + + + + Cpp + + + + + Dart + + + + + Go + + + + + Java + + + + + JavaScript + + + + + TypeScript + + + + + Python3 + + + +