From b45159f6eedf1e41d2cc785fa5875d4d6f69524d Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Mon, 16 Dec 2024 20:41:43 -0500 Subject: [PATCH 01/21] Add TypeScript port back in; it works. --- sql/plsql/desc.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/plsql/desc.xml b/sql/plsql/desc.xml index 876f8b1562..5a31bb1a8c 100644 --- a/sql/plsql/desc.xml +++ b/sql/plsql/desc.xml @@ -1,7 +1,7 @@ ^4.12.0 - CSharp;Java;JavaScript;Python3 + CSharp;Java;JavaScript;Python3;TypeScript full CSharp;Java @@ -9,7 +9,7 @@ hw - JavaScript;Python3 + JavaScript;Python3;TypeScript hw-examples From 6b5c695fdf8a22eba624c2fc10050a9d6f1dcd5a Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Tue, 17 Dec 2024 08:18:32 -0500 Subject: [PATCH 02/21] Add Antlr4ng port. Change .g4s to be proper target agnostic. "postinclude" does not work for any targets other than hardwired C++. We need "includes" for Antlr4ng. Change grammar to avoid symbol conflicts with C++ runtime headers. --- sql/plsql/Antlr4ng/PlSqlLexerBase.ts | 11 +++++++++ sql/plsql/Antlr4ng/PlSqlParserBase.ts | 32 ++++++++++++++++++++++++ sql/plsql/Antlr4ng/transformGrammar.py | 33 +++++++++++++++++++++++++ sql/plsql/Cpp/PlSqlLexerBase.h | 10 +++----- sql/plsql/Cpp/transformGrammar.py | 34 ++++++++++++++++++++++++++ sql/plsql/PlSqlLexer.g4 | 8 +++--- sql/plsql/PlSqlParser.g4 | 26 +++++++++----------- sql/plsql/desc.xml | 6 ++--- 8 files changed, 132 insertions(+), 28 deletions(-) create mode 100644 sql/plsql/Antlr4ng/PlSqlLexerBase.ts create mode 100644 sql/plsql/Antlr4ng/PlSqlParserBase.ts create mode 100644 sql/plsql/Antlr4ng/transformGrammar.py create mode 100644 sql/plsql/Cpp/transformGrammar.py 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..be6b84f4d2 --- /dev/null +++ b/sql/plsql/Antlr4ng/PlSqlParserBase.ts @@ -0,0 +1,32 @@ +import { Parser, TokenStream, CommonTokenStream, Recognizer } from 'antlr4ng'; + +export abstract class PlSqlParserBase extends Parser { + + _isVersion10: boolean; + _isVersion12: boolean; + self: PlSqlParserBase; + + constructor(input: TokenStream) { + super(input); + this._isVersion10 = false; + this._isVersion12 = true; + this.self = this; + } + + 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/Cpp/PlSqlLexerBase.h b/sql/plsql/Cpp/PlSqlLexerBase.h index 32ed7ab1b1..ef9dc48879 100644 --- a/sql/plsql/Cpp/PlSqlLexerBase.h +++ b/sql/plsql/Cpp/PlSqlLexerBase.h @@ -1,12 +1,12 @@ -#ifndef PLSQLLEXERBASE_H -#define PLSQLLEXERBASE_H +#pragma once +#include "antlr4-runtime.h" #include "antlr4-runtime.h" class PlSqlLexerBase : public antlr4::Lexer { public: - PlSqlLexerBase(antlr4::CharStream *input) : Lexer(input), self(*this) { } + PlSqlLexerBase(antlr4::CharStream *input) : Lexer(input), self(*this) { }; public: PlSqlLexerBase & self; @@ -16,7 +16,5 @@ class PlSqlLexerBase : public antlr4::Lexer { int la = _input->LA(pos); return la == -1 || la == '\n'; - } + }; }; - -#endif \ No newline at end of file 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/PlSqlLexer.g4 b/sql/plsql/PlSqlLexer.g4 index 8abcd21061..89feba3d47 100644 --- a/sql/plsql/PlSqlLexer.g4 +++ b/sql/plsql/PlSqlLexer.g4 @@ -29,9 +29,7 @@ options { caseInsensitive = true; } -@lexer::postinclude { -#include -} +// 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 44785afbff..0e2034edcd 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 @@ -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 @@ -6681,7 +6679,7 @@ numeric_function ; listagg_overflow_clause - : ON OVERFLOW (ERROR | TRUNCATE) CHAR_STRING? ((WITH | WITHOUT) COUNT)? + : ON OVERFLOW_ (ERROR | TRUNCATE) CHAR_STRING? ((WITH | WITHOUT) COUNT)? ; other_function @@ -8632,7 +8630,7 @@ non_reserved_keywords_pre12c | NAMED | NAME | NAMESPACE - | NAN + | NAN_ | NANVL | NATIONAL | NATIVE_FULL_OUTER_JOIN @@ -8872,7 +8870,7 @@ non_reserved_keywords_pre12c | OUTLINE_LEAF | OUTLINE | OUT_OF_LINE - | OVERFLOW + | OVERFLOW_ | OVERFLOW_NOMOVE | OVERLAPS | OVER diff --git a/sql/plsql/desc.xml b/sql/plsql/desc.xml index 5a31bb1a8c..0d02ae52a7 100644 --- a/sql/plsql/desc.xml +++ b/sql/plsql/desc.xml @@ -1,10 +1,10 @@ ^4.12.0 - CSharp;Java;JavaScript;Python3;TypeScript + Antlr4ng;CSharp;Java;JavaScript;Python3;TypeScript full - CSharp;Java + Antlr4ng;CSharp;Java examples @@ -14,7 +14,7 @@ examples-sql-script - CSharp;Java + Antlr4ng;CSharp;Java examples-sql-script From 8a2b8c1afe97741e1d134d2ac9ca7f60ea7e74f2 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Tue, 17 Dec 2024 10:11:09 -0500 Subject: [PATCH 03/21] Fix Cpp port. * We must compile with /bigobj. The generated parser is huge. This may not work on linux. --- sql/plsql/Cpp/CMakeLists.txt | 49 ++++++++++++++++++++++++++++++++++ sql/plsql/Cpp/PlSqlLexerBase.h | 2 -- 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 sql/plsql/Cpp/CMakeLists.txt diff --git a/sql/plsql/Cpp/CMakeLists.txt b/sql/plsql/Cpp/CMakeLists.txt new file mode 100644 index 0000000000..cfd8f429c3 --- /dev/null +++ b/sql/plsql/Cpp/CMakeLists.txt @@ -0,0 +1,49 @@ +# Generated from trgen 0.23.11 + +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( + PlSqlLexer + PlSqlLexer.g4 + LEXER + ) +antlr_target( + PlSqlParser + PlSqlParser.g4 + PARSER + DEPENDS_ANTLR PlSqlLexer + COMPILE_FLAGS -lib ${ANTLR_PlSqlLexer_OUTPUT_DIR} + ) + +include_directories(${ANTLR_PlSqlLexer_OUTPUT_DIR}) +include_directories(${ANTLR_PlSqlParser_OUTPUT_DIR}) + +add_executable(Test + Test.cpp + ErrorListener.cpp + ErrorListener.h +${ANTLR_PlSqlLexer_CXX_OUTPUTS} + ${ANTLR_PlSqlParser_CXX_OUTPUTS} + ) + + +target_compile_options(Test PUBLIC /MT) + +target_link_libraries(Test antlr4_static Threads::Threads) diff --git a/sql/plsql/Cpp/PlSqlLexerBase.h b/sql/plsql/Cpp/PlSqlLexerBase.h index ef9dc48879..d4a4141e1d 100644 --- a/sql/plsql/Cpp/PlSqlLexerBase.h +++ b/sql/plsql/Cpp/PlSqlLexerBase.h @@ -1,8 +1,6 @@ #pragma once #include "antlr4-runtime.h" -#include "antlr4-runtime.h" - class PlSqlLexerBase : public antlr4::Lexer { public: From 2585d1c306cc89c11a6aed476c95152f77d44784 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Tue, 17 Dec 2024 10:14:00 -0500 Subject: [PATCH 04/21] Test Cpp port now. --- sql/plsql/desc.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/plsql/desc.xml b/sql/plsql/desc.xml index 0d02ae52a7..17210388a2 100644 --- a/sql/plsql/desc.xml +++ b/sql/plsql/desc.xml @@ -1,10 +1,10 @@ ^4.12.0 - Antlr4ng;CSharp;Java;JavaScript;Python3;TypeScript + Antlr4ng;Cpp;CSharp;Java;JavaScript;Python3;TypeScript full - Antlr4ng;CSharp;Java + Antlr4ng;Cpp;CSharp;Java examples @@ -14,7 +14,7 @@ examples-sql-script - Antlr4ng;CSharp;Java + Antlr4ng;Cpp;CSharp;Java examples-sql-script From 2d450f1da7da9f2e9d35cc3f8bc1ec7f381e6b11 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Tue, 17 Dec 2024 10:33:00 -0500 Subject: [PATCH 05/21] Make CMakeLists.txt a template so we can switch compiler options depend on OS. --- sql/plsql/Cpp/{CMakeLists.txt => st.CMakeLists.txt} | 3 +++ 1 file changed, 3 insertions(+) rename sql/plsql/Cpp/{CMakeLists.txt => st.CMakeLists.txt} (97%) diff --git a/sql/plsql/Cpp/CMakeLists.txt b/sql/plsql/Cpp/st.CMakeLists.txt similarity index 97% rename from sql/plsql/Cpp/CMakeLists.txt rename to sql/plsql/Cpp/st.CMakeLists.txt index cfd8f429c3..84070b9cfb 100644 --- a/sql/plsql/Cpp/CMakeLists.txt +++ b/sql/plsql/Cpp/st.CMakeLists.txt @@ -9,8 +9,11 @@ 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) From a6ec8380eb1158d79b7345568f6d5af366cedfb1 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Wed, 18 Dec 2024 07:45:04 -0500 Subject: [PATCH 06/21] Update to latest templates. --- .config/dotnet-tools.json | 54 ++++----- _scripts/templates/Antlr4ng/st.Test.ts | 2 +- _scripts/templates/Antlr4ng/st.perf.sh | 99 ++++++++++++++-- _scripts/templates/Antlr4ng/st.run.sh | 3 - .../templates/CSharp/MyParserInterpreter.cs | 2 - _scripts/templates/CSharp/st.MyParser.cs | 9 +- _scripts/templates/CSharp/st.Test.cs | 23 ++-- _scripts/templates/CSharp/st.perf.sh | 106 +++++++++++++++--- _scripts/templates/Cpp/st.Test.cpp | 4 +- _scripts/templates/Cpp/st.perf.sh | 99 ++++++++++++++-- _scripts/templates/Dart/st.Test.dart | 6 +- _scripts/templates/Dart/st.perf.sh | 101 ++++++++++++++--- _scripts/templates/Go/Test.go.st | 10 +- _scripts/templates/Go/st.perf.sh | 96 +++++++++++++--- _scripts/templates/Java/st.Test.java | 2 +- _scripts/templates/Java/st.perf.sh | 98 +++++++++++++--- _scripts/templates/JavaScript/st.Test.js | 4 +- _scripts/templates/JavaScript/st.perf.sh | 99 ++++++++++++++-- _scripts/templates/PHP/st.Test.php | 2 +- _scripts/templates/PHP/st.perf.sh | 99 ++++++++++++++-- _scripts/templates/Python3/st.Test.py | 4 +- _scripts/templates/Python3/st.perf.sh | 99 ++++++++++++++-- _scripts/templates/TypeScript/st.Test.ts | 2 +- _scripts/templates/TypeScript/st.perf.sh | 99 ++++++++++++++-- _scripts/templates/TypeScript/st.run.sh | 3 - 25 files changed, 920 insertions(+), 205 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 5160991303..76a13189d4 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,189 +3,189 @@ "isRoot": true, "tools": { "trcaret": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trcaret" ], "rollForward": false }, "trcover": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trcover" ], "rollForward": false }, "trgen": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trgen" ], "rollForward": false }, "trglob": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trglob" ], "rollForward": false }, "triconv": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "triconv" ], "rollForward": false }, "trparse": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trparse" ], "rollForward": false }, "trquery": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trquery" ], "rollForward": false }, "trtext": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trtext" ], "rollForward": false }, "trwdog": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trwdog" ], "rollForward": false }, "trxgrep": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trxgrep" ], "rollForward": false }, "trxml": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trxml" ], "rollForward": false }, "trxml2": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trxml2" ], "rollForward": false }, "trclonereplace": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trclonereplace" ], "rollForward": false }, "trcombine": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trcombine" ], "rollForward": false }, "trconvert": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trconvert" ], "rollForward": false }, "trfoldlit": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trfoldlit" ], "rollForward": false }, "trgenvsc": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trgenvsc" ], "rollForward": false }, "tritext": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "tritext" ], "rollForward": false }, "trjson": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trjson" ], "rollForward": false }, "trperf": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trperf" ], "rollForward": false }, "trrename": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trrename" ], "rollForward": false }, "trsort": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trsort" ], "rollForward": false }, "trsplit": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trsplit" ], "rollForward": false }, "trsponge": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trsponge" ], "rollForward": false }, "trtokens": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trtokens" ], "rollForward": false }, "trtree": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trtree" ], "rollForward": false }, "trunfold": { - "version": "0.23.7", + "version": "0.23.11", "commands": [ "trunfold" ], diff --git a/_scripts/templates/Antlr4ng/st.Test.ts b/_scripts/templates/Antlr4ng/st.Test.ts index b1f5022a5d..4d11e228bd 100644 --- a/_scripts/templates/Antlr4ng/st.Test.ts +++ b/_scripts/templates/Antlr4ng/st.Test.ts @@ -149,7 +149,7 @@ function main() { } timer.stop(); var t = timer.time().m * 60 + timer.time().s + timer.time().ms / 1000; - if (!quiet) console.error('Total Time: ' + t); + if (!quiet) console.error(prefix + 'Total Time: ' + t); } process.exitCode = error_code; } diff --git a/_scripts/templates/Antlr4ng/st.perf.sh b/_scripts/templates/Antlr4ng/st.perf.sh index 04fe129651..20aed0a918 100644 --- a/_scripts/templates/Antlr4ng/st.perf.sh +++ b/_scripts/templates/Antlr4ng/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for Antlr4ng" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -27,20 +77,45 @@ then exit 0 fi +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt + # Parse all input files. # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - trwdog sh -c "ts-node Test.js -prefix individual $f" >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog sh -c "exec npx tsx Test.js -prefix individual $f" >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + # Group parsing. -echo "${files[*]}" | trwdog sh -c "ts-node Test.js -x -prefix group" >> parse.txt 2>&1 -status=$? +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then + for ((i=1; i\<=n; i++)) + do + echo "${files[*]}" | dotnet trwdog sh -c "exec npx tsx Test.js -x -prefix group" >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/Antlr4ng/st.run.sh b/_scripts/templates/Antlr4ng/st.run.sh index 1090e59af9..d4c0ebd577 100644 --- a/_scripts/templates/Antlr4ng/st.run.sh +++ b/_scripts/templates/Antlr4ng/st.run.sh @@ -1,7 +1,4 @@ # Generated from trgen -set -e -set -x - exec npx tsx Test.js "$@" exit $? diff --git a/_scripts/templates/CSharp/MyParserInterpreter.cs b/_scripts/templates/CSharp/MyParserInterpreter.cs index 79ed6fa41f..739dc5b90d 100644 --- a/_scripts/templates/CSharp/MyParserInterpreter.cs +++ b/_scripts/templates/CSharp/MyParserInterpreter.cs @@ -28,8 +28,6 @@ /// public class MyParserInterpreter : Parser { - private readonly string _grammarFileName; - private readonly ATN _atn; private readonly DFA[] _decisionToDFA; diff --git a/_scripts/templates/CSharp/st.MyParser.cs b/_scripts/templates/CSharp/st.MyParser.cs index 5fb36aae24..246ab82e2a 100644 --- a/_scripts/templates/CSharp/st.MyParser.cs +++ b/_scripts/templates/CSharp/st.MyParser.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using Antlr4.Runtime; using System.IO; @@ -20,7 +21,7 @@ public MyParser(ITokenStream input) input); } - public List\ getAllPossibleParseTrees( + public List\> getAllPossibleParseTrees( int decision, BitSet alts, int startIndex, @@ -28,8 +29,8 @@ public MyParser(ITokenStream input) int startRuleIndex) { _ParserInterpreter.Interpreter.PredictionMode = PredictionMode.LL_EXACT_AMBIG_DETECTION; - var trees = new List\(); - + var trees = new List\>(); + if ( stopIndex>=(_tokens.Size - 1) ) { // if we are pointing at EOF token // EOF is not in tree, so must be 1 less than last non-EOF token stopIndex = _tokens.Size - 2; @@ -45,7 +46,7 @@ public MyParser(ITokenStream input) _ParserInterpreter.Reset(); _ParserInterpreter.AddDecisionOverride(decision, startIndex, alt); ParserRuleContext t = _ParserInterpreter.Parse(startRuleIndex); - trees.Add(t); + trees.Add(new Tuple\("d=" + decision + ".a=" + alt, t)); alt = alts.NextSetBit(alt+1); } return trees; diff --git a/_scripts/templates/CSharp/st.Test.cs b/_scripts/templates/CSharp/st.Test.cs index 9a0bb66b21..4a179897e5 100644 --- a/_scripts/templates/CSharp/st.Test.cs +++ b/_scripts/templates/CSharp/st.Test.cs @@ -59,16 +59,15 @@ public static IParseTree Parse2() return tree; } - public static List\>> Parse3() + public static List\> Parse3() { Parser.Profile = true; var tree = Parser.(); var decisions = Parser.ParseInfo.getDecisionInfo().Where(d => d.ambiguities.Any()).ToList(); - var result = new List\>>(); + var result = new List\>(); foreach (var decision in decisions) { var am = decision.ambiguities; - var trees = new List\(); foreach (AmbiguityInfo ai in am) { var parser_decision = ai.decision; @@ -79,15 +78,17 @@ public static IParseTree Parse2() .Where(pair => (pair.value == "")) .Select(pair => pair.index).First(); var parser_startRuleIndex = p; - var parser_trees = ((MyParser)Parser).getAllPossibleParseTrees( + var parse_trees = ((MyParser)Parser).getAllPossibleParseTrees( parser_decision, parser_alts, parser_startIndex, parser_stopIndex, - parser_startRuleIndex); - trees.AddRange(parser_trees); + parser_startRuleIndex); + foreach (var t in parse_trees) + { + result.Add(new Tuple\(t.Item1, t.Item2)); + } } - result.Add(new Tuple\>(decision.decision, trees)); } Input = Lexer.InputStream.ToString(); TokenStream = Parser.TokenStream; @@ -244,7 +245,7 @@ static void Main(string[] args) ParseString(inputs[f], f); } DateTime after = DateTime.Now; - if (!quiet) System.Console.Error.WriteLine("Total Time: " + (after - before).TotalSeconds); + if (!quiet) System.Console.Error.WriteLine(prefix + "Total Time: " + (after - before).TotalSeconds); } Environment.ExitCode = exit_code; } @@ -373,15 +374,15 @@ static void DoParse(ICharStream str, string input_name, int row_number) .Where(pair => (pair.value == "")) .Select(pair => pair.index).First(); var parser_startRuleIndex = p; - var parser_trees = parser.getAllPossibleParseTrees( + var parse_trees = parser.getAllPossibleParseTrees( parser_decision, parser_alts, parser_startIndex, parser_stopIndex, parser_startRuleIndex); - foreach (var parser_tree in parser_trees) + foreach (var tuple in parse_trees) { - System.Console.WriteLine(parser_tree.ToStringTree(parser)); + System.Console.WriteLine(tuple.Item1 + " " + tuple.Item2.ToStringTree(parser)); System.Console.WriteLine(); } } diff --git a/_scripts/templates/CSharp/st.perf.sh b/_scripts/templates/CSharp/st.perf.sh index 2efdfbd4aa..c9ca7c1651 100644 --- a/_scripts/templates/CSharp/st.perf.sh +++ b/_scripts/templates/CSharp/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for CSharp" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -27,34 +77,54 @@ then exit 0 fi -n=10 +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt + +# Perform trperf to find ambiguities for each file. +echo Ambiguities per file: >> parse.txt +echo "${files[*]}" \ + | dotnet trperf -x -c aF \ + | grep -v '^0' \ + | awk '{sum[$2] += $1} END {for (key in sum) print sum[key], key}' \ + | sort -k1 -n >> parse.txt +echo "" >> parse.txt # Parse all input files. # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - # Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog ./bin/Debug/net8.0/Test.exeTest -prefix individual $f >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + +# Group parsing. +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then for ((i=1; i\<=n; i++)) do - trwdog ./bin/Debug/net8.0/Test.exeTest -prefix individual $f >> parse.txt 2>&1 + echo "${files[*]}" | dotnet trwdog ./bin/Debug/net8.0/Test.exeTest -x -prefix group >> parse.txt 2>&1 xxx="$?" if [ "$xxx" -ne 0 ] then status="$xxx" fi done -done -# Group parsing. -# Loop from 1 to n and execute the body of the loop each time -for ((i=1; i\<=n; i++)) -do - echo "${files[*]}" | trwdog ./bin/Debug/net8.0/Test.exeTest -x -prefix group >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/Cpp/st.Test.cpp b/_scripts/templates/Cpp/st.Test.cpp index 9e9e925d9d..7935d28e89 100644 --- a/_scripts/templates/Cpp/st.Test.cpp +++ b/_scripts/templates/Cpp/st.Test.cpp @@ -60,6 +60,8 @@ void DoParse(antlr4::CharStream* str, std::string input_name, int row_number) for (int i = 0; ; ++i) { auto token = lexer->nextToken(); + auto ctoken = (antlr4::CommonToken*)(token.get()); + ctoken->setTokenIndex(i); std::cerr \<\< token->toString() \<\< std::endl; if (token->getType() == antlr4::IntStream::EOF) break; @@ -219,7 +221,7 @@ int TryParse(std::vector\& args) } auto after = std::chrono::steady_clock::now(); auto duration = std::chrono::duration_cast\(after - before); - if (! quiet) std::cerr \<\< "Total Time: " \<\< formatDurationSeconds(duration.count()) \<\< std::endl; + if (! quiet) std::cerr \<\< prefix \<\< "Total Time: " \<\< formatDurationSeconds(duration.count()) \<\< std::endl; } return error_code; } diff --git a/_scripts/templates/Cpp/st.perf.sh b/_scripts/templates/Cpp/st.perf.sh index e20ea1023f..a0682f6148 100644 --- a/_scripts/templates/Cpp/st.perf.sh +++ b/_scripts/templates/Cpp/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for Cpp" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -27,20 +77,45 @@ then exit 0 fi +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt + # Parse all input files. # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - trwdog ./build/Release/ -prefix individual $f >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog ./build/Release/ -prefix individual $f >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + # Group parsing. -echo "${files[*]}" | trwdog ./build/Release/ -x -prefix group >> parse.txt 2>&1 -status=$? +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then + for ((i=1; i\<=n; i++)) + do + echo "${files[*]}" | dotnet trwdog ./build/Release/ -x -prefix group >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/Dart/st.Test.dart b/_scripts/templates/Dart/st.Test.dart index d15752efd4..750e089cc5 100644 --- a/_scripts/templates/Dart/st.Test.dart +++ b/_scripts/templates/Dart/st.Test.dart @@ -87,7 +87,7 @@ void main(List\ args) async { } s.stop(); var et = s.elapsedMilliseconds / 1000.0; - if (!quiet) stderr.writeln("Total Time: " + et.toString()); + if (!quiet) stderr.writeln(prefix + "Total Time: " + et.toString()); } exit(error_code); } @@ -128,11 +128,13 @@ Future\ DoParse(CharStream str, String input_name, int row_number) async for (int i = 0; ; ++i) { var token = lexer.nextToken(); + var wtoken = token as CommonToken; + wtoken.tokenIndex = i; stderr.writeln(token.toString()); if (token.type == -1) break; } - lexer.reset(); + lexer.reset(true); } var tokens = CommonTokenStream(lexer); var parser = (tokens); diff --git a/_scripts/templates/Dart/st.perf.sh b/_scripts/templates/Dart/st.perf.sh index f35662077f..cf6ec00006 100644 --- a/_scripts/templates/Dart/st.perf.sh +++ b/_scripts/templates/Dart/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for Dart" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -11,7 +61,7 @@ files=() for f in $files2 do if [ -d "$f" ]; then continue; fi - dotnet triconv -- -f utf-8 $f > /dev/null 2>&1 + dotnet triconv -f utf-8 $f > /dev/null 2>&1 if [ "$?" = "0" ] then files+=( $f ) @@ -27,20 +77,45 @@ then exit 0 fi +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt + # Parse all input files. # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - trwdog ./Test.exe -prefix individual $f >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog ./Test.exe -prefix individual $f >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + # Group parsing. -echo "${files[*]}" | trwdog ./Test.exe -x -prefix group >> parse.txt 2>&1 -status=$? +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then + for ((i=1; i\<=n; i++)) + do + echo "${files[*]}" | dotnet trwdog ./Test.exe -x -prefix group >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/Go/Test.go.st b/_scripts/templates/Go/Test.go.st index 91d3fc76e2..43008465d3 100644 --- a/_scripts/templates/Go/Test.go.st +++ b/_scripts/templates/Go/Test.go.st @@ -111,7 +111,7 @@ func main() { } elapsed := time.Since(start) if ! quiet { - fmt.Fprintf(os.Stderr, "Total Time: %.3f s", elapsed.Seconds()) + fmt.Fprintf(os.Stderr, "%sTotal Time: %.3f", prefix, elapsed.Seconds()) fmt.Fprintln(os.Stderr) } } @@ -155,16 +155,14 @@ func DoParse(str antlr.CharStream, input_name string, row_number int) { j := 0 for { t := lexer.NextToken() - fmt.Fprintf(os.Stderr, "%d ", j) - fmt.Fprintf(os.Stderr, " ") - // missing fmt.Println(t.String()) - fmt.Fprintf(os.Stderr, "%d ", t.GetText()) + t.SetTokenIndex(j) + fmt.Fprintf(os.Stderr, "%s\n", t.String()) if t.GetTokenType() == antlr.TokenEOF { break } j = j + 1 } - // missing lexer.Reset() + lexer.Reset() } // Requires additional 0?? var tokens = antlr.NewCommonTokenStream(lexer, 0) diff --git a/_scripts/templates/Go/st.perf.sh b/_scripts/templates/Go/st.perf.sh index e87b094d29..2254d5f58b 100644 --- a/_scripts/templates/Go/st.perf.sh +++ b/_scripts/templates/Go/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for Go" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -27,33 +77,45 @@ then exit 0 fi -n=10 +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt # Parse all input files. # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - # Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog ./Test.exeTest -prefix individual $f >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + +# Group parsing. +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then for ((i=1; i\<=n; i++)) do - trwdog ./Test.exeTest -prefix individual $f >> parse.txt 2>&1 + echo "${files[*]}" | dotnet trwdog ./Test.exeTest -x -prefix group >> parse.txt 2>&1 xxx="$?" if [ "$xxx" -ne 0 ] then status="$xxx" fi done -done -# Group parsing. -for ((i=1; i\<=n; i++)) -do - echo "${files[*]}" | trwdog ./Test.exeTest -x -prefix group >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/Java/st.Test.java b/_scripts/templates/Java/st.Test.java index fb82d71cc4..22c7115c8f 100644 --- a/_scripts/templates/Java/st.Test.java +++ b/_scripts/templates/Java/st.Test.java @@ -117,7 +117,7 @@ else if (args[i].equals("-trace")) } Instant finish = Instant.now(); long timeElapsed = Duration.between(start, finish).toMillis(); - if (!quiet) System.err.println("Total Time: " + (timeElapsed * 1.0) / 1000.0); + if (!quiet) System.err.println(prefix + "Total Time: " + (timeElapsed * 1.0) / 1000.0); } java.lang.System.exit(error_code); } diff --git a/_scripts/templates/Java/st.perf.sh b/_scripts/templates/Java/st.perf.sh index d561946be8..079856c88f 100644 --- a/_scripts/templates/Java/st.perf.sh +++ b/_scripts/templates/Java/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for Java" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -18,8 +68,6 @@ do fi done -n=10 - # People often specify a test file directory, but sometimes no # tests are provided. Git won't check in an empty directory. # Test if there are no test files. @@ -29,34 +77,48 @@ then exit 0 fi +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt + # Parse all input files. version=`grep "version=" build.sh | awk -F= '{print $2}'` JAR=`python -c "import os; from pathlib import Path; print(os.path.join(Path.home() , '.m2', 'repository', 'org', 'antlr', 'antlr4', '$version', 'antlr4-$version-complete.jar'))"` CLASSPATH="$JAR\;:." # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - # Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog java -classpath "$CLASSPATH" Test -prefix individual $f >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + +# Group parsing. +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then for ((i=1; i\<=n; i++)) do - trwdog java -classpath "$CLASSPATH" Test -prefix individual $f >> parse.txt 2>&1 + echo "${files[*]}" | dotnet trwdog java -classpath "$CLASSPATH" Test -x -prefix group >> parse.txt 2>&1 xxx="$?" if [ "$xxx" -ne 0 ] then status="$xxx" fi done -done -# Group parsing. -for ((i=1; i\<=n; i++)) -do - echo "${files[*]}" | trwdog java -classpath "$CLASSPATH" Test -x -prefix group >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/JavaScript/st.Test.js b/_scripts/templates/JavaScript/st.Test.js index e48bb505e3..419fdd6f2b 100644 --- a/_scripts/templates/JavaScript/st.Test.js +++ b/_scripts/templates/JavaScript/st.Test.js @@ -124,7 +124,7 @@ function main() { } timer.stop(); var t = timer.time().m * 60 + timer.time().s + timer.time().ms / 1000; - if (!quiet) console.error('Total Time: ' + t); + if (!quiet) console.error(prefix + 'Total Time: ' + t); } process.exitCode = error_code; } @@ -165,7 +165,7 @@ function DoParse(str, input_name, row_number) { for (var i = 0; ; ++i) { var ro_token = lexer.nextToken(); var token = ro_token; - token.TokenIndex = i; + token.tokenIndex = i; console.error(token.toString()); if (token.type === antlr4.Token.EOF) break; diff --git a/_scripts/templates/JavaScript/st.perf.sh b/_scripts/templates/JavaScript/st.perf.sh index 548dbff667..6a96f201dc 100644 --- a/_scripts/templates/JavaScript/st.perf.sh +++ b/_scripts/templates/JavaScript/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for JavaScript" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -27,20 +77,45 @@ then exit 0 fi +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt + # Parse all input files. # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - trwdog node Test.js -prefix individual $f >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog node Test.js -prefix individual $f >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + # Group parsing. -echo "${files[*]}" | trwdog node Test.js -x -prefix group >> parse.txt 2>&1 -status=$? +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then + for ((i=1; i\<=n; i++)) + do + echo "${files[*]}" | dotnet trwdog node Test.js -x -prefix group >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/PHP/st.Test.php b/_scripts/templates/PHP/st.Test.php index e5e6b720e3..78193971c3 100644 --- a/_scripts/templates/PHP/st.Test.php +++ b/_scripts/templates/PHP/st.Test.php @@ -127,7 +127,7 @@ function main($argv) : void { } $duration = $timer->stop(); if (! $quiet) { - fwrite(STDERR, "Total Time: " . $duration->asSeconds() . "\n"); + fwrite(STDERR, $prefix . "Total Time: " . $duration->asSeconds() . "\n"); } } exit($error_code); diff --git a/_scripts/templates/PHP/st.perf.sh b/_scripts/templates/PHP/st.perf.sh index 5985518aa8..56c1452bbc 100644 --- a/_scripts/templates/PHP/st.perf.sh +++ b/_scripts/templates/PHP/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for PHP" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -27,20 +77,45 @@ then exit 0 fi +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt + # Parse all input files. # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - trwdog php -d memory_limit=1G Test.php -prefix individual $f >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog php -d memory_limit=1G Test.php -prefix individual $f >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + # Group parsing. -echo "${files[*]}" | trwdog php -d memory_limit=1G Test.php -x -prefix group >> parse.txt 2>&1 -status=$? +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then + for ((i=1; i\<=n; i++)) + do + echo "${files[*]}" | dotnet trwdog php -d memory_limit=1G Test.php -x -prefix group >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/Python3/st.Test.py b/_scripts/templates/Python3/st.Test.py index 787ff8d04e..0302325d47 100644 --- a/_scripts/templates/Python3/st.Test.py +++ b/_scripts/templates/Python3/st.Test.py @@ -98,7 +98,7 @@ def main(argv): diff = end_time - start_time diff_time = diff.total_seconds() if (not quiet): - print(f'Total Time: {diff_time}', file=sys.stderr); + print(f'{prefix}Total Time: {diff_time}', file=sys.stderr); sys.exit(error_code) def ParseStdin(): @@ -151,7 +151,7 @@ def DoParse(str, input_name, row_number): while True: ro_token = lexer.nextToken() token = ro_token - # token.TokenIndex = i + token.tokenIndex = i i = i + 1 print(token, file=sys.stderr) if (token.type == -1): diff --git a/_scripts/templates/Python3/st.perf.sh b/_scripts/templates/Python3/st.perf.sh index 838b40cc68..346e4fa4d9 100644 --- a/_scripts/templates/Python3/st.perf.sh +++ b/_scripts/templates/Python3/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for Python3" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -27,20 +77,45 @@ then exit 0 fi +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt + # Parse all input files. # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - trwdog python3 Test.py -prefix individual $f >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog python3 Test.py -prefix individual $f >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + # Group parsing. -echo "${files[*]}" | trwdog python3 Test.py -x -prefix group >> parse.txt 2>&1 -status=$? +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then + for ((i=1; i\<=n; i++)) + do + echo "${files[*]}" | dotnet trwdog python3 Test.py -x -prefix group >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/TypeScript/st.Test.ts b/_scripts/templates/TypeScript/st.Test.ts index ef563f4a43..26cac2c71f 100644 --- a/_scripts/templates/TypeScript/st.Test.ts +++ b/_scripts/templates/TypeScript/st.Test.ts @@ -140,7 +140,7 @@ function main() { } timer.stop(); var t = timer.time().m * 60 + timer.time().s + timer.time().ms / 1000; - if (!quiet) console.error('Total Time: ' + t); + if (!quiet) console.error(prefix + 'Total Time: ' + t); } process.exitCode = error_code; } diff --git a/_scripts/templates/TypeScript/st.perf.sh b/_scripts/templates/TypeScript/st.perf.sh index 04fe129651..f6b9880b13 100644 --- a/_scripts/templates/TypeScript/st.perf.sh +++ b/_scripts/templates/TypeScript/st.perf.sh @@ -3,6 +3,56 @@ SAVEIFS=$IFS IFS=$(echo -en "\n\b") +rm -f parse.txt + +echo "Testing for TypeScript" >> parse.txt +echo "" >> parse.txt +date >> parse.txt +echo "" >> parse.txt + +# Output basic information on machine. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + CYGWIN*) machine=Cygwin;; + MINGW*) machine=MinGw;; + *) machine="UNKNOWN:${unameOut}" +esac + +echo OS: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lsb_release -a >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + systeminfo | grep -E '^OS' >> parse.txt +fi +echo "" >> parse.txt + +echo CPU: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + lscpu | grep -e 'Model name' >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_Processor).Name' >> parse.txt +fi +echo "" >> parse.txt + +echo Memory: >> parse.txt +if [[ "$machine" == "Linux" ]] +then + free -h >> parse.txt +fi +if [[ "$machine" == "CYGWIN" || "$machine" == "MinGw" ]] +then + pwsh -c '(Get-WmiObject -Class Win32_PhysicalMemory).Capacity' >> parse.txt +fi +echo "" >> parse.txt + # Get a list of test files from the test directory. Do not include any # .errors or .tree files. Pay close attention to remove only file names # that end with the suffix .errors or .tree. @@ -27,20 +77,45 @@ then exit 0 fi +n=$1 +type=$2 +echo SampleSize=$n >> parse.txt +echo "" >> parse.txt + # Parse all input files. # Individual parsing. -rm -f parse.txt -for f in ${files[*]} -do - trwdog sh -c "ts-node Test.js -prefix individual $f" >> parse.txt 2>&1 - xxx="$?" - if [ "$xxx" -ne 0 ] - then - status="$xxx" - fi -done +if [[ "$type" == "individual" ]] +then + for f in ${files[*]} + do + # Loop from 1 to n and execute the body of the loop each time + for ((i=1; i\<=n; i++)) + do + dotnet trwdog sh -c "exec npx tsx Test.js -prefix individual $f" >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done + done +fi + # Group parsing. -echo "${files[*]}" | trwdog sh -c "ts-node Test.js -x -prefix group" >> parse.txt 2>&1 -status=$? +# Loop from 1 to n and execute the body of the loop each time +if [[ "$type" == "group" ]] +then + for ((i=1; i\<=n; i++)) + do + echo "${files[*]}" | dotnet trwdog sh -c "exec npx tsx Test.js -x -prefix group" >> parse.txt 2>&1 + xxx="$?" + if [ "$xxx" -ne 0 ] + then + status="$xxx" + fi + done +fi + +dos2unix parse.txt exit 0 diff --git a/_scripts/templates/TypeScript/st.run.sh b/_scripts/templates/TypeScript/st.run.sh index 1090e59af9..d4c0ebd577 100644 --- a/_scripts/templates/TypeScript/st.run.sh +++ b/_scripts/templates/TypeScript/st.run.sh @@ -1,7 +1,4 @@ # Generated from trgen -set -e -set -x - exec npx tsx Test.js "$@" exit $? From 0fa06d757314d0aa48159e34a76564534c7eec46 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Wed, 18 Dec 2024 09:05:42 -0500 Subject: [PATCH 07/21] Update node.js version. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f0fb8503d1..7f4b55a465 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -126,7 +126,7 @@ jobs: - name: Install JavaScript uses: actions/setup-node@v4.1.0 with: - node-version: '21.7.3' + node-version: '22.12.0' - name: Test JavaScript run: | node --version From 8479d0a38be9f316f90e4f211c0b6d0a07a78b26 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Wed, 18 Dec 2024 15:33:25 -0500 Subject: [PATCH 08/21] Try another way. --- sql/plsql/Cpp/st.CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/plsql/Cpp/st.CMakeLists.txt b/sql/plsql/Cpp/st.CMakeLists.txt index 84070b9cfb..40a506d56c 100644 --- a/sql/plsql/Cpp/st.CMakeLists.txt +++ b/sql/plsql/Cpp/st.CMakeLists.txt @@ -9,7 +9,7 @@ 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}") From 48188e59087536e9686118c0d1ef18931b22e1eb Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Wed, 18 Dec 2024 15:49:04 -0500 Subject: [PATCH 09/21] Add debug testing. --- sql/plsql/Cpp/transformGrammar.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sql/plsql/Cpp/transformGrammar.py b/sql/plsql/Cpp/transformGrammar.py index 23dd323a30..7cb62becf8 100644 --- a/sql/plsql/Cpp/transformGrammar.py +++ b/sql/plsql/Cpp/transformGrammar.py @@ -5,6 +5,11 @@ def main(argv): for file in glob("./*.g4"): fix(file) + print("This is what CMakeLists.txt looks like") + foobar_file = open("CMakeLists.txt",'r') + for x in foobar_file: + print(x) + foobar_file.close() def fix(file_path): print("Altering " + file_path) From 9937484a142aba83a1dcf669571200c5bbb8719a Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Wed, 18 Dec 2024 16:09:36 -0500 Subject: [PATCH 10/21] Fix st.CMakeLists.txt. Remove debugging output. --- sql/plsql/Cpp/st.CMakeLists.txt | 51 ++++++++++++++++++++++--------- sql/plsql/Cpp/transformGrammar.py | 5 --- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/sql/plsql/Cpp/st.CMakeLists.txt b/sql/plsql/Cpp/st.CMakeLists.txt index 40a506d56c..a1ab69139b 100644 --- a/sql/plsql/Cpp/st.CMakeLists.txt +++ b/sql/plsql/Cpp/st.CMakeLists.txt @@ -1,4 +1,4 @@ -# Generated from trgen 0.23.11 +# Generated from trgen cmake_minimum_required (VERSION 3.14) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) @@ -9,11 +9,10 @@ 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_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) @@ -22,31 +21,53 @@ 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( - PlSqlLexer - PlSqlLexer.g4 + + LEXER ) antlr_target( - PlSqlParser - PlSqlParser.g4 + + PARSER - DEPENDS_ANTLR PlSqlLexer - COMPILE_FLAGS -lib ${ANTLR_PlSqlLexer_OUTPUT_DIR} + DEPENDS_ANTLR + COMPILE_FLAGS -lib ${ANTLR__OUTPUT_DIR} ) -include_directories(${ANTLR_PlSqlLexer_OUTPUT_DIR}) -include_directories(${ANTLR_PlSqlParser_OUTPUT_DIR}) +include_directories(${ANTLR__OUTPUT_DIR}) +include_directories(${ANTLR__OUTPUT_DIR}) add_executable(Test Test.cpp ErrorListener.cpp ErrorListener.h -${ANTLR_PlSqlLexer_CXX_OUTPUTS} - ${ANTLR_PlSqlParser_CXX_OUTPUTS} + + } >${ANTLR__CXX_OUTPUTS} + ${ANTLR__CXX_OUTPUTS} ) + -target_compile_options(Test PUBLIC /MT) + +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 index 7cb62becf8..23dd323a30 100644 --- a/sql/plsql/Cpp/transformGrammar.py +++ b/sql/plsql/Cpp/transformGrammar.py @@ -5,11 +5,6 @@ def main(argv): for file in glob("./*.g4"): fix(file) - print("This is what CMakeLists.txt looks like") - foobar_file = open("CMakeLists.txt",'r') - for x in foobar_file: - print(x) - foobar_file.close() def fix(file_path): print("Altering " + file_path) From ab331ff6747a18090a047af074a5380fda56f076 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Wed, 18 Dec 2024 19:37:12 -0500 Subject: [PATCH 11/21] Add Go port. --- sql/plsql/Go/plsql_lexer_base.go | 17 ----------------- sql/plsql/Go/plsql_parser_base.go | 17 +++++++++++++---- sql/plsql/Go/transformGrammar.py | 22 +++++++++++++--------- sql/plsql/desc.xml | 4 ++-- 4 files changed, 28 insertions(+), 32 deletions(-) diff --git a/sql/plsql/Go/plsql_lexer_base.go b/sql/plsql/Go/plsql_lexer_base.go index 62c191a5b8..aa7ba536e7 100644 --- a/sql/plsql/Go/plsql_lexer_base.go +++ b/sql/plsql/Go/plsql_lexer_base.go @@ -7,26 +7,9 @@ import ( // PlSqlLexerBase state type PlSqlLexerBase struct { *antlr.BaseLexer - - lastToken antlr.Token -} - -// NextToken from the character stream. -func (l *PlSqlLexerBase) NextToken() antlr.Token { - next := l.BaseLexer.NextToken() // Get next token - if next.GetChannel() == antlr.TokenDefaultChannel { - // Keep track of the last token on default channel - l.lastToken = next - } - return next } -// IsRegexPossible returns true if the lexer can match a -// regex literal. func (l *PlSqlLexerBase) IsNewlineAtPos(pos int) bool { - if l.lastToken == nil { - return true - } la := l.GetInputStream().LA(pos) return la == -1 || la == '\n' } diff --git a/sql/plsql/Go/plsql_parser_base.go b/sql/plsql/Go/plsql_parser_base.go index 95f8a7ce8b..028f5c95fb 100644 --- a/sql/plsql/Go/plsql_parser_base.go +++ b/sql/plsql/Go/plsql_parser_base.go @@ -11,18 +11,27 @@ type PlSqlParserBase struct { _isVersion10 bool } +var StaticConfig PlSqlParserBase + +func init() { + StaticConfig = PlSqlParserBase { + _isVersion12: true, + _isVersion10: false, + } +} + func (p *PlSqlParserBase) isVersion12() bool { - return p._isVersion12; + return StaticConfig._isVersion12; } func (p *PlSqlParserBase) setVersion12(value bool) { - p._isVersion12 = value; + StaticConfig._isVersion12 = value; } func (p *PlSqlParserBase) isVersion10() bool { - return p._isVersion10; + return StaticConfig._isVersion10; } func (p *PlSqlParserBase) setVersion10(value bool) { - p._isVersion10 = value; + StaticConfig._isVersion10 = value; } diff --git a/sql/plsql/Go/transformGrammar.py b/sql/plsql/Go/transformGrammar.py index 2acb0e937b..e33021d1f7 100644 --- a/sql/plsql/Go/transformGrammar.py +++ b/sql/plsql/Go/transformGrammar.py @@ -3,10 +3,12 @@ from pathlib import Path def main(argv): - fixLexer("parser/PlSqlLexer.g4") - fixParser("parser/PlSqlParser.g4") + for file in glob("./parser/*Lexer.g4"): + fix_lexer(file) + for file in glob("./parser/*Parser.g4"): + fix_parser(file) -def fixLexer(file_path): +def fix_lexer(file_path): print("Altering " + file_path) if not os.path.exists(file_path): print(f"Could not find file: {file_path}") @@ -18,8 +20,10 @@ def fixLexer(file_path): input_file = open(file_path + ".bak",'r') output_file = open(file_path, 'w') for x in input_file: - if 'self.' in x: - x = x.replace('self.', 'this.') + if 'this.' in x and '}?' in x: + x = x.replace('this.', 'p.') + elif 'this.' in x: + x = x.replace('this.', 'l.') output_file.write(x) output_file.flush() @@ -27,7 +31,7 @@ def fixLexer(file_path): input_file.close() output_file.close() -def fixParser(file_path): +def fix_parser(file_path): print("Altering " + file_path) if not os.path.exists(file_path): print(f"Could not find file: {file_path}") @@ -39,14 +43,14 @@ def fixParser(file_path): input_file = open(file_path + ".bak",'r') output_file = open(file_path, 'w') for x in input_file: - if 'self.' in x: - x = x.replace('self.', 'p.') + if 'this.' in x: + x = x.replace('this.', 'p.') 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/desc.xml b/sql/plsql/desc.xml index 17210388a2..c428039f48 100644 --- a/sql/plsql/desc.xml +++ b/sql/plsql/desc.xml @@ -4,7 +4,7 @@ Antlr4ng;Cpp;CSharp;Java;JavaScript;Python3;TypeScript full - Antlr4ng;Cpp;CSharp;Java + Antlr4ng;Cpp;CSharp;Go;Java examples @@ -14,7 +14,7 @@ examples-sql-script - Antlr4ng;Cpp;CSharp;Java + Antlr4ng;Cpp;CSharp;Go;Java examples-sql-script From 0797fade4a4f1b4705d8f9c83502829abbfb5230 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Thu, 19 Dec 2024 19:41:50 -0500 Subject: [PATCH 12/21] Fix Dart port. Remove "self" everywhere. Move back "long-running". Fix "expressions" symbol conflict for Dart port. --- sql/plsql/Antlr4ng/PlSqlParserBase.ts | 4 +- sql/plsql/CSharp/PlSqlLexerBase.cs | 3 - sql/plsql/CSharp/PlSqlParserBase.cs | 2 - sql/plsql/Cpp/PlSqlLexerBase.h | 5 +- sql/plsql/Cpp/PlSqlParserBase.h | 4 +- sql/plsql/Dart/PlSqlLexer.g4 | 2385 ------ sql/plsql/Dart/PlSqlLexerBase.dart | 7 +- sql/plsql/Dart/PlSqlParser.g4 | 6840 ----------------- sql/plsql/Dart/PlSqlParserBase.dart | 2 - sql/plsql/Go/plsql_parser_base.go | 2 +- sql/plsql/Java/PlSqlLexerBase.java | 3 - sql/plsql/Java/PlSqlParserBase.java | 2 - sql/plsql/JavaScript/PlSqlParserBase.js | 2 +- sql/plsql/PlSqlParser.g4 | 38 +- sql/plsql/desc.xml | 13 +- .../examples-sql-script/anonymous_block.sql | 0 .../cursor-attributes-with-spaces.sql | 0 .../declare_procedure_no_args.sql | 0 .../delete_as_regular_id.pkb | 0 .../deterministic_function.pks | 0 .../e_in_out_parameters.pks | 0 .../examples-sql-script/grants.sql | 0 .../examples-sql-script/green_run.sql | 0 .../examples-sql-script/green_table.sql | 0 .../examples-sql-script/green_tools.pkb | 0 .../examples-sql-script/green_tools.pks | 0 .../green_tools_review.sql | 0 .../examples-sql-script/in_out_parameters.pks | 0 .../examples-sql-script/key_word_as_param.pkb | 0 .../logical_expressions.sql | 0 .../examples-sql-script/package_body_null.pkb | 0 .../package_with_cursor.sql | 0 .../package_with_schema.pkb | 0 .../package_with_schema.pks | 0 .../package_with_simple_init_block.pkb | 0 .../examples-sql-script/pipe_row.pkb | 0 .../examples-sql-script/pltables.sql | 0 .../pragma_autonomous_transaction.sql | 0 .../pragma_exception_init.pkb | 0 .../pragma_exception_init.pks | 0 .../proc_over_dblink_as_nvl_param.pkb | 0 .../procedure_with_cursor_and_limit.sql | 0 .../result_cache_function.pks | 0 .../examples-sql-script/select_into.sql | 0 .../examples-sql-script/show_errors.pks | 0 .../substr_as_regular_id.pkb | 0 .../synonym_with_database_link.sql | 0 .../examples-sql-script/trigger_examples.sql | 0 .../type_body_elements.sql | 0 .../examples-sql-script/user.sql | 0 ...th_clause_in_exists_block_in_procedure.sql | 0 .../hw-examples/alter_operator.sql | 0 .../hw-examples/alter_outline.sql | 0 .../hw-examples/drop_operator.sql | 0 .../hw-examples/keywordasidentifier02.sql | 0 .../{ => examples}/hw-examples/lexer01.sql | 0 .../{ => examples}/hw-examples/lexer02.sql | 0 .../{ => examples}/hw-examples/lexer03.sql | 0 .../{ => examples}/hw-examples/lexer04.sql | 0 .../{ => examples}/hw-examples/lexer05.sql | 0 .../{ => examples}/hw-examples/simple11.sql | 0 .../hw-examples/truncate_table.sql | 0 62 files changed, 29 insertions(+), 9283 deletions(-) delete mode 100644 sql/plsql/Dart/PlSqlLexer.g4 delete mode 100644 sql/plsql/Dart/PlSqlParser.g4 rename sql/plsql/{ => examples}/examples-sql-script/anonymous_block.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/cursor-attributes-with-spaces.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/declare_procedure_no_args.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/delete_as_regular_id.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/deterministic_function.pks (100%) rename sql/plsql/{ => examples}/examples-sql-script/e_in_out_parameters.pks (100%) rename sql/plsql/{ => examples}/examples-sql-script/grants.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/green_run.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/green_table.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/green_tools.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/green_tools.pks (100%) rename sql/plsql/{ => examples}/examples-sql-script/green_tools_review.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/in_out_parameters.pks (100%) rename sql/plsql/{ => examples}/examples-sql-script/key_word_as_param.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/logical_expressions.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/package_body_null.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/package_with_cursor.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/package_with_schema.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/package_with_schema.pks (100%) rename sql/plsql/{ => examples}/examples-sql-script/package_with_simple_init_block.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/pipe_row.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/pltables.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/pragma_autonomous_transaction.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/pragma_exception_init.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/pragma_exception_init.pks (100%) rename sql/plsql/{ => examples}/examples-sql-script/proc_over_dblink_as_nvl_param.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/procedure_with_cursor_and_limit.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/result_cache_function.pks (100%) rename sql/plsql/{ => examples}/examples-sql-script/select_into.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/show_errors.pks (100%) rename sql/plsql/{ => examples}/examples-sql-script/substr_as_regular_id.pkb (100%) rename sql/plsql/{ => examples}/examples-sql-script/synonym_with_database_link.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/trigger_examples.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/type_body_elements.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/user.sql (100%) rename sql/plsql/{ => examples}/examples-sql-script/with_clause_in_exists_block_in_procedure.sql (100%) rename sql/plsql/{ => examples}/hw-examples/alter_operator.sql (100%) rename sql/plsql/{ => examples}/hw-examples/alter_outline.sql (100%) rename sql/plsql/{ => examples}/hw-examples/drop_operator.sql (100%) rename sql/plsql/{ => examples}/hw-examples/keywordasidentifier02.sql (100%) rename sql/plsql/{ => examples}/hw-examples/lexer01.sql (100%) rename sql/plsql/{ => examples}/hw-examples/lexer02.sql (100%) rename sql/plsql/{ => examples}/hw-examples/lexer03.sql (100%) rename sql/plsql/{ => examples}/hw-examples/lexer04.sql (100%) rename sql/plsql/{ => examples}/hw-examples/lexer05.sql (100%) rename sql/plsql/{ => examples}/hw-examples/simple11.sql (100%) rename sql/plsql/{ => examples}/hw-examples/truncate_table.sql (100%) diff --git a/sql/plsql/Antlr4ng/PlSqlParserBase.ts b/sql/plsql/Antlr4ng/PlSqlParserBase.ts index be6b84f4d2..9ddf1c4068 100644 --- a/sql/plsql/Antlr4ng/PlSqlParserBase.ts +++ b/sql/plsql/Antlr4ng/PlSqlParserBase.ts @@ -4,13 +4,11 @@ export abstract class PlSqlParserBase extends Parser { _isVersion10: boolean; _isVersion12: boolean; - self: PlSqlParserBase; constructor(input: TokenStream) { super(input); - this._isVersion10 = false; + this._isVersion10 = true; this._isVersion12 = true; - this.self = this; } isVersion10(): boolean { 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 d4a4141e1d..3b649f4f81 100644 --- a/sql/plsql/Cpp/PlSqlLexerBase.h +++ b/sql/plsql/Cpp/PlSqlLexerBase.h @@ -4,10 +4,7 @@ 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) 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/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..a1c21c1151 100644 --- a/sql/plsql/Dart/PlSqlLexerBase.dart +++ b/sql/plsql/Dart/PlSqlLexerBase.dart @@ -4,16 +4,13 @@ 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); + int la = inputStream.LA(pos)!; return la == -1 || la == '\n'; } } 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 - ; - -// $> - -// $^4.12.0 Antlr4ng;Cpp;CSharp;Java;JavaScript;Python3;TypeScript - full - Antlr4ng;Cpp;CSharp;Go;Java - examples + Antlr4ng;Cpp;CSharp;Dart;Go;Java + examples/**/*.sql - hw JavaScript;Python3;TypeScript - hw-examples - - - examples-sql-script - Antlr4ng;Cpp;CSharp;Go;Java - examples-sql-script + examples/hw-examples/**/*.sql 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/hw-examples/alter_operator.sql b/sql/plsql/examples/hw-examples/alter_operator.sql similarity index 100% rename from sql/plsql/hw-examples/alter_operator.sql rename to sql/plsql/examples/hw-examples/alter_operator.sql diff --git a/sql/plsql/hw-examples/alter_outline.sql b/sql/plsql/examples/hw-examples/alter_outline.sql similarity index 100% rename from sql/plsql/hw-examples/alter_outline.sql rename to sql/plsql/examples/hw-examples/alter_outline.sql diff --git a/sql/plsql/hw-examples/drop_operator.sql b/sql/plsql/examples/hw-examples/drop_operator.sql similarity index 100% rename from sql/plsql/hw-examples/drop_operator.sql rename to sql/plsql/examples/hw-examples/drop_operator.sql diff --git a/sql/plsql/hw-examples/keywordasidentifier02.sql b/sql/plsql/examples/hw-examples/keywordasidentifier02.sql similarity index 100% rename from sql/plsql/hw-examples/keywordasidentifier02.sql rename to sql/plsql/examples/hw-examples/keywordasidentifier02.sql diff --git a/sql/plsql/hw-examples/lexer01.sql b/sql/plsql/examples/hw-examples/lexer01.sql similarity index 100% rename from sql/plsql/hw-examples/lexer01.sql rename to sql/plsql/examples/hw-examples/lexer01.sql diff --git a/sql/plsql/hw-examples/lexer02.sql b/sql/plsql/examples/hw-examples/lexer02.sql similarity index 100% rename from sql/plsql/hw-examples/lexer02.sql rename to sql/plsql/examples/hw-examples/lexer02.sql diff --git a/sql/plsql/hw-examples/lexer03.sql b/sql/plsql/examples/hw-examples/lexer03.sql similarity index 100% rename from sql/plsql/hw-examples/lexer03.sql rename to sql/plsql/examples/hw-examples/lexer03.sql diff --git a/sql/plsql/hw-examples/lexer04.sql b/sql/plsql/examples/hw-examples/lexer04.sql similarity index 100% rename from sql/plsql/hw-examples/lexer04.sql rename to sql/plsql/examples/hw-examples/lexer04.sql diff --git a/sql/plsql/hw-examples/lexer05.sql b/sql/plsql/examples/hw-examples/lexer05.sql similarity index 100% rename from sql/plsql/hw-examples/lexer05.sql rename to sql/plsql/examples/hw-examples/lexer05.sql diff --git a/sql/plsql/hw-examples/simple11.sql b/sql/plsql/examples/hw-examples/simple11.sql similarity index 100% rename from sql/plsql/hw-examples/simple11.sql rename to sql/plsql/examples/hw-examples/simple11.sql diff --git a/sql/plsql/hw-examples/truncate_table.sql b/sql/plsql/examples/hw-examples/truncate_table.sql similarity index 100% rename from sql/plsql/hw-examples/truncate_table.sql rename to sql/plsql/examples/hw-examples/truncate_table.sql From 6422d8d293d7a67d2fb0e6b94c199871248403d2 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Thu, 19 Dec 2024 20:15:01 -0500 Subject: [PATCH 13/21] Update PlSqlLexerBase.dart --- sql/plsql/Dart/PlSqlLexerBase.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/plsql/Dart/PlSqlLexerBase.dart b/sql/plsql/Dart/PlSqlLexerBase.dart index a1c21c1151..6756ebaf5a 100644 --- a/sql/plsql/Dart/PlSqlLexerBase.dart +++ b/sql/plsql/Dart/PlSqlLexerBase.dart @@ -11,6 +11,7 @@ abstract class PlSqlLexerBase extends Lexer bool IsNewlineAtPos(int pos) { int la = inputStream.LA(pos)!; - return la == -1 || la == '\n'; + if (la == -1) return true; + return '\n' == String.fromCharCode(inputStream.LA(pos)!); } } From 2676c09bab0331b7c5f7405574b9d58c5263cbf9 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Fri, 20 Dec 2024 06:07:10 -0500 Subject: [PATCH 14/21] Reorganize examples. --- sql/plsql/desc.xml | 7 ++++--- sql/plsql/examples/create_package.sql.tree | 1 - sql/plsql/examples/hw-examples/alter_operator.sql | 1 - sql/plsql/examples/hw-examples/alter_outline.sql | 1 - sql/plsql/examples/hw-examples/drop_operator.sql | 1 - sql/plsql/examples/hw-examples/keywordasidentifier02.sql | 1 - sql/plsql/examples/hw-examples/lexer01.sql | 2 -- sql/plsql/examples/hw-examples/lexer02.sql | 2 -- sql/plsql/examples/hw-examples/lexer03.sql | 2 -- sql/plsql/examples/hw-examples/lexer04.sql | 1 - sql/plsql/examples/hw-examples/lexer05.sql | 1 - sql/plsql/examples/hw-examples/simple11.sql | 1 - sql/plsql/examples/hw-examples/truncate_table.sql | 1 - sql/plsql/examples/lexer02.sql | 7 +------ sql/plsql/{examples => more}/4357.sql | 0 sql/plsql/{examples => more}/administer_key_management.sql | 0 sql/plsql/{examples => more}/aggregate_functions.sql | 0 sql/plsql/{examples => more}/alter_analytic_view.sql | 0 sql/plsql/{examples => more}/alter_audit_policy.sql | 0 sql/plsql/{examples => more}/alter_database.sql | 0 sql/plsql/{examples => more}/alter_dimension.sql | 0 sql/plsql/{examples => more}/alter_diskgroup.sql | 0 sql/plsql/{examples => more}/alter_flashback_archive.sql | 0 sql/plsql/{examples => more}/alter_inmemory_join_group.sql | 0 sql/plsql/{examples => more}/alter_java.sql | 0 sql/plsql/{examples => more}/alter_lockdown_profile.sql | 0 .../{examples => more}/alter_materialized_zonemap.sql | 0 sql/plsql/{examples => more}/alter_mv.sql | 0 sql/plsql/{examples => more}/alter_mv_log.sql | 0 sql/plsql/{examples => more}/alter_pmem_filestore.sql | 0 sql/plsql/{examples => more}/alter_resource_cost.sql | 0 sql/plsql/{examples => more}/alter_role.sql | 0 sql/plsql/{examples => more}/alter_session.sql | 0 sql/plsql/{examples => more}/alter_synonym01.sql | 0 sql/plsql/{examples => more}/alter_table.sql | 0 sql/plsql/{examples => more}/alter_table_inmemory.sql | 0 .../alter_table_modify_partition_by_range.sql | 0 sql/plsql/{examples => more}/alter_tablespaces.sql | 0 sql/plsql/{examples => more}/alter_view.sql | 0 sql/plsql/{examples => more}/analytic_query.sql | 0 sql/plsql/{examples => more}/analyze.sql | 0 sql/plsql/{examples => more}/audit.sql | 0 sql/plsql/{examples => more}/bindvar01.sql | 0 sql/plsql/{examples => more}/bindvar02.sql | 0 sql/plsql/{examples => more}/bindvar03.sql | 0 sql/plsql/{examples => more}/bindvar04.sql | 0 sql/plsql/{examples => more}/bindvar05.sql | 0 sql/plsql/{examples => more}/block01.sql | 0 sql/plsql/{examples => more}/block02.sql | 0 .../{examples => more}/bulk_collect_fetch_clause01.sql | 0 sql/plsql/{examples => more}/call.sql | 0 sql/plsql/{examples => more}/case_when01.sql | 0 sql/plsql/{examples => more}/case_when02.sql | 0 sql/plsql/{examples => more}/case_when03.sql | 0 sql/plsql/{examples => more}/case_when04.sql | 0 sql/plsql/{examples => more}/case_when05.sql | 0 sql/plsql/{examples => more}/case_when06.sql | 0 sql/plsql/{examples => more}/case_when07.sql | 0 sql/plsql/{examples => more}/case_when08.sql | 0 sql/plsql/{examples => more}/cast.sql | 0 sql/plsql/{examples => more}/cast_multiset01.sql | 0 sql/plsql/{examples => more}/cast_multiset02.sql | 0 sql/plsql/{examples => more}/cast_multiset03.sql | 0 sql/plsql/{examples => more}/cast_multiset05.sql | 0 sql/plsql/{examples => more}/cast_multiset06.sql | 0 sql/plsql/{examples => more}/cluster.sql | 0 .../{examples => more}/collection_method_invocation.sql | 0 sql/plsql/{examples => more}/columns01.sql | 0 sql/plsql/{examples => more}/comment_on.sql | 0 sql/plsql/{examples => more}/comments.sql | 0 sql/plsql/{examples => more}/commit.sql | 0 .../{examples => more}/concatenation-double_asterisk.sql | 0 sql/plsql/{examples => more}/concatenation-mod.sql | 0 sql/plsql/{examples => more}/condition01.sql | 0 sql/plsql/{examples => more}/condition02.sql | 0 sql/plsql/{examples => more}/condition03.sql | 0 sql/plsql/{examples => more}/condition04.sql | 0 sql/plsql/{examples => more}/condition05.sql | 0 sql/plsql/{examples => more}/condition06.sql | 0 sql/plsql/{examples => more}/condition07.sql | 0 sql/plsql/{examples => more}/condition08.sql | 0 sql/plsql/{examples => more}/condition09.sql | 0 sql/plsql/{examples => more}/condition10.sql | 0 sql/plsql/{examples => more}/condition11.sql | 0 sql/plsql/{examples => more}/condition12.sql | 0 sql/plsql/{examples => more}/condition15.sql | 0 sql/plsql/{examples => more}/connect_by01.sql | 0 sql/plsql/{examples => more}/connect_by02.sql | 0 sql/plsql/{examples => more}/connect_by03.sql | 0 sql/plsql/{examples => more}/connect_by04.sql | 0 sql/plsql/{examples => more}/connect_by05.sql | 0 sql/plsql/{examples => more}/create_analytic_view.sql | 0 .../{examples => more}/create_attribute_dimension.sql | 0 sql/plsql/{examples => more}/create_audit_policy.sql | 0 sql/plsql/{examples => more}/create_controlfile.sql | 0 sql/plsql/{examples => more}/create_database.sql | 0 sql/plsql/{examples => more}/create_dimension.sql | 0 sql/plsql/{examples => more}/create_directory.sql | 0 sql/plsql/{examples => more}/create_flashback_archive.sql | 0 sql/plsql/{examples => more}/create_function01.sql | 0 sql/plsql/{examples => more}/create_function02.sql | 0 sql/plsql/{examples => more}/create_function04.sql | 0 sql/plsql/{examples => more}/create_function05.sql | 0 sql/plsql/{examples => more}/create_function06.sql | 0 sql/plsql/{examples => more}/create_hierarchy.sql | 0 sql/plsql/{examples => more}/create_index.sql | 0 .../{examples => more}/create_inmemory_join_group.sql | 0 sql/plsql/{examples => more}/create_java.sql | 0 sql/plsql/{examples => more}/create_library.sql | 0 .../{examples => more}/create_materialized_zonemap.sql | 0 sql/plsql/{examples => more}/create_operator.sql | 0 sql/plsql/{examples => more}/create_outline.sql | 0 sql/plsql/{examples => more}/create_package01.sql | 0 sql/plsql/{examples => more}/create_package02.sql | 0 sql/plsql/{examples => more}/create_package03.sql | 0 sql/plsql/{examples => more}/create_package04.sql | 0 sql/plsql/{examples => more}/create_package05.sql | 0 sql/plsql/{examples => more}/create_pmem_filestore.sql | 0 sql/plsql/{examples => more}/create_procedure01.sql | 0 sql/plsql/{examples => more}/create_procedure01.sql.tree | 0 sql/plsql/{examples => more}/create_procedure02.sql | 0 sql/plsql/{examples => more}/create_procedure03.sql | 0 sql/plsql/{examples => more}/create_profile.sql | 0 sql/plsql/{examples => more}/create_restore_point.sql | 0 sql/plsql/{examples => more}/create_role.sql | 0 sql/plsql/{examples => more}/create_rollback_segment.sql | 0 sql/plsql/{examples => more}/create_spfile.sql | 0 sql/plsql/{examples => more}/create_table.sql | 0 sql/plsql/{examples => more}/create_tablespace.sql | 0 sql/plsql/{examples => more}/create_tablespace_set.sql | 0 sql/plsql/{examples => more}/create_trigger01.sql | 0 sql/plsql/{examples => more}/create_trigger02.sql | 0 sql/plsql/{examples => more}/create_type.sql | 0 sql/plsql/{examples => more}/create_view.sql | 0 sql/plsql/{examples => more}/ctas.sql | 0 sql/plsql/{examples => more}/datetime03.sql | 0 sql/plsql/{examples => more}/datetime04.sql | 0 sql/plsql/{examples => more}/dblink.sql | 0 sql/plsql/{examples => more}/dblink01.sql | 0 sql/plsql/{examples => more}/directory.sql | 0 sql/plsql/{examples => more}/drop_materialized_view.sql | 0 .../{examples => more}/drop_materialized_view.sql.tree | 0 sql/plsql/{examples => more}/drop_synonym01.sql | 0 sql/plsql/{examples => more}/drop_tablespace.sql | 0 sql/plsql/{examples => more}/editionable_function.sql | 0 .../editionable_packagebody_function.sql | 0 .../editionable_packagespec_function.sql | 0 sql/plsql/{examples => more}/explain01.sql | 0 sql/plsql/{examples => more}/fetch_clause01.sql | 0 sql/plsql/{examples => more}/fetch_clause02.sql | 0 sql/plsql/{examples => more}/fetch_clause03.sql | 0 sql/plsql/{examples => more}/fetch_clause04.sql | 0 sql/plsql/{examples => more}/fetch_statement.sql | 0 sql/plsql/{examples => more}/for_update01.sql | 0 sql/plsql/{examples => more}/for_update02.sql | 0 sql/plsql/{examples => more}/for_update03.sql | 0 sql/plsql/{examples => more}/for_update04.sql | 0 sql/plsql/{examples => more}/for_update05.sql | 0 sql/plsql/{examples => more}/for_update06.sql | 0 sql/plsql/{examples => more}/for_update07.sql | 0 sql/plsql/{examples => more}/for_update08.sql | 0 sql/plsql/{examples => more}/forall_bulk_rowcount.sql | 0 sql/plsql/{examples => more}/forall_indices_of.sql | 0 .../forall_statement_and_exception_handling.sql | 0 sql/plsql/{examples => more}/function03.sql | 0 sql/plsql/{examples => more}/function05.sql | 0 sql/plsql/{examples => more}/function07.sql | 0 sql/plsql/{examples => more}/general_element_part.sql | 0 sql/plsql/{examples => more}/groupby01.sql | 0 sql/plsql/{examples => more}/groupby02.sql | 0 sql/plsql/{examples => more}/groupby03.sql | 0 sql/plsql/{examples => more}/groupby04.sql | 0 sql/plsql/{examples => more}/groupby05.sql | 0 sql/plsql/{examples => more}/groupby06.sql | 0 sql/plsql/{examples => more}/groupby07.sql | 0 sql/plsql/{examples => more}/index.sql | 0 sql/plsql/{examples => more}/insert_statement.sql | 0 sql/plsql/{examples => more}/interval03.sql | 0 sql/plsql/{examples => more}/join01.sql | 0 sql/plsql/{examples => more}/join02.sql | 0 sql/plsql/{examples => more}/join03.sql | 0 sql/plsql/{examples => more}/join04.sql | 0 sql/plsql/{examples => more}/join05.sql | 0 sql/plsql/{examples => more}/join06.sql | 0 sql/plsql/{examples => more}/join07.sql | 0 sql/plsql/{examples => more}/join08.sql | 0 sql/plsql/{examples => more}/join09.sql | 0 sql/plsql/{examples => more}/join10.sql | 0 sql/plsql/{examples => more}/join13.sql | 0 sql/plsql/{examples => more}/join14.sql | 0 sql/plsql/{examples => more}/join15.sql | 0 sql/plsql/{examples => more}/join16.sql | 0 sql/plsql/{examples => more}/join17.sql | 0 sql/plsql/{examples => more}/join18.sql | 0 sql/plsql/{examples => more}/join22.sql | 0 sql/plsql/{examples => more}/join23.sql | 0 sql/plsql/{examples => more}/json_query.sql | 0 sql/plsql/{examples => more}/json_query.sql.tree | 0 sql/plsql/{examples => more}/json_sql.sql | 0 sql/plsql/{examples => more}/keywordasidentifier03.sql | 0 sql/plsql/{examples => more}/keywordasidentifier04.sql | 0 sql/plsql/{examples => more}/keywordasidentifier06.sql | 0 sql/plsql/{examples => more}/like01.sql | 0 sql/plsql/{ => more}/long-running/aggregate01.sql | 0 sql/plsql/{ => more}/long-running/cast_multiset07.sql | 0 sql/plsql/{ => more}/long-running/datetime02.sql | 0 sql/plsql/{ => more}/long-running/order_by07.sql | 0 sql/plsql/{ => more}/long-running/query_factoring07.sql | 0 sql/plsql/{examples => more}/materialized_views.sql | 0 sql/plsql/{examples => more}/max_001.sql | 0 sql/plsql/{examples => more}/merge01.sql | 0 sql/plsql/{examples => more}/merge02.sql | 0 sql/plsql/{examples => more}/merge03.sql | 0 sql/plsql/{examples => more}/merge04.sql | 0 sql/plsql/{examples => more}/merge05.sql | 0 sql/plsql/{examples => more}/model_clause01.sql | 0 sql/plsql/{examples => more}/model_clause02.sql | 0 sql/plsql/{examples => more}/model_clause03.sql | 0 sql/plsql/{examples => more}/model_clause04.sql | 0 sql/plsql/{examples => more}/model_clause05.sql | 0 sql/plsql/{examples => more}/multiset_operators.sql | 0 sql/plsql/{examples => more}/noaudit_statement.sql | 0 sql/plsql/{examples => more}/not_member_of.sql | 0 sql/plsql/{examples => more}/numbers01.sql | 0 sql/plsql/{examples => more}/nvl_001.sql | 0 sql/plsql/{examples => more}/object_access01.sql | 0 sql/plsql/{examples => more}/object_access_expressions.sql | 0 sql/plsql/{examples => more}/package_body.sql | 0 sql/plsql/{examples => more}/package_body.sql.tree | 0 sql/plsql/{examples => more}/packagebody_function.sql | 0 sql/plsql/{examples => more}/packagespec_function.sql | 0 sql/plsql/{examples => more}/partitioned_tables.sql | 0 sql/plsql/{examples => more}/pivot01.sql | 0 sql/plsql/{examples => more}/pivot02.sql | 0 sql/plsql/{examples => more}/pivot03.sql | 0 sql/plsql/{examples => more}/pivot04.sql | 0 sql/plsql/{examples => more}/pivot05.sql | 0 sql/plsql/{examples => more}/pivot06.sql | 0 sql/plsql/{examples => more}/pivot07.sql | 0 sql/plsql/{examples => more}/pivot08.sql | 0 sql/plsql/{examples => more}/pivot09.sql | 0 sql/plsql/{examples => more}/pivot10.sql | 0 sql/plsql/{examples => more}/pivot11.sql | 0 sql/plsql/{examples => more}/pivot12.sql | 0 sql/plsql/{examples => more}/pivot13.sql | 0 sql/plsql/{examples => more}/purge_statement.sql | 0 sql/plsql/{examples => more}/query_factoring01.sql | 0 sql/plsql/{examples => more}/query_factoring02.sql | 0 sql/plsql/{examples => more}/query_factoring03.sql | 0 sql/plsql/{examples => more}/query_factoring04.sql | 0 sql/plsql/{examples => more}/query_factoring05.sql | 0 sql/plsql/{examples => more}/query_factoring06.sql | 0 sql/plsql/{examples => more}/query_factoring08.sql | 0 sql/plsql/{examples => more}/query_factoring09.sql | 0 sql/plsql/{examples => more}/query_factoring10.sql | 0 sql/plsql/{examples => more}/query_factoring11.sql | 0 sql/plsql/{examples => more}/quntitative_expression.sql | 0 sql/plsql/{examples => more}/revoke_statement.sql | 0 sql/plsql/{examples => more}/round_001.sql | 0 sql/plsql/{examples => more}/round_decode_001.sql | 0 sql/plsql/{examples => more}/row_number_001.sql | 0 sql/plsql/{examples => more}/sample01.sql | 0 sql/plsql/{examples => more}/select_all_some_any.sql | 0 sql/plsql/{examples => more}/select_analytic_view.sql | 0 sql/plsql/{examples => more}/select_cte.sql | 0 sql/plsql/{examples => more}/select_dense_rank.sql | 0 sql/plsql/{examples => more}/select_flashback_query.sql | 0 sql/plsql/{examples => more}/select_hierarchical_query.sql | 0 sql/plsql/{examples => more}/select_time.sql | 0 sql/plsql/{examples => more}/simple02.sql | 0 sql/plsql/{examples => more}/simple03.sql | 0 sql/plsql/{examples => more}/simple04.sql | 0 sql/plsql/{examples => more}/simple05.sql | 0 sql/plsql/{examples => more}/simple09.sql | 0 sql/plsql/{examples => more}/simple12.sql | 0 sql/plsql/{examples => more}/single_statement.sql | 0 sql/plsql/{examples => more}/string01.sql | 0 sql/plsql/{examples => more}/timing.sql | 0 sql/plsql/{examples => more}/timing.sql.tree | 0 sql/plsql/{examples => more}/to_binary_double.sql | 0 sql/plsql/{examples => more}/to_binary_float.sql | 0 sql/plsql/{examples => more}/to_date.sql | 0 sql/plsql/{examples => more}/to_dsinterval.sql | 0 sql/plsql/{examples => more}/to_number.sql | 0 sql/plsql/{examples => more}/to_timestamp.sql | 0 sql/plsql/{examples => more}/to_timestamp_tz.sql | 0 sql/plsql/{examples => more}/to_yminterval.sql | 0 sql/plsql/{examples => more}/unified.sql | 0 sql/plsql/{examples => more}/union01.sql | 0 sql/plsql/{examples => more}/union02.sql | 0 sql/plsql/{examples => more}/union03.sql | 0 sql/plsql/{examples => more}/union04.sql | 0 sql/plsql/{examples => more}/union05.sql | 0 sql/plsql/{examples => more}/union06.sql | 0 sql/plsql/{examples => more}/union07.sql | 0 sql/plsql/{examples => more}/union08.sql | 0 sql/plsql/{examples => more}/union09.sql | 0 sql/plsql/{examples => more}/union10.sql | 0 sql/plsql/{examples => more}/validate_conversion.sql | 0 sql/plsql/{examples => more}/values_clause.sql | 0 sql/plsql/{examples => more}/varray_type_def.sql | 0 sql/plsql/{examples => more}/views.sql | 0 sql/plsql/{examples => more}/whenever_sqlerror.sql | 0 sql/plsql/{examples => more}/whenever_sqlerror.sql.tree | 0 sql/plsql/{examples => more}/xml_function.sql | 0 sql/plsql/{examples => more}/xmltable01.sql | 0 sql/plsql/{examples => more}/xmltable03.sql | 0 307 files changed, 5 insertions(+), 24 deletions(-) delete mode 100644 sql/plsql/examples/create_package.sql.tree delete mode 100644 sql/plsql/examples/hw-examples/alter_operator.sql delete mode 100644 sql/plsql/examples/hw-examples/alter_outline.sql delete mode 100644 sql/plsql/examples/hw-examples/drop_operator.sql delete mode 100644 sql/plsql/examples/hw-examples/keywordasidentifier02.sql delete mode 100644 sql/plsql/examples/hw-examples/lexer01.sql delete mode 100644 sql/plsql/examples/hw-examples/lexer02.sql delete mode 100644 sql/plsql/examples/hw-examples/lexer03.sql delete mode 100644 sql/plsql/examples/hw-examples/lexer04.sql delete mode 100644 sql/plsql/examples/hw-examples/lexer05.sql delete mode 100644 sql/plsql/examples/hw-examples/simple11.sql delete mode 100644 sql/plsql/examples/hw-examples/truncate_table.sql rename sql/plsql/{examples => more}/4357.sql (100%) rename sql/plsql/{examples => more}/administer_key_management.sql (100%) rename sql/plsql/{examples => more}/aggregate_functions.sql (100%) rename sql/plsql/{examples => more}/alter_analytic_view.sql (100%) rename sql/plsql/{examples => more}/alter_audit_policy.sql (100%) rename sql/plsql/{examples => more}/alter_database.sql (100%) rename sql/plsql/{examples => more}/alter_dimension.sql (100%) rename sql/plsql/{examples => more}/alter_diskgroup.sql (100%) rename sql/plsql/{examples => more}/alter_flashback_archive.sql (100%) rename sql/plsql/{examples => more}/alter_inmemory_join_group.sql (100%) rename sql/plsql/{examples => more}/alter_java.sql (100%) rename sql/plsql/{examples => more}/alter_lockdown_profile.sql (100%) rename sql/plsql/{examples => more}/alter_materialized_zonemap.sql (100%) rename sql/plsql/{examples => more}/alter_mv.sql (100%) rename sql/plsql/{examples => more}/alter_mv_log.sql (100%) rename sql/plsql/{examples => more}/alter_pmem_filestore.sql (100%) rename sql/plsql/{examples => more}/alter_resource_cost.sql (100%) rename sql/plsql/{examples => more}/alter_role.sql (100%) rename sql/plsql/{examples => more}/alter_session.sql (100%) rename sql/plsql/{examples => more}/alter_synonym01.sql (100%) rename sql/plsql/{examples => more}/alter_table.sql (100%) rename sql/plsql/{examples => more}/alter_table_inmemory.sql (100%) rename sql/plsql/{examples => more}/alter_table_modify_partition_by_range.sql (100%) rename sql/plsql/{examples => more}/alter_tablespaces.sql (100%) rename sql/plsql/{examples => more}/alter_view.sql (100%) rename sql/plsql/{examples => more}/analytic_query.sql (100%) rename sql/plsql/{examples => more}/analyze.sql (100%) rename sql/plsql/{examples => more}/audit.sql (100%) rename sql/plsql/{examples => more}/bindvar01.sql (100%) rename sql/plsql/{examples => more}/bindvar02.sql (100%) rename sql/plsql/{examples => more}/bindvar03.sql (100%) rename sql/plsql/{examples => more}/bindvar04.sql (100%) rename sql/plsql/{examples => more}/bindvar05.sql (100%) rename sql/plsql/{examples => more}/block01.sql (100%) rename sql/plsql/{examples => more}/block02.sql (100%) rename sql/plsql/{examples => more}/bulk_collect_fetch_clause01.sql (100%) rename sql/plsql/{examples => more}/call.sql (100%) rename sql/plsql/{examples => more}/case_when01.sql (100%) rename sql/plsql/{examples => more}/case_when02.sql (100%) rename sql/plsql/{examples => more}/case_when03.sql (100%) rename sql/plsql/{examples => more}/case_when04.sql (100%) rename sql/plsql/{examples => more}/case_when05.sql (100%) rename sql/plsql/{examples => more}/case_when06.sql (100%) rename sql/plsql/{examples => more}/case_when07.sql (100%) rename sql/plsql/{examples => more}/case_when08.sql (100%) rename sql/plsql/{examples => more}/cast.sql (100%) rename sql/plsql/{examples => more}/cast_multiset01.sql (100%) rename sql/plsql/{examples => more}/cast_multiset02.sql (100%) rename sql/plsql/{examples => more}/cast_multiset03.sql (100%) rename sql/plsql/{examples => more}/cast_multiset05.sql (100%) rename sql/plsql/{examples => more}/cast_multiset06.sql (100%) rename sql/plsql/{examples => more}/cluster.sql (100%) rename sql/plsql/{examples => more}/collection_method_invocation.sql (100%) rename sql/plsql/{examples => more}/columns01.sql (100%) rename sql/plsql/{examples => more}/comment_on.sql (100%) rename sql/plsql/{examples => more}/comments.sql (100%) rename sql/plsql/{examples => more}/commit.sql (100%) rename sql/plsql/{examples => more}/concatenation-double_asterisk.sql (100%) rename sql/plsql/{examples => more}/concatenation-mod.sql (100%) rename sql/plsql/{examples => more}/condition01.sql (100%) rename sql/plsql/{examples => more}/condition02.sql (100%) rename sql/plsql/{examples => more}/condition03.sql (100%) rename sql/plsql/{examples => more}/condition04.sql (100%) rename sql/plsql/{examples => more}/condition05.sql (100%) rename sql/plsql/{examples => more}/condition06.sql (100%) rename sql/plsql/{examples => more}/condition07.sql (100%) rename sql/plsql/{examples => more}/condition08.sql (100%) rename sql/plsql/{examples => more}/condition09.sql (100%) rename sql/plsql/{examples => more}/condition10.sql (100%) rename sql/plsql/{examples => more}/condition11.sql (100%) rename sql/plsql/{examples => more}/condition12.sql (100%) rename sql/plsql/{examples => more}/condition15.sql (100%) rename sql/plsql/{examples => more}/connect_by01.sql (100%) rename sql/plsql/{examples => more}/connect_by02.sql (100%) rename sql/plsql/{examples => more}/connect_by03.sql (100%) rename sql/plsql/{examples => more}/connect_by04.sql (100%) rename sql/plsql/{examples => more}/connect_by05.sql (100%) rename sql/plsql/{examples => more}/create_analytic_view.sql (100%) rename sql/plsql/{examples => more}/create_attribute_dimension.sql (100%) rename sql/plsql/{examples => more}/create_audit_policy.sql (100%) rename sql/plsql/{examples => more}/create_controlfile.sql (100%) rename sql/plsql/{examples => more}/create_database.sql (100%) rename sql/plsql/{examples => more}/create_dimension.sql (100%) rename sql/plsql/{examples => more}/create_directory.sql (100%) rename sql/plsql/{examples => more}/create_flashback_archive.sql (100%) rename sql/plsql/{examples => more}/create_function01.sql (100%) rename sql/plsql/{examples => more}/create_function02.sql (100%) rename sql/plsql/{examples => more}/create_function04.sql (100%) rename sql/plsql/{examples => more}/create_function05.sql (100%) rename sql/plsql/{examples => more}/create_function06.sql (100%) rename sql/plsql/{examples => more}/create_hierarchy.sql (100%) rename sql/plsql/{examples => more}/create_index.sql (100%) rename sql/plsql/{examples => more}/create_inmemory_join_group.sql (100%) rename sql/plsql/{examples => more}/create_java.sql (100%) rename sql/plsql/{examples => more}/create_library.sql (100%) rename sql/plsql/{examples => more}/create_materialized_zonemap.sql (100%) rename sql/plsql/{examples => more}/create_operator.sql (100%) rename sql/plsql/{examples => more}/create_outline.sql (100%) rename sql/plsql/{examples => more}/create_package01.sql (100%) rename sql/plsql/{examples => more}/create_package02.sql (100%) rename sql/plsql/{examples => more}/create_package03.sql (100%) rename sql/plsql/{examples => more}/create_package04.sql (100%) rename sql/plsql/{examples => more}/create_package05.sql (100%) rename sql/plsql/{examples => more}/create_pmem_filestore.sql (100%) rename sql/plsql/{examples => more}/create_procedure01.sql (100%) rename sql/plsql/{examples => more}/create_procedure01.sql.tree (100%) rename sql/plsql/{examples => more}/create_procedure02.sql (100%) rename sql/plsql/{examples => more}/create_procedure03.sql (100%) rename sql/plsql/{examples => more}/create_profile.sql (100%) rename sql/plsql/{examples => more}/create_restore_point.sql (100%) rename sql/plsql/{examples => more}/create_role.sql (100%) rename sql/plsql/{examples => more}/create_rollback_segment.sql (100%) rename sql/plsql/{examples => more}/create_spfile.sql (100%) rename sql/plsql/{examples => more}/create_table.sql (100%) rename sql/plsql/{examples => more}/create_tablespace.sql (100%) rename sql/plsql/{examples => more}/create_tablespace_set.sql (100%) rename sql/plsql/{examples => more}/create_trigger01.sql (100%) rename sql/plsql/{examples => more}/create_trigger02.sql (100%) rename sql/plsql/{examples => more}/create_type.sql (100%) rename sql/plsql/{examples => more}/create_view.sql (100%) rename sql/plsql/{examples => more}/ctas.sql (100%) rename sql/plsql/{examples => more}/datetime03.sql (100%) rename sql/plsql/{examples => more}/datetime04.sql (100%) rename sql/plsql/{examples => more}/dblink.sql (100%) rename sql/plsql/{examples => more}/dblink01.sql (100%) rename sql/plsql/{examples => more}/directory.sql (100%) rename sql/plsql/{examples => more}/drop_materialized_view.sql (100%) rename sql/plsql/{examples => more}/drop_materialized_view.sql.tree (100%) rename sql/plsql/{examples => more}/drop_synonym01.sql (100%) rename sql/plsql/{examples => more}/drop_tablespace.sql (100%) rename sql/plsql/{examples => more}/editionable_function.sql (100%) rename sql/plsql/{examples => more}/editionable_packagebody_function.sql (100%) rename sql/plsql/{examples => more}/editionable_packagespec_function.sql (100%) rename sql/plsql/{examples => more}/explain01.sql (100%) rename sql/plsql/{examples => more}/fetch_clause01.sql (100%) rename sql/plsql/{examples => more}/fetch_clause02.sql (100%) rename sql/plsql/{examples => more}/fetch_clause03.sql (100%) rename sql/plsql/{examples => more}/fetch_clause04.sql (100%) rename sql/plsql/{examples => more}/fetch_statement.sql (100%) rename sql/plsql/{examples => more}/for_update01.sql (100%) rename sql/plsql/{examples => more}/for_update02.sql (100%) rename sql/plsql/{examples => more}/for_update03.sql (100%) rename sql/plsql/{examples => more}/for_update04.sql (100%) rename sql/plsql/{examples => more}/for_update05.sql (100%) rename sql/plsql/{examples => more}/for_update06.sql (100%) rename sql/plsql/{examples => more}/for_update07.sql (100%) rename sql/plsql/{examples => more}/for_update08.sql (100%) rename sql/plsql/{examples => more}/forall_bulk_rowcount.sql (100%) rename sql/plsql/{examples => more}/forall_indices_of.sql (100%) rename sql/plsql/{examples => more}/forall_statement_and_exception_handling.sql (100%) rename sql/plsql/{examples => more}/function03.sql (100%) rename sql/plsql/{examples => more}/function05.sql (100%) rename sql/plsql/{examples => more}/function07.sql (100%) rename sql/plsql/{examples => more}/general_element_part.sql (100%) rename sql/plsql/{examples => more}/groupby01.sql (100%) rename sql/plsql/{examples => more}/groupby02.sql (100%) rename sql/plsql/{examples => more}/groupby03.sql (100%) rename sql/plsql/{examples => more}/groupby04.sql (100%) rename sql/plsql/{examples => more}/groupby05.sql (100%) rename sql/plsql/{examples => more}/groupby06.sql (100%) rename sql/plsql/{examples => more}/groupby07.sql (100%) rename sql/plsql/{examples => more}/index.sql (100%) rename sql/plsql/{examples => more}/insert_statement.sql (100%) rename sql/plsql/{examples => more}/interval03.sql (100%) rename sql/plsql/{examples => more}/join01.sql (100%) rename sql/plsql/{examples => more}/join02.sql (100%) rename sql/plsql/{examples => more}/join03.sql (100%) rename sql/plsql/{examples => more}/join04.sql (100%) rename sql/plsql/{examples => more}/join05.sql (100%) rename sql/plsql/{examples => more}/join06.sql (100%) rename sql/plsql/{examples => more}/join07.sql (100%) rename sql/plsql/{examples => more}/join08.sql (100%) rename sql/plsql/{examples => more}/join09.sql (100%) rename sql/plsql/{examples => more}/join10.sql (100%) rename sql/plsql/{examples => more}/join13.sql (100%) rename sql/plsql/{examples => more}/join14.sql (100%) rename sql/plsql/{examples => more}/join15.sql (100%) rename sql/plsql/{examples => more}/join16.sql (100%) rename sql/plsql/{examples => more}/join17.sql (100%) rename sql/plsql/{examples => more}/join18.sql (100%) rename sql/plsql/{examples => more}/join22.sql (100%) rename sql/plsql/{examples => more}/join23.sql (100%) rename sql/plsql/{examples => more}/json_query.sql (100%) rename sql/plsql/{examples => more}/json_query.sql.tree (100%) rename sql/plsql/{examples => more}/json_sql.sql (100%) rename sql/plsql/{examples => more}/keywordasidentifier03.sql (100%) rename sql/plsql/{examples => more}/keywordasidentifier04.sql (100%) rename sql/plsql/{examples => more}/keywordasidentifier06.sql (100%) rename sql/plsql/{examples => more}/like01.sql (100%) rename sql/plsql/{ => more}/long-running/aggregate01.sql (100%) rename sql/plsql/{ => more}/long-running/cast_multiset07.sql (100%) rename sql/plsql/{ => more}/long-running/datetime02.sql (100%) rename sql/plsql/{ => more}/long-running/order_by07.sql (100%) rename sql/plsql/{ => more}/long-running/query_factoring07.sql (100%) rename sql/plsql/{examples => more}/materialized_views.sql (100%) rename sql/plsql/{examples => more}/max_001.sql (100%) rename sql/plsql/{examples => more}/merge01.sql (100%) rename sql/plsql/{examples => more}/merge02.sql (100%) rename sql/plsql/{examples => more}/merge03.sql (100%) rename sql/plsql/{examples => more}/merge04.sql (100%) rename sql/plsql/{examples => more}/merge05.sql (100%) rename sql/plsql/{examples => more}/model_clause01.sql (100%) rename sql/plsql/{examples => more}/model_clause02.sql (100%) rename sql/plsql/{examples => more}/model_clause03.sql (100%) rename sql/plsql/{examples => more}/model_clause04.sql (100%) rename sql/plsql/{examples => more}/model_clause05.sql (100%) rename sql/plsql/{examples => more}/multiset_operators.sql (100%) rename sql/plsql/{examples => more}/noaudit_statement.sql (100%) rename sql/plsql/{examples => more}/not_member_of.sql (100%) rename sql/plsql/{examples => more}/numbers01.sql (100%) rename sql/plsql/{examples => more}/nvl_001.sql (100%) rename sql/plsql/{examples => more}/object_access01.sql (100%) rename sql/plsql/{examples => more}/object_access_expressions.sql (100%) rename sql/plsql/{examples => more}/package_body.sql (100%) rename sql/plsql/{examples => more}/package_body.sql.tree (100%) rename sql/plsql/{examples => more}/packagebody_function.sql (100%) rename sql/plsql/{examples => more}/packagespec_function.sql (100%) rename sql/plsql/{examples => more}/partitioned_tables.sql (100%) rename sql/plsql/{examples => more}/pivot01.sql (100%) rename sql/plsql/{examples => more}/pivot02.sql (100%) rename sql/plsql/{examples => more}/pivot03.sql (100%) rename sql/plsql/{examples => more}/pivot04.sql (100%) rename sql/plsql/{examples => more}/pivot05.sql (100%) rename sql/plsql/{examples => more}/pivot06.sql (100%) rename sql/plsql/{examples => more}/pivot07.sql (100%) rename sql/plsql/{examples => more}/pivot08.sql (100%) rename sql/plsql/{examples => more}/pivot09.sql (100%) rename sql/plsql/{examples => more}/pivot10.sql (100%) rename sql/plsql/{examples => more}/pivot11.sql (100%) rename sql/plsql/{examples => more}/pivot12.sql (100%) rename sql/plsql/{examples => more}/pivot13.sql (100%) rename sql/plsql/{examples => more}/purge_statement.sql (100%) rename sql/plsql/{examples => more}/query_factoring01.sql (100%) rename sql/plsql/{examples => more}/query_factoring02.sql (100%) rename sql/plsql/{examples => more}/query_factoring03.sql (100%) rename sql/plsql/{examples => more}/query_factoring04.sql (100%) rename sql/plsql/{examples => more}/query_factoring05.sql (100%) rename sql/plsql/{examples => more}/query_factoring06.sql (100%) rename sql/plsql/{examples => more}/query_factoring08.sql (100%) rename sql/plsql/{examples => more}/query_factoring09.sql (100%) rename sql/plsql/{examples => more}/query_factoring10.sql (100%) rename sql/plsql/{examples => more}/query_factoring11.sql (100%) rename sql/plsql/{examples => more}/quntitative_expression.sql (100%) rename sql/plsql/{examples => more}/revoke_statement.sql (100%) rename sql/plsql/{examples => more}/round_001.sql (100%) rename sql/plsql/{examples => more}/round_decode_001.sql (100%) rename sql/plsql/{examples => more}/row_number_001.sql (100%) rename sql/plsql/{examples => more}/sample01.sql (100%) rename sql/plsql/{examples => more}/select_all_some_any.sql (100%) rename sql/plsql/{examples => more}/select_analytic_view.sql (100%) rename sql/plsql/{examples => more}/select_cte.sql (100%) rename sql/plsql/{examples => more}/select_dense_rank.sql (100%) rename sql/plsql/{examples => more}/select_flashback_query.sql (100%) rename sql/plsql/{examples => more}/select_hierarchical_query.sql (100%) rename sql/plsql/{examples => more}/select_time.sql (100%) rename sql/plsql/{examples => more}/simple02.sql (100%) rename sql/plsql/{examples => more}/simple03.sql (100%) rename sql/plsql/{examples => more}/simple04.sql (100%) rename sql/plsql/{examples => more}/simple05.sql (100%) rename sql/plsql/{examples => more}/simple09.sql (100%) rename sql/plsql/{examples => more}/simple12.sql (100%) rename sql/plsql/{examples => more}/single_statement.sql (100%) rename sql/plsql/{examples => more}/string01.sql (100%) rename sql/plsql/{examples => more}/timing.sql (100%) rename sql/plsql/{examples => more}/timing.sql.tree (100%) rename sql/plsql/{examples => more}/to_binary_double.sql (100%) rename sql/plsql/{examples => more}/to_binary_float.sql (100%) rename sql/plsql/{examples => more}/to_date.sql (100%) rename sql/plsql/{examples => more}/to_dsinterval.sql (100%) rename sql/plsql/{examples => more}/to_number.sql (100%) rename sql/plsql/{examples => more}/to_timestamp.sql (100%) rename sql/plsql/{examples => more}/to_timestamp_tz.sql (100%) rename sql/plsql/{examples => more}/to_yminterval.sql (100%) rename sql/plsql/{examples => more}/unified.sql (100%) rename sql/plsql/{examples => more}/union01.sql (100%) rename sql/plsql/{examples => more}/union02.sql (100%) rename sql/plsql/{examples => more}/union03.sql (100%) rename sql/plsql/{examples => more}/union04.sql (100%) rename sql/plsql/{examples => more}/union05.sql (100%) rename sql/plsql/{examples => more}/union06.sql (100%) rename sql/plsql/{examples => more}/union07.sql (100%) rename sql/plsql/{examples => more}/union08.sql (100%) rename sql/plsql/{examples => more}/union09.sql (100%) rename sql/plsql/{examples => more}/union10.sql (100%) rename sql/plsql/{examples => more}/validate_conversion.sql (100%) rename sql/plsql/{examples => more}/values_clause.sql (100%) rename sql/plsql/{examples => more}/varray_type_def.sql (100%) rename sql/plsql/{examples => more}/views.sql (100%) rename sql/plsql/{examples => more}/whenever_sqlerror.sql (100%) rename sql/plsql/{examples => more}/whenever_sqlerror.sql.tree (100%) rename sql/plsql/{examples => more}/xml_function.sql (100%) rename sql/plsql/{examples => more}/xmltable01.sql (100%) rename sql/plsql/{examples => more}/xmltable03.sql (100%) diff --git a/sql/plsql/desc.xml b/sql/plsql/desc.xml index 8540e66292..0bf8c091af 100644 --- a/sql/plsql/desc.xml +++ b/sql/plsql/desc.xml @@ -3,11 +3,12 @@ ^4.12.0 Antlr4ng;Cpp;CSharp;Dart;Go;Java;JavaScript;Python3;TypeScript - Antlr4ng;Cpp;CSharp;Dart;Go;Java + Antlr4ng;Cpp;CSharp;Dart;Go;Java;JavaScript;Python3;TypeScript examples/**/*.sql - JavaScript;Python3;TypeScript - examples/hw-examples/**/*.sql + 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/hw-examples/alter_operator.sql b/sql/plsql/examples/hw-examples/alter_operator.sql deleted file mode 100644 index 2176427c5a..0000000000 --- a/sql/plsql/examples/hw-examples/alter_operator.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER OPERATOR eq_op COMPILE; diff --git a/sql/plsql/examples/hw-examples/alter_outline.sql b/sql/plsql/examples/hw-examples/alter_outline.sql deleted file mode 100644 index 67d6aa7c26..0000000000 --- a/sql/plsql/examples/hw-examples/alter_outline.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER OUTLINE salaries REBUILD; diff --git a/sql/plsql/examples/hw-examples/drop_operator.sql b/sql/plsql/examples/hw-examples/drop_operator.sql deleted file mode 100644 index 952e7c3a41..0000000000 --- a/sql/plsql/examples/hw-examples/drop_operator.sql +++ /dev/null @@ -1 +0,0 @@ -DROP OPERATOR eq_op; diff --git a/sql/plsql/examples/hw-examples/keywordasidentifier02.sql b/sql/plsql/examples/hw-examples/keywordasidentifier02.sql deleted file mode 100644 index a2b6c0ae73..0000000000 --- a/sql/plsql/examples/hw-examples/keywordasidentifier02.sql +++ /dev/null @@ -1 +0,0 @@ -select m.model from model diff --git a/sql/plsql/examples/hw-examples/lexer01.sql b/sql/plsql/examples/hw-examples/lexer01.sql deleted file mode 100644 index f9eae8c007..0000000000 --- a/sql/plsql/examples/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/examples/hw-examples/lexer02.sql b/sql/plsql/examples/hw-examples/lexer02.sql deleted file mode 100644 index 15aaf848a4..0000000000 --- a/sql/plsql/examples/hw-examples/lexer02.sql +++ /dev/null @@ -1,2 +0,0 @@ -select 'A' | | 'B' from dual - diff --git a/sql/plsql/examples/hw-examples/lexer03.sql b/sql/plsql/examples/hw-examples/lexer03.sql deleted file mode 100644 index 488fba03a1..0000000000 --- a/sql/plsql/examples/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/examples/hw-examples/lexer04.sql b/sql/plsql/examples/hw-examples/lexer04.sql deleted file mode 100644 index c3931e035d..0000000000 --- a/sql/plsql/examples/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/examples/hw-examples/lexer05.sql b/sql/plsql/examples/hw-examples/lexer05.sql deleted file mode 100644 index 8dcc674cfa..0000000000 --- a/sql/plsql/examples/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/examples/hw-examples/simple11.sql b/sql/plsql/examples/hw-examples/simple11.sql deleted file mode 100644 index ed2205330f..0000000000 --- a/sql/plsql/examples/hw-examples/simple11.sql +++ /dev/null @@ -1 +0,0 @@ -select a.* from dual diff --git a/sql/plsql/examples/hw-examples/truncate_table.sql b/sql/plsql/examples/hw-examples/truncate_table.sql deleted file mode 100644 index 3d7f0b9722..0000000000 --- a/sql/plsql/examples/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/lexer02.sql b/sql/plsql/examples/lexer02.sql index bd9dab4130..15aaf848a4 100644 --- a/sql/plsql/examples/lexer02.sql +++ b/sql/plsql/examples/lexer02.sql @@ -1,7 +1,2 @@ -select 'A' | | 'B' from dual; +select 'A' | | 'B' from dual -select a ä, b Ḅ from dual; - -CREATE OR REPLACE PACKAGE ACCESS_SECURITY AS --- omitted -END; 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 From 6768ac7ee5c461b309022f492f1768a564aed47a Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Fri, 20 Dec 2024 06:16:51 -0500 Subject: [PATCH 15/21] Update lexer02.sql.tree --- sql/plsql/examples/lexer02.sql.tree | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/plsql/examples/lexer02.sql.tree b/sql/plsql/examples/lexer02.sql.tree index c8e8501019..a6a6465f9a 100644 --- a/sql/plsql/examples/lexer02.sql.tree +++ b/sql/plsql/examples/lexer02.sql.tree @@ -1 +1 @@ -(sql_script (unit_statement (data_manipulation_language_statements (select_statement (select_only_statement (subquery (subquery_basic_elements (query_block select (selected_list (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'A')))))) | | (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'B'))))))))))))))) (from_clause from (table_ref_list (table_ref (table_ref_aux (table_ref_aux_internal (dml_table_expression_clause (tableview_name (identifier (id_expression (regular_id dual))))))))))))))))) ; (unit_statement (data_manipulation_language_statements (select_statement (select_only_statement (subquery (subquery_basic_elements (query_block select (selected_list (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (model_expression (unary_expression (atom (general_element (general_element_part (id_expression (regular_id a)))))))))))))) (column_alias (identifier (id_expression (regular_id ä))))) , (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (model_expression (unary_expression (atom (general_element (general_element_part (id_expression (regular_id b)))))))))))))) (column_alias (identifier (id_expression (regular_id Ḅ)))))) (from_clause from (table_ref_list (table_ref (table_ref_aux (table_ref_aux_internal (dml_table_expression_clause (tableview_name (identifier (id_expression (regular_id dual))))))))))))))))) ; (unit_statement (create_package CREATE OR REPLACE PACKAGE (package_name (identifier (id_expression (regular_id ACCESS_SECURITY)))) AS END)) ; ) \ No newline at end of file +(sql_script (unit_statement (data_manipulation_language_statements (select_statement (select_only_statement (subquery (subquery_basic_elements (query_block select (selected_list (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'A')))))) | | (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'B'))))))))))))))) (from_clause from (table_ref_list (table_ref (table_ref_aux (table_ref_aux_internal (dml_table_expression_clause (tableview_name (identifier (id_expression (regular_id dual))))))))))))))))) ) \ No newline at end of file From c242e145ac7bf97f8a1251e1ced8c18a463d2407 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Fri, 20 Dec 2024 06:35:38 -0500 Subject: [PATCH 16/21] Somewhere on the way, git seems to have removed Unicode from a test. Re-add and remasster. --- sql/plsql/examples/lexer02.sql | 5 +++++ sql/plsql/examples/lexer02.sql.tree | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sql/plsql/examples/lexer02.sql b/sql/plsql/examples/lexer02.sql index 15aaf848a4..2b447598d1 100644 --- a/sql/plsql/examples/lexer02.sql +++ b/sql/plsql/examples/lexer02.sql @@ -1,2 +1,7 @@ select 'A' | | 'B' from dual +select a ä, b Ḅ from dual; + +CREATE OR REPLACE PACKAGE ACCESS_SECURITY AS +-- omitted +END; \ No newline at end of file diff --git a/sql/plsql/examples/lexer02.sql.tree b/sql/plsql/examples/lexer02.sql.tree index a6a6465f9a..d075406891 100644 --- a/sql/plsql/examples/lexer02.sql.tree +++ b/sql/plsql/examples/lexer02.sql.tree @@ -1 +1 @@ -(sql_script (unit_statement (data_manipulation_language_statements (select_statement (select_only_statement (subquery (subquery_basic_elements (query_block select (selected_list (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'A')))))) | | (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'B'))))))))))))))) (from_clause from (table_ref_list (table_ref (table_ref_aux (table_ref_aux_internal (dml_table_expression_clause (tableview_name (identifier (id_expression (regular_id dual))))))))))))))))) ) \ No newline at end of file +(sql_script (unit_statement (data_manipulation_language_statements (select_statement (select_only_statement (subquery (subquery_basic_elements (query_block select (selected_list (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'A')))))) | | (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'B'))))))))))))))) (from_clause from (table_ref_list (table_ref (table_ref_aux (table_ref_aux_internal (dml_table_expression_clause (tableview_name (identifier (id_expression (regular_id dual))))))))))))))))) select a ä , b Ḅ from dual ; CREATE OR REPLACE PACKAGE ACCESS_SECURITY AS END ;) \ No newline at end of file From f4898e17a930fca286299065799fc569c896c641 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Fri, 20 Dec 2024 06:50:28 -0500 Subject: [PATCH 17/21] Fix lexer02.sql and remaster. --- sql/plsql/examples/lexer02.sql | 2 +- sql/plsql/examples/lexer02.sql.tree | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/plsql/examples/lexer02.sql b/sql/plsql/examples/lexer02.sql index 2b447598d1..b81d841921 100644 --- a/sql/plsql/examples/lexer02.sql +++ b/sql/plsql/examples/lexer02.sql @@ -1,4 +1,4 @@ -select 'A' | | 'B' from dual +select 'A' | | 'B' from dual; select a ä, b Ḅ from dual; diff --git a/sql/plsql/examples/lexer02.sql.tree b/sql/plsql/examples/lexer02.sql.tree index d075406891..c8e8501019 100644 --- a/sql/plsql/examples/lexer02.sql.tree +++ b/sql/plsql/examples/lexer02.sql.tree @@ -1 +1 @@ -(sql_script (unit_statement (data_manipulation_language_statements (select_statement (select_only_statement (subquery (subquery_basic_elements (query_block select (selected_list (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'A')))))) | | (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'B'))))))))))))))) (from_clause from (table_ref_list (table_ref (table_ref_aux (table_ref_aux_internal (dml_table_expression_clause (tableview_name (identifier (id_expression (regular_id dual))))))))))))))))) select a ä , b Ḅ from dual ; CREATE OR REPLACE PACKAGE ACCESS_SECURITY AS END ;) \ No newline at end of file +(sql_script (unit_statement (data_manipulation_language_statements (select_statement (select_only_statement (subquery (subquery_basic_elements (query_block select (selected_list (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'A')))))) | | (concatenation (model_expression (unary_expression (atom (constant (quoted_string 'B'))))))))))))))) (from_clause from (table_ref_list (table_ref (table_ref_aux (table_ref_aux_internal (dml_table_expression_clause (tableview_name (identifier (id_expression (regular_id dual))))))))))))))))) ; (unit_statement (data_manipulation_language_statements (select_statement (select_only_statement (subquery (subquery_basic_elements (query_block select (selected_list (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (model_expression (unary_expression (atom (general_element (general_element_part (id_expression (regular_id a)))))))))))))) (column_alias (identifier (id_expression (regular_id ä))))) , (select_list_elements (expression (logical_expression (unary_logical_expression (multiset_expression (relational_expression (compound_expression (concatenation (model_expression (unary_expression (atom (general_element (general_element_part (id_expression (regular_id b)))))))))))))) (column_alias (identifier (id_expression (regular_id Ḅ)))))) (from_clause from (table_ref_list (table_ref (table_ref_aux (table_ref_aux_internal (dml_table_expression_clause (tableview_name (identifier (id_expression (regular_id dual))))))))))))))))) ; (unit_statement (create_package CREATE OR REPLACE PACKAGE (package_name (identifier (id_expression (regular_id ACCESS_SECURITY)))) AS END)) ; ) \ No newline at end of file From 63877b5615eaec71985f39d828197f726919bf55 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Fri, 20 Dec 2024 07:24:20 -0500 Subject: [PATCH 18/21] Update readme and add perf data. --- sql/plsql/README.md | 5 ++ sql/plsql/data.zip | Bin 0 -> 35036 bytes sql/plsql/gr.sh | 60 +++++++++++++ sql/plsql/te.sh | 10 +++ sql/plsql/times.svg | 200 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 275 insertions(+) create mode 100644 sql/plsql/data.zip create mode 100644 sql/plsql/gr.sh create mode 100644 sql/plsql/te.sh create mode 100644 sql/plsql/times.svg diff --git a/sql/plsql/README.md b/sql/plsql/README.md index 6dc69c1b57..559ba76f4a 100644 --- a/sql/plsql/README.md +++ b/sql/plsql/README.md @@ -19,3 +19,8 @@ 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 + diff --git a/sql/plsql/data.zip b/sql/plsql/data.zip new file mode 100644 index 0000000000000000000000000000000000000000..bc1cb6a67a678c66e02d8369c7e54ff97e8fb804 GIT binary patch literal 35036 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 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/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 + + + + From 27563181a1419d4f8fbcf5aa6b924e06e83a23ab Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Sat, 21 Dec 2024 09:34:32 -0500 Subject: [PATCH 19/21] Update .trgen-ignore. Update readme. For ignore file, we add both examples directories so that either test doesn't copy test files. --- sql/plsql/.trgen-ignore | 2 +- sql/plsql/README.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) 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/README.md b/sql/plsql/README.md index 559ba76f4a..2a49ac926e 100644 --- a/sql/plsql/README.md +++ b/sql/plsql/README.md @@ -24,3 +24,4 @@ User's Guide and Reference [html](https://docs.oracle.com/en/database/oracle/ora ## Performance +[data.zip](/grammars-v4/sql/plsql/data.zip) From 920a3fcaebf0ce756eb4ac3a147b58feb2ca1f93 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Sat, 21 Dec 2024 09:36:50 -0500 Subject: [PATCH 20/21] Update README.md --- sql/plsql/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sql/plsql/README.md b/sql/plsql/README.md index 2a49ac926e..bbd00fdcd0 100644 --- a/sql/plsql/README.md +++ b/sql/plsql/README.md @@ -24,4 +24,6 @@ User's Guide and Reference [html](https://docs.oracle.com/en/database/oracle/ora ## Performance -[data.zip](/grammars-v4/sql/plsql/data.zip) +[data.zip](/sql/plsql/data.zip) +[te.sh](/sql/plsql/te.sh) +[gr.sh](/sql/plsql/gr.sh) From 9c488556351cd50dd52a6ac04337c7e080ec3f52 Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Sat, 21 Dec 2024 09:39:25 -0500 Subject: [PATCH 21/21] Update README.md --- sql/plsql/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/plsql/README.md b/sql/plsql/README.md index bbd00fdcd0..a3ce6e08ee 100644 --- a/sql/plsql/README.md +++ b/sql/plsql/README.md @@ -24,6 +24,6 @@ User's Guide and Reference [html](https://docs.oracle.com/en/database/oracle/ora ## Performance -[data.zip](/sql/plsql/data.zip) -[te.sh](/sql/plsql/te.sh) -[gr.sh](/sql/plsql/gr.sh) +data.zip +te.sh +gr.sh